mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-12 03:35:27 +02:00
Compare commits
No commits in common. "58875fd85571043d53ea4789998ade8fe9a96771" and "a58aa9cd199495badd5e73652997197ba687cbbe" have entirely different histories.
58875fd855
...
a58aa9cd19
2
Makefile
2
Makefile
|
@ -39,7 +39,7 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_action_list.o \
|
|||
swad_call_for_exam_database.o swad_center.o swad_center_config.o \
|
||||
swad_center_database.o swad_chat.o swad_chat_database.o \
|
||||
swad_closed_open.o swad_config.o swad_connected.o \
|
||||
swad_connected_database.o swad_cookie.o \
|
||||
swad_connected_database.o swad_constant.o swad_cookie.o \
|
||||
swad_cookie_database.o swad_country.o swad_country_config.o \
|
||||
swad_country_database.o swad_course.o swad_course_config.o \
|
||||
swad_course_database.o swad_cryptography.o \
|
||||
|
|
26
swad_HTML.c
26
swad_HTML.c
|
@ -35,22 +35,6 @@
|
|||
#include "swad_global.h"
|
||||
#include "swad_HTML.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Public constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
const char *HTM_DisabledTxt[Cns_NUM_DISABLED_ENABLED] =
|
||||
{
|
||||
[Cns_DISABLED] = " disabled=\"disabled\"",
|
||||
[Cns_ENABLED ] = "",
|
||||
};
|
||||
|
||||
const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED] =
|
||||
{
|
||||
[Cns_UNCHECKED] = "",
|
||||
[Cns_CHECKED ] = " checked=\"checked\"",
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Private constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1388,8 +1372,7 @@ void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder,
|
|||
}
|
||||
|
||||
void HTM_INPUT_LONG (const char *Name,long Min,long Max,long Value,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,bool Disabled,
|
||||
const char *fmt,...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -1398,7 +1381,7 @@ void HTM_INPUT_LONG (const char *Name,long Min,long Max,long Value,
|
|||
|
||||
HTM_TxtF ("<input type=\"number\" name=\"%s\" min=\"%ld\" max=\"%ld\" value=\"%ld\"",
|
||||
Name,Min,Max,Value);
|
||||
if (DisabledOrEnabled == Cns_DISABLED)
|
||||
if (Disabled)
|
||||
HTM_Txt (" disabled=\"disabled\"");
|
||||
|
||||
if (fmt)
|
||||
|
@ -1427,8 +1410,7 @@ void HTM_INPUT_LONG (const char *Name,long Min,long Max,long Value,
|
|||
void HTM_INPUT_FLOAT (const char *Name,double Min,double Max,
|
||||
double Step, // Use 0 for "any"
|
||||
double Value,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,bool Disabled,
|
||||
const char *fmt,...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -1446,7 +1428,7 @@ void HTM_INPUT_FLOAT (const char *Name,double Min,double Max,
|
|||
HTM_TxtF (" step=\"%.15lg\"",Step);
|
||||
HTM_TxtF (" value=\"%.15lg\"",Value);
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
if (DisabledOrEnabled == Cns_DISABLED)
|
||||
if (Disabled)
|
||||
HTM_Txt (" disabled=\"disabled\"");
|
||||
|
||||
if (fmt)
|
||||
|
|
|
@ -29,8 +29,6 @@
|
|||
|
||||
#include <stdbool.h> // For boolean type
|
||||
|
||||
#include "swad_constant.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************************* Public types ******************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -187,14 +185,12 @@ void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder,
|
|||
const char *AutoComplete,HTM_Required_t Required,
|
||||
const char *fmt,...);
|
||||
void HTM_INPUT_LONG (const char *Name,long Min,long Max,long Value,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,bool Disabled,
|
||||
const char *fmt,...);
|
||||
void HTM_INPUT_FLOAT (const char *Name,double Min,double Max,
|
||||
double Step, // Use 0 for "any"
|
||||
double Value,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,bool Disabled,
|
||||
const char *fmt,...);
|
||||
void HTM_INPUT_RADIO (const char *Name,HTM_SubmitOnClick_t SubmitOnClick,
|
||||
const char *fmt,...);
|
||||
|
|
|
@ -356,7 +356,7 @@ void Ann_ShowFormAnnouncement (void)
|
|||
1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH,
|
||||
Cns_DISABLED,
|
||||
false,
|
||||
HTM_DONT_SUBMIT_ON_CHANGE);
|
||||
HTM_TD_End ();
|
||||
HTM_TR_End ();
|
||||
|
|
|
@ -1303,10 +1303,8 @@ void Asg_ReqCreatOrEditAsg (void)
|
|||
|
||||
static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Groups;
|
||||
unsigned NumGrpTyp;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
@ -1328,14 +1326,13 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
|||
HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("asg_groups",
|
||||
"AsgCod",
|
||||
AsgCod) ? Cns_UNCHECKED :
|
||||
Cns_CHECKED;
|
||||
HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"WholeCrs\" value=\"Y\"%s"
|
||||
" onclick=\"uncheckChildren(this,'GrpCods')\"",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Grp_DB_CheckIfAssociatedToGrps ("asg_groups",
|
||||
"AsgCod",
|
||||
AsgCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
Grp_WriteTheWholeCourse ();
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -159,7 +159,7 @@ static void Att_ListUsrsAttendanceTable (struct Att_Events *Events,
|
|||
static void Att_WriteTableHeadSeveralAttEvents (struct Att_Events *Events);
|
||||
static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
||||
unsigned NumUsr,struct Usr_Data *UsrDat);
|
||||
static void Att_PutCheckOrCross (Cns_UncheckedOrChecked_t UncheckedOrChecked);
|
||||
static void Att_PutCheckOrCross (bool Present);
|
||||
static void Att_ListStdsWithAttEventsDetails (struct Att_Events *Events,
|
||||
unsigned NumUsrsInList,
|
||||
long *LstSelectedUsrCods);
|
||||
|
@ -1073,10 +1073,8 @@ void Att_ReqCreatOrEditEvent (void)
|
|||
|
||||
static void Att_ShowLstGrpsToEditEvent (long AttCod)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Groups;
|
||||
unsigned NumGrpTyp;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
@ -1099,14 +1097,13 @@ static void Att_ShowLstGrpsToEditEvent (long AttCod)
|
|||
HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("att_groups",
|
||||
"AttCod",
|
||||
AttCod) ? Cns_UNCHECKED :
|
||||
Cns_CHECKED;
|
||||
HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"WholeCrs\" value=\"Y\"%s"
|
||||
" onclick=\"uncheckChildren(this,'GrpCods')\"",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Grp_DB_CheckIfAssociatedToGrps ("att_groups",
|
||||
"AttCod",
|
||||
AttCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
Grp_WriteTheWholeCourse ();
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -1650,7 +1647,6 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
struct Usr_Data *UsrDat,
|
||||
struct Att_Event *Event)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
static const char *ClassPhoto[PhoSha_NUM_SHAPES] =
|
||||
{
|
||||
[PhoSha_SHAPE_CIRCLE ] = "PHOTOC45x60",
|
||||
|
@ -1659,7 +1655,6 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
[PhoSha_SHAPE_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
bool Present;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
char CommentStd[Cns_MAX_BYTES_TEXT + 1];
|
||||
char CommentTch[Cns_MAX_BYTES_TEXT + 1];
|
||||
Usr_Can_t ICanChangeStdAttendance;
|
||||
|
@ -1697,8 +1692,6 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
|
||||
/***** Check if this student is already present in the current event *****/
|
||||
Present = Att_CheckIfUsrIsPresentInEventAndGetComments (Event->AttCod,UsrDat->UsrCod,CommentStd,CommentTch);
|
||||
UncheckedOrChecked = Present ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
|
||||
/***** Begin table row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1706,7 +1699,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
/***** Icon to show if the user is already present *****/
|
||||
HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ());
|
||||
HTM_LABEL_Begin ("for=\"Std%u\"",NumUsr);
|
||||
Att_PutCheckOrCross (UncheckedOrChecked);
|
||||
Att_PutCheckOrCross (Present);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -1715,9 +1708,9 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
HTM_INPUT_CHECKBOX ("UsrCodStd",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Std%u\" value=\"%s\"%s%s",
|
||||
NumUsr,UsrDat->EnUsrCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
Present ? " checked=\"checked\"" : "",
|
||||
(ICanChangeStdAttendance == Usr_CAN) ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
" disabled=\"disabled\"");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write number of student in the list *****/
|
||||
|
@ -2447,7 +2440,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events)
|
|||
for (NumAttEvent = 0;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++)
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = false;
|
||||
|
||||
/* Set some events as selected */
|
||||
for (Ptr = Events->StrAttCodsSelected;
|
||||
|
@ -2464,7 +2457,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events)
|
|||
NumAttEvent++)
|
||||
if (Events->Lst[NumAttEvent].AttCod == AttCod)
|
||||
{
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2478,18 +2471,18 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events)
|
|||
for (NumAttEvent = 0;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++)
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = true;
|
||||
else // Course has groups and not all of them are selected
|
||||
for (NumAttEvent = 0;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++)
|
||||
{
|
||||
/* Reset selection */
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = false;
|
||||
|
||||
/* Set this event as selected? */
|
||||
if (Events->Lst[NumAttEvent].NumStdsFromList) // Some students attended to this event
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = true;
|
||||
else // No students attended to this event
|
||||
{
|
||||
/***** Get groups associated to an attendance event from database *****/
|
||||
|
@ -2498,7 +2491,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events)
|
|||
/* Get groups associated to this event */
|
||||
for (NumGrpInThisEvent = 0;
|
||||
NumGrpInThisEvent < NumGrpsInThisEvent &&
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_UNCHECKED;
|
||||
!Events->Lst[NumAttEvent].Selected;
|
||||
NumGrpInThisEvent++)
|
||||
{
|
||||
/* Get next group associated to this event */
|
||||
|
@ -2506,13 +2499,13 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events)
|
|||
/* Check if this group is selected */
|
||||
for (NumGrpSel = 0;
|
||||
NumGrpSel < Gbl.Crs.Grps.LstGrpsSel.NumGrps &&
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_UNCHECKED;
|
||||
!Events->Lst[NumAttEvent].Selected;
|
||||
NumGrpSel++)
|
||||
if (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrpSel] == GrpCodInThisEvent)
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = true;
|
||||
}
|
||||
else // This event is not associated to groups
|
||||
Events->Lst[NumAttEvent].UncheckedOrChecked = Cns_CHECKED;
|
||||
Events->Lst[NumAttEvent].Selected = true;
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
@ -2615,7 +2608,6 @@ static void Att_PutButtonToShowDetails (const struct Att_Events *Events)
|
|||
static void Att_ListEventsToSelect (struct Att_Events *Events,
|
||||
Att_TypeOfView_t TypeOfView)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Events;
|
||||
extern const char *Txt_Event;
|
||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
|
@ -2674,7 +2666,8 @@ static void Att_ListEventsToSelect (struct Att_Events *Events,
|
|||
HTM_INPUT_CHECKBOX ("AttCods",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Event%u\" value=\"%ld\"%s",
|
||||
NumAttEvent,Events->Event.AttCod,
|
||||
HTM_CheckedTxt[Events->Lst[NumAttEvent].UncheckedOrChecked]);
|
||||
Events->Lst[NumAttEvent].Selected ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
|
||||
|
@ -2814,7 +2807,7 @@ static void Att_ListUsrsAttendanceTable (struct Att_Events *Events,
|
|||
for (NumAttEvent = 0, Total = 0;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++)
|
||||
if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED)
|
||||
if (Events->Lst[NumAttEvent].Selected)
|
||||
{
|
||||
HTM_TD_LINE_TOP_Unsigned (Events->Lst[NumAttEvent].NumStdsFromList);
|
||||
Total += Events->Lst[NumAttEvent].NumStdsFromList;
|
||||
|
@ -2859,7 +2852,7 @@ static void Att_WriteTableHeadSeveralAttEvents (struct Att_Events *Events)
|
|||
for (NumAttEvent = 0;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++)
|
||||
if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED)
|
||||
if (Events->Lst[NumAttEvent].Selected)
|
||||
{
|
||||
/***** Get data of this attendance event *****/
|
||||
Events->Event.AttCod = Events->Lst[NumAttEvent].AttCod;
|
||||
|
@ -2895,7 +2888,6 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
|||
};
|
||||
unsigned NumAttEvent;
|
||||
bool Present;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
unsigned NumTimesPresent;
|
||||
|
||||
/***** Write number of user in the list *****/
|
||||
|
@ -2943,18 +2935,16 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
|||
for (NumAttEvent = 0, NumTimesPresent = 0;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++)
|
||||
if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED)
|
||||
if (Events->Lst[NumAttEvent].Selected)
|
||||
{
|
||||
/* Check if this student is already registered in the current event */
|
||||
// Here it is not necessary to get comments
|
||||
Present = Att_CheckIfUsrIsPresentInEvent (Events->Lst[NumAttEvent].AttCod,
|
||||
UsrDat->UsrCod);
|
||||
UncheckedOrChecked = Present ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
UsrDat->UsrCod);
|
||||
|
||||
/* Write check or cross */
|
||||
HTM_TD_Begin ("class=\"BM %s\"",The_GetColorRows ());
|
||||
Att_PutCheckOrCross (UncheckedOrChecked);
|
||||
Att_PutCheckOrCross (Present);
|
||||
HTM_TD_End ();
|
||||
|
||||
if (Present)
|
||||
|
@ -2976,31 +2966,24 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
|||
/*********************** Put check or cross character ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Att_PutCheckOrCross (Cns_UncheckedOrChecked_t UncheckedOrChecked)
|
||||
static void Att_PutCheckOrCross (bool Present)
|
||||
{
|
||||
extern const char *Txt_Present;
|
||||
extern const char *Txt_Absent;
|
||||
static const char *Class[Cns_NUM_UNCHECKED_CHECKED] =
|
||||
{
|
||||
[Cns_UNCHECKED] = "ATT_CROSS",
|
||||
[Cns_CHECKED ] = "ATT_CHECK",
|
||||
};
|
||||
static const char **Title[Cns_NUM_UNCHECKED_CHECKED] =
|
||||
{
|
||||
[Cns_UNCHECKED] = &Txt_Absent,
|
||||
[Cns_CHECKED ] = &Txt_Present,
|
||||
};
|
||||
static const char *Txt[Cns_NUM_UNCHECKED_CHECKED] =
|
||||
{
|
||||
[Cns_UNCHECKED] = "✗",
|
||||
[Cns_CHECKED ] = "✓",
|
||||
};
|
||||
|
||||
HTM_DIV_Begin ("class=\"%s %s_%s\" title=\"%s\"",
|
||||
Class[UncheckedOrChecked],
|
||||
Class[UncheckedOrChecked],The_GetSuffix (),
|
||||
*Title[UncheckedOrChecked]);
|
||||
HTM_Txt (Txt[UncheckedOrChecked]);
|
||||
if (Present)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"ATT_CHECK ATT_CHECK_%s\" title=\"%s\"",
|
||||
The_GetSuffix (),Txt_Present);
|
||||
HTM_Txt ("✓");
|
||||
}
|
||||
else
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"ATT_CROSS ATT_CROSS_%s\" title=\"%s\"",
|
||||
The_GetSuffix (),Txt_Absent);
|
||||
HTM_Txt ("✗");
|
||||
}
|
||||
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
|
@ -3077,7 +3060,6 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
|
|||
unsigned UniqueId;
|
||||
char *Id;
|
||||
bool Present;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
bool ShowCommentStd;
|
||||
bool ShowCommentTch;
|
||||
char CommentStd[Cns_MAX_BYTES_TEXT + 1];
|
||||
|
@ -3137,7 +3119,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
|
|||
for (NumAttEvent = 0, UniqueId = 1;
|
||||
NumAttEvent < Events->Num;
|
||||
NumAttEvent++, UniqueId++)
|
||||
if (Events->Lst[NumAttEvent].UncheckedOrChecked == Cns_CHECKED)
|
||||
if (Events->Lst[NumAttEvent].Selected)
|
||||
{
|
||||
/***** Get data of the attendance event from database *****/
|
||||
Events->Event.AttCod = Events->Lst[NumAttEvent].AttCod;
|
||||
|
@ -3146,8 +3128,6 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
|
|||
|
||||
/***** Get comments for this student *****/
|
||||
Present = Att_CheckIfUsrIsPresentInEventAndGetComments (Events->Event.AttCod,UsrDat->UsrCod,CommentStd,CommentTch);
|
||||
UncheckedOrChecked = Present ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
ShowCommentStd = CommentStd[0];
|
||||
ShowCommentTch = CommentTch[0] &&
|
||||
(Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
|
||||
|
@ -3167,7 +3147,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
|
|||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ());
|
||||
Att_PutCheckOrCross (UncheckedOrChecked);
|
||||
Att_PutCheckOrCross (Present);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
|
||||
|
|
|
@ -70,7 +70,7 @@ struct Att_Events
|
|||
{
|
||||
long AttCod; // Attendance event code
|
||||
unsigned NumStdsFromList; // Number of students (taken from a list) who has assisted to the event
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked; // Do I have selected this attendance event?
|
||||
bool Selected; // I have selected this attendance event
|
||||
} *Lst; // List of attendance events
|
||||
Dat_StartEndTime_t SelectedOrder;
|
||||
struct Att_Event Event; // Selected/current event
|
||||
|
|
|
@ -2883,12 +2883,10 @@ void Brw_PutLegalNotice (void)
|
|||
|
||||
static void Brw_FormToChangeCrsGrpZone (void)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||
struct ListCodGrps LstMyGrps;
|
||||
unsigned NumGrp;
|
||||
struct GroupData GrpDat;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get list of groups to show *****/
|
||||
if (Gbl.Crs.Grps.NumGrps) // This course has groups?
|
||||
|
@ -2907,11 +2905,10 @@ static void Brw_FormToChangeCrsGrpZone (void)
|
|||
Brw_TypeIsCrsBrw[Gbl.FileBrowser.Type] ? "BROWSER_TITLE" :
|
||||
"BROWSER_TITLE_LIGHT");
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = Brw_TypeIsCrsBrw[Gbl.FileBrowser.Type] ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO (Par_CodeStr[ParCod_Grp],HTM_SUBMIT_ON_CLICK,
|
||||
"value=\"-1\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Brw_TypeIsCrsBrw[Gbl.FileBrowser.Type] ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_Txt (Gbl.Hierarchy.Node[Hie_CRS].FullName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_LI_End ();
|
||||
|
@ -2938,12 +2935,12 @@ static void Brw_FormToChangeCrsGrpZone (void)
|
|||
NULL,
|
||||
"class=\"ICO25x25\" style=\"margin-left:6px;\"");
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = (Brw_TypeIsGrpBrw[Gbl.FileBrowser.Type] &&
|
||||
GrpDat.GrpCod == Gbl.Crs.Grps.GrpCod) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO (Par_CodeStr[ParCod_Grp],HTM_SUBMIT_ON_CLICK,
|
||||
"value=\"%ld\"%s",
|
||||
GrpDat.GrpCod,HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
GrpDat.GrpCod,
|
||||
(Brw_TypeIsGrpBrw[Gbl.FileBrowser.Type] &&
|
||||
GrpDat.GrpCod == Gbl.Crs.Grps.GrpCod) ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TxtF ("%s %s",GrpDat.GrpTypName,GrpDat.GrpName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_LI_End ();
|
||||
|
|
|
@ -633,15 +633,11 @@ Me sale este error, no s
|
|||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.79.5 (2024-04-26)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.79 (2024-04-24)"
|
||||
#define CSS_FILE "swad23.67.2.css"
|
||||
#define JS_FILE "swad23.79.js"
|
||||
/*
|
||||
Version 23.79.5: Apr 26, 2024 Code refactoring in HTML related to checked field in forms. (335739 lines)
|
||||
Version 23.79.4: Apr 25, 2024 Code refactoring in HTML related to checked field in forms. (335739 lines)
|
||||
Version 23.79.3: Apr 24, 2024 Code refactoring in HTML related to disabled field in forms. (335766 lines)
|
||||
Version 23.79.2: Apr 24, 2024 Code refactoring in HTML related to disabled field in forms. (335766 lines)
|
||||
Version 23.79.1: Apr 24, 2024 Code refactoring in HTML related to required field in forms. (335751 lines)
|
||||
Version 23.79.1: Apr 24, 2024 Code refactoring in HTML related to required field in form. (335751 lines)
|
||||
Version 23.79: Apr 24, 2024 Code refactoring writing dates. (335741 lines)
|
||||
Version 23.78: Apr 23, 2024 Code refactoring in list of actions. (335577 lines)
|
||||
Version 23.77: Apr 19, 2024 Code refactoring in list of actions. (335567 lines)
|
||||
|
|
54
swad_constant.c
Normal file
54
swad_constant.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
// swad_constant.c: common constants used in several modules
|
||||
|
||||
/*
|
||||
SWAD (Shared Workspace At a Distance),
|
||||
is a web platform developed at the University of Granada (Spain),
|
||||
and used to support university teaching.
|
||||
|
||||
This file is part of SWAD core.
|
||||
Copyright (C) 1999-2024 Antonio Cañas Vargas
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
/*********************************** Headers *********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Public constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Private constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************* Private types *******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** External global variables from others modules ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Public global variables **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Private global variables **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
|
@ -102,13 +102,6 @@ typedef enum
|
|||
Cns_VERBOSE,
|
||||
} Cns_QuietOrVerbose_t;
|
||||
|
||||
#define Cns_NUM_UNCHECKED_CHECKED 2
|
||||
typedef enum
|
||||
{
|
||||
Cns_UNCHECKED,
|
||||
Cns_CHECKED,
|
||||
} Cns_UncheckedOrChecked_t;
|
||||
|
||||
#define Cns_NUM_DISABLED_ENABLED 2
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
@ -63,10 +63,8 @@ static void Coo_PutIconsCookies (__attribute__((unused)) void *Args);
|
|||
void Coo_EditMyPrefsOnCookies (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Settings_cookies;
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Cookies;
|
||||
extern const char *Txt_Accept_third_party_cookies_to_view_multimedia_content_from_other_websites;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Begin section with preferences about cookies *****/
|
||||
HTM_SECTION_Begin (Coo_COOKIES_ID);
|
||||
|
@ -94,11 +92,10 @@ void Coo_EditMyPrefsOnCookies (void)
|
|||
|
||||
/* Check box */
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = (Gbl.Usrs.Me.UsrDat.Prefs.RefuseAcceptCookies == Coo_ACCEPT) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("cookies",HTM_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Gbl.Usrs.Me.UsrDat.Prefs.RefuseAcceptCookies == Coo_ACCEPT ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_Accept_third_party_cookies_to_view_multimedia_content_from_other_websites);
|
||||
HTM_LABEL_End ();
|
||||
|
||||
|
|
138
swad_date.c
138
swad_date.c
|
@ -287,10 +287,8 @@ void Dat_ResetHour (struct Dat_Hour *Hour)
|
|||
void Dat_PutBoxToSelectDateFormat (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Settings_dates;
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Dates;
|
||||
Dat_Format_t Format;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (Txt_Dates,Dat_PutIconsDateFormat,NULL,
|
||||
|
@ -313,12 +311,11 @@ void Dat_PutBoxToSelectDateFormat (void)
|
|||
HTM_LI_Begin ("class=\"DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = (Format == Gbl.Prefs.DateFormat) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO ("DateFormat",HTM_SUBMIT_ON_CLICK,
|
||||
" value=\"%u\"%s",
|
||||
(unsigned) Format,
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Format == Gbl.Prefs.DateFormat ? " checked=\"checked\"" :
|
||||
"");
|
||||
Dat_PutSpanDateFormat (Format);
|
||||
Dat_PutScriptDateFormat (Format);
|
||||
HTM_LABEL_End ();
|
||||
|
@ -989,10 +986,8 @@ See also http://www.ashleyit.com/rs/jsrs/select/php/select.php
|
|||
void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
|
||||
const char *Id,
|
||||
struct Dat_Date *DateSelected,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled)
|
||||
HTM_SubmitOnChange_t SubmitOnChange,bool Disabled)
|
||||
{
|
||||
extern const char *HTM_DisabledTxt[Cns_NUM_DISABLED_ENABLED];
|
||||
extern const char *Txt_MONTHS_SMALL[12];
|
||||
char *FuncOnChange;
|
||||
unsigned Year;
|
||||
|
@ -1000,73 +995,86 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
|
|||
unsigned Day;
|
||||
unsigned NumDaysSelectedMonth;
|
||||
|
||||
|
||||
if (asprintf (&FuncOnChange,"adjustDateForm('%s');",Id) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Year *****/
|
||||
HTM_SELECT_Begin (SubmitOnChange,FuncOnChange,
|
||||
"id=\"%sYear\" name=\"%sYear\""
|
||||
" class=\"INPUT_%s\"%s",
|
||||
Id,Id,The_GetSuffix (),
|
||||
HTM_DisabledTxt[DisabledOrEnabled]);
|
||||
HTM_OPTION (HTM_Type_STRING,"0",
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"-");
|
||||
for (Year = FirstYear;
|
||||
Year <= LastYear;
|
||||
Year++)
|
||||
HTM_OPTION (HTM_Type_UNSIGNED,&Year,
|
||||
(Year == DateSelected->Year) ? HTM_OPTION_SELECTED :
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"%u",Year);
|
||||
HTM_SELECT_End ();
|
||||
|
||||
/***** Month *****/
|
||||
HTM_SELECT_Begin (SubmitOnChange,FuncOnChange,
|
||||
"id=\"%sMonth\" name=\"%sMonth\""
|
||||
" class=\"INPUT_%s\"%s",
|
||||
Id,Id,The_GetSuffix (),
|
||||
HTM_DisabledTxt[DisabledOrEnabled]);
|
||||
HTM_OPTION (HTM_Type_STRING,"0",
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"-");
|
||||
for (Month = 1;
|
||||
Month <= 12;
|
||||
Month++)
|
||||
HTM_OPTION (HTM_Type_UNSIGNED,&Month,
|
||||
(Month == DateSelected->Month) ? HTM_OPTION_SELECTED :
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"%s",Txt_MONTHS_SMALL[Month - 1]);
|
||||
HTM_SELECT_End ();
|
||||
|
||||
free (FuncOnChange);
|
||||
|
||||
/***** Day *****/
|
||||
HTM_SELECT_Begin (SubmitOnChange,NULL,
|
||||
"id=\"%sDay\" name=\"%sDay\""
|
||||
" class=\"INPUT_%s\"%s",
|
||||
Id,Id,The_GetSuffix (),
|
||||
HTM_DisabledTxt[DisabledOrEnabled]);
|
||||
// HTM_TD_Begin ("class=\"CM\"");
|
||||
HTM_SELECT_Begin (SubmitOnChange,FuncOnChange,
|
||||
"id=\"%sYear\" name=\"%sYear\""
|
||||
" class=\"INPUT_%s\"%s",
|
||||
Id,Id,
|
||||
The_GetSuffix (),
|
||||
Disabled ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
HTM_OPTION (HTM_Type_STRING,"0",
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"-");
|
||||
NumDaysSelectedMonth = (DateSelected->Month == 0) ? 31 :
|
||||
((DateSelected->Month == 2) ? Dat_GetNumDaysFebruary (DateSelected->Year) :
|
||||
Dat_NumDaysMonth[DateSelected->Month]);
|
||||
for (Day = 1;
|
||||
Day <= NumDaysSelectedMonth;
|
||||
Day++)
|
||||
HTM_OPTION (HTM_Type_UNSIGNED,&Day,
|
||||
(Day == DateSelected->Day) ? HTM_OPTION_SELECTED :
|
||||
for (Year = FirstYear;
|
||||
Year <= LastYear;
|
||||
Year++)
|
||||
HTM_OPTION (HTM_Type_UNSIGNED,&Year,
|
||||
Year == DateSelected->Year ? HTM_OPTION_SELECTED :
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"%u",Day);
|
||||
HTM_SELECT_End ();
|
||||
"%u",Year);
|
||||
HTM_SELECT_End ();
|
||||
// HTM_TD_End ();
|
||||
|
||||
/***** Month *****/
|
||||
// HTM_TD_Begin ("class=\"CM\"");
|
||||
HTM_SELECT_Begin (SubmitOnChange,FuncOnChange,
|
||||
"id=\"%sMonth\" name=\"%sMonth\""
|
||||
" class=\"INPUT_%s\"%s",
|
||||
Id,Id,
|
||||
The_GetSuffix (),
|
||||
Disabled ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
HTM_OPTION (HTM_Type_STRING,"0",
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"-");
|
||||
for (Month = 1;
|
||||
Month <= 12;
|
||||
Month++)
|
||||
HTM_OPTION (HTM_Type_UNSIGNED,&Month,
|
||||
Month == DateSelected->Month ? HTM_OPTION_SELECTED :
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"%s",Txt_MONTHS_SMALL[Month - 1]);
|
||||
HTM_SELECT_End ();
|
||||
// HTM_TD_End ();
|
||||
|
||||
free (FuncOnChange);
|
||||
|
||||
/***** Day *****/
|
||||
// HTM_TD_Begin ("class=\"CM\"");
|
||||
HTM_SELECT_Begin (SubmitOnChange,NULL,
|
||||
"id=\"%sDay\" name=\"%sDay\""
|
||||
" class=\"INPUT_%s\"%s",
|
||||
Id,Id,
|
||||
The_GetSuffix (),
|
||||
Disabled ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
HTM_OPTION (HTM_Type_STRING,"0",
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"-");
|
||||
NumDaysSelectedMonth = (DateSelected->Month == 0) ? 31 :
|
||||
((DateSelected->Month == 2) ? Dat_GetNumDaysFebruary (DateSelected->Year) :
|
||||
Dat_NumDaysMonth[DateSelected->Month]);
|
||||
for (Day = 1;
|
||||
Day <= NumDaysSelectedMonth;
|
||||
Day++)
|
||||
HTM_OPTION (HTM_Type_UNSIGNED,&Day,
|
||||
Day == DateSelected->Day ? HTM_OPTION_SELECTED :
|
||||
HTM_OPTION_UNSELECTED,
|
||||
HTM_OPTION_ENABLED,
|
||||
"%u",Day);
|
||||
HTM_SELECT_End ();
|
||||
// HTM_TD_End ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -194,8 +194,7 @@ void Dat_GetBrowserTimeZone (char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1]);
|
|||
void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
|
||||
const char *Id,
|
||||
struct Dat_Date *DateSelected,
|
||||
HTM_SubmitOnChange_t SubmitOnChange,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled);
|
||||
HTM_SubmitOnChange_t SubmitOnChange,bool Disabled);
|
||||
void Dat_GetDateFromForm (const char *ParNameDay,const char *ParNameMonth,const char *ParNameYear,
|
||||
unsigned *Day,unsigned *Month,unsigned *Year);
|
||||
|
||||
|
|
103
swad_enrolment.c
103
swad_enrolment.c
|
@ -113,19 +113,19 @@ static void Enr_PutActionsRegRemSeveralUsrs (void);
|
|||
|
||||
static void Enr_ReceiveUsrsCrs (Rol_Role_t Role);
|
||||
|
||||
static void Enr_PutActionModifyOneUsr (Cns_UncheckedOrChecked_t *UncheckedOrChecked,
|
||||
static void Enr_PutActionModifyOneUsr (bool *OptionChecked,
|
||||
Usr_Belong_t UsrBelongsToCrs,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRegOneDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked);
|
||||
static void Enr_PutActionRegOneCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked);
|
||||
static void Enr_PutActionRegOneInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked);
|
||||
static void Enr_PutActionRepUsrAsDup (Cns_UncheckedOrChecked_t *UncheckedOrChecked);
|
||||
static void Enr_PutActionRemUsrFromCrs (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAsDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAsCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAsInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAcc (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRegOneDegAdm (bool *OptionChecked);
|
||||
static void Enr_PutActionRegOneCtrAdm (bool *OptionChecked);
|
||||
static void Enr_PutActionRegOneInsAdm (bool *OptionChecked);
|
||||
static void Enr_PutActionRepUsrAsDup (bool *OptionChecked);
|
||||
static void Enr_PutActionRemUsrFromCrs (bool *OptionChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAsDegAdm (bool *OptionChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAsCtrAdm (bool *OptionChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAsInsAdm (bool *OptionChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_PutActionRemUsrAcc (bool *OptionChecked,Usr_MeOrOther_t MeOrOther);
|
||||
static void Enr_RegRemOneUsrActionBegin (Enr_RegRemOneUsrAction_t RegRemOneUsrAction,
|
||||
Cns_UncheckedOrChecked_t *UncheckedOrChecked);
|
||||
bool *OptionChecked);
|
||||
static void Enr_RegRemOneUsrActionEnd (void);
|
||||
|
||||
static void Enr_RegisterUsr (struct Usr_Data *UsrDat,Rol_Role_t RegRemRole,
|
||||
|
@ -803,7 +803,6 @@ static void Enr_PutAreaToEnterUsrsIDs (void)
|
|||
|
||||
static void Enr_PutActionsRegRemSeveralUsrs (void)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Register_the_users_indicated_in_step_1;
|
||||
extern const char *Txt_Remove_the_users_indicated_in_step_1;
|
||||
extern const char *Txt_Remove_the_users_not_indicated_in_step_1;
|
||||
|
@ -819,9 +818,8 @@ static void Enr_PutActionsRegRemSeveralUsrs (void)
|
|||
HTM_LI_Begin (NULL);
|
||||
HTM_LABEL_Begin (NULL);
|
||||
HTM_INPUT_RADIO ("RegRemAction",HTM_DONT_SUBMIT_ON_CLICK,
|
||||
" value=\"%u\"%s",
|
||||
(unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS,
|
||||
HTM_CheckedTxt[Cns_CHECKED]);
|
||||
" value=\"%u\" checked=\"checked\"",
|
||||
(unsigned) Enr_REGISTER_SPECIFIED_USRS_IN_CRS);
|
||||
HTM_Txt (Txt_Register_the_users_indicated_in_step_1);
|
||||
HTM_LABEL_End ();
|
||||
HTM_LI_End ();
|
||||
|
@ -1321,7 +1319,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
bool UsrIsDegAdmin = false;
|
||||
bool UsrIsCtrAdmin = false;
|
||||
bool UsrIsInsAdmin = false;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked = Cns_UNCHECKED;
|
||||
bool OptionChecked = false;
|
||||
|
||||
/***** Check if the other user belongs to the current course *****/
|
||||
if (Gbl.Hierarchy.Level == Hie_CRS)
|
||||
|
@ -1352,7 +1350,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
/***** Register user in course / Modify user's data *****/
|
||||
if (Gbl.Hierarchy.Level == Hie_CRS && Gbl.Usrs.Me.Role.Logged >= Rol_STD)
|
||||
{
|
||||
Enr_PutActionModifyOneUsr (&UncheckedOrChecked,UsrBelongsToCrs,MeOrOther);
|
||||
Enr_PutActionModifyOneUsr (&OptionChecked,UsrBelongsToCrs,MeOrOther);
|
||||
OptionsShown = true;
|
||||
}
|
||||
|
||||
|
@ -1364,14 +1362,14 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
/***** Register user as administrator of degree *****/
|
||||
if (!UsrIsDegAdmin && Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM)
|
||||
{
|
||||
Enr_PutActionRegOneDegAdm (&UncheckedOrChecked);
|
||||
Enr_PutActionRegOneDegAdm (&OptionChecked);
|
||||
OptionsShown = true;
|
||||
}
|
||||
|
||||
/***** Register user as administrator of center *****/
|
||||
if (!UsrIsCtrAdmin && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM)
|
||||
{
|
||||
Enr_PutActionRegOneCtrAdm (&UncheckedOrChecked);
|
||||
Enr_PutActionRegOneCtrAdm (&OptionChecked);
|
||||
OptionsShown = true;
|
||||
}
|
||||
}
|
||||
|
@ -1379,7 +1377,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
/***** Register user as administrator of institution *****/
|
||||
if (!UsrIsInsAdmin && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
|
||||
{
|
||||
Enr_PutActionRegOneInsAdm (&UncheckedOrChecked);
|
||||
Enr_PutActionRegOneInsAdm (&OptionChecked);
|
||||
OptionsShown = true;
|
||||
}
|
||||
}
|
||||
|
@ -1387,14 +1385,14 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
/***** Report user as possible duplicate *****/
|
||||
if (MeOrOther == Usr_OTHER && Gbl.Usrs.Me.Role.Logged >= Rol_TCH)
|
||||
{
|
||||
Enr_PutActionRepUsrAsDup (&UncheckedOrChecked);
|
||||
Enr_PutActionRepUsrAsDup (&OptionChecked);
|
||||
OptionsShown = true;
|
||||
}
|
||||
|
||||
/***** Remove user from the course *****/
|
||||
if (UsrBelongsToCrs == Usr_BELONG)
|
||||
{
|
||||
Enr_PutActionRemUsrFromCrs (&UncheckedOrChecked,MeOrOther);
|
||||
Enr_PutActionRemUsrFromCrs (&OptionChecked,MeOrOther);
|
||||
OptionsShown = true;
|
||||
}
|
||||
|
||||
|
@ -1407,7 +1405,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
if (UsrIsDegAdmin &&
|
||||
(MeOrOther == Usr_ME || Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM))
|
||||
{
|
||||
Enr_PutActionRemUsrAsDegAdm (&UncheckedOrChecked,MeOrOther);
|
||||
Enr_PutActionRemUsrAsDegAdm (&OptionChecked,MeOrOther);
|
||||
OptionsShown = true;
|
||||
}
|
||||
|
||||
|
@ -1415,7 +1413,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
if (UsrIsCtrAdmin &&
|
||||
(MeOrOther == Usr_ME || Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM))
|
||||
{
|
||||
Enr_PutActionRemUsrAsCtrAdm (&UncheckedOrChecked,MeOrOther);
|
||||
Enr_PutActionRemUsrAsCtrAdm (&OptionChecked,MeOrOther);
|
||||
OptionsShown = true;
|
||||
}
|
||||
}
|
||||
|
@ -1424,7 +1422,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
if (UsrIsInsAdmin &&
|
||||
(MeOrOther == Usr_ME || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM))
|
||||
{
|
||||
Enr_PutActionRemUsrAsInsAdm (&UncheckedOrChecked,MeOrOther);
|
||||
Enr_PutActionRemUsrAsInsAdm (&OptionChecked,MeOrOther);
|
||||
OptionsShown = true;
|
||||
}
|
||||
}
|
||||
|
@ -1432,7 +1430,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
/***** Eliminate user completely from platform *****/
|
||||
if (Acc_CheckIfICanEliminateAccount (Gbl.Usrs.Other.UsrDat.UsrCod) == Usr_CAN)
|
||||
{
|
||||
Enr_PutActionRemUsrAcc (&UncheckedOrChecked,MeOrOther);
|
||||
Enr_PutActionRemUsrAcc (&OptionChecked,MeOrOther);
|
||||
OptionsShown = true;
|
||||
}
|
||||
|
||||
|
@ -1446,7 +1444,7 @@ bool Enr_PutActionsRegRemOneUsr (Usr_MeOrOther_t MeOrOther)
|
|||
/**************** Put action to modify user in current course ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionModifyOneUsr (Cns_UncheckedOrChecked_t *UncheckedOrChecked,
|
||||
static void Enr_PutActionModifyOneUsr (bool *OptionChecked,
|
||||
Usr_Belong_t UsrBelongsToCrs,Usr_MeOrOther_t MeOrOther)
|
||||
{
|
||||
extern const char *Txt_Register_me_in_X;
|
||||
|
@ -1461,7 +1459,7 @@ static void Enr_PutActionModifyOneUsr (Cns_UncheckedOrChecked_t *UncheckedOrChec
|
|||
[Usr_BELONG ][Usr_OTHER] = Txt_Modify_user_in_the_course_X,
|
||||
};
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_MODIFY_ONE_USR_IN_CRS,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_MODIFY_ONE_USR_IN_CRS,OptionChecked);
|
||||
HTM_TxtF (Txt[UsrBelongsToCrs][MeOrOther],
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
|
@ -1471,11 +1469,11 @@ static void Enr_PutActionModifyOneUsr (Cns_UncheckedOrChecked_t *UncheckedOrChec
|
|||
/**************** Put action to register user as degree admin ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRegOneDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked)
|
||||
static void Enr_PutActionRegOneDegAdm (bool *OptionChecked)
|
||||
{
|
||||
extern const char *Txt_Register_USER_as_an_administrator_of_the_degree_X;
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_ONE_DEG_ADMIN,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_ONE_DEG_ADMIN,OptionChecked);
|
||||
HTM_TxtF (Txt_Register_USER_as_an_administrator_of_the_degree_X,
|
||||
Gbl.Hierarchy.Node[Hie_DEG].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
|
@ -1485,11 +1483,11 @@ static void Enr_PutActionRegOneDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrChec
|
|||
/**************** Put action to register user as center admin ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRegOneCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked)
|
||||
static void Enr_PutActionRegOneCtrAdm (bool *OptionChecked)
|
||||
{
|
||||
extern const char *Txt_Register_USER_as_an_administrator_of_the_center_X;
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_ONE_CTR_ADMIN,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_ONE_CTR_ADMIN,OptionChecked);
|
||||
HTM_TxtF (Txt_Register_USER_as_an_administrator_of_the_center_X,
|
||||
Gbl.Hierarchy.Node[Hie_CTR].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
|
@ -1499,11 +1497,11 @@ static void Enr_PutActionRegOneCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrChec
|
|||
/************* Put action to register user as institution admin **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRegOneInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked)
|
||||
static void Enr_PutActionRegOneInsAdm (bool *OptionChecked)
|
||||
{
|
||||
extern const char *Txt_Register_USER_as_an_administrator_of_the_institution_X;
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_ONE_INS_ADMIN,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REGISTER_ONE_INS_ADMIN,OptionChecked);
|
||||
HTM_TxtF (Txt_Register_USER_as_an_administrator_of_the_institution_X,
|
||||
Gbl.Hierarchy.Node[Hie_INS].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
|
@ -1513,11 +1511,11 @@ static void Enr_PutActionRegOneInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrChec
|
|||
/****************** Put action to report user as duplicate *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRepUsrAsDup (Cns_UncheckedOrChecked_t *UncheckedOrChecked)
|
||||
static void Enr_PutActionRepUsrAsDup (bool *OptionChecked)
|
||||
{
|
||||
extern const char *Txt_Report_possible_duplicate_user;
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE,OptionChecked);
|
||||
HTM_Txt (Txt_Report_possible_duplicate_user);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
}
|
||||
|
@ -1526,7 +1524,7 @@ static void Enr_PutActionRepUsrAsDup (Cns_UncheckedOrChecked_t *UncheckedOrCheck
|
|||
/****************** Put action to remove user from course ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRemUsrFromCrs (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther)
|
||||
static void Enr_PutActionRemUsrFromCrs (bool *OptionChecked,Usr_MeOrOther_t MeOrOther)
|
||||
{
|
||||
extern const char *Txt_Remove_me_from_THE_COURSE_X;
|
||||
extern const char *Txt_Remove_USER_from_THE_COURSE_X;
|
||||
|
@ -1536,7 +1534,7 @@ static void Enr_PutActionRemUsrFromCrs (Cns_UncheckedOrChecked_t *UncheckedOrChe
|
|||
[Usr_OTHER] = Txt_Remove_USER_from_THE_COURSE_X,
|
||||
};
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_USR_FROM_CRS,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_USR_FROM_CRS,OptionChecked);
|
||||
HTM_TxtF (Txt[MeOrOther],Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
}
|
||||
|
@ -1545,7 +1543,7 @@ static void Enr_PutActionRemUsrFromCrs (Cns_UncheckedOrChecked_t *UncheckedOrChe
|
|||
/***************** Put action to remove user as degree admin *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRemUsrAsDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther)
|
||||
static void Enr_PutActionRemUsrAsDegAdm (bool *OptionChecked,Usr_MeOrOther_t MeOrOther)
|
||||
{
|
||||
extern const char *Txt_Remove_me_as_an_administrator_of_the_degree_X;
|
||||
extern const char *Txt_Remove_USER_as_an_administrator_of_the_degree_X;
|
||||
|
@ -1555,7 +1553,7 @@ static void Enr_PutActionRemUsrAsDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrCh
|
|||
[Usr_OTHER] = Txt_Remove_USER_as_an_administrator_of_the_degree_X,
|
||||
};
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_DEG_ADMIN,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_DEG_ADMIN,OptionChecked);
|
||||
HTM_TxtF (Txt[MeOrOther],Gbl.Hierarchy.Node[Hie_DEG].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
}
|
||||
|
@ -1564,7 +1562,7 @@ static void Enr_PutActionRemUsrAsDegAdm (Cns_UncheckedOrChecked_t *UncheckedOrCh
|
|||
/***************** Put action to remove user as center admin *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRemUsrAsCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther)
|
||||
static void Enr_PutActionRemUsrAsCtrAdm (bool *OptionChecked,Usr_MeOrOther_t MeOrOther)
|
||||
{
|
||||
extern const char *Txt_Remove_me_as_an_administrator_of_the_center_X;
|
||||
extern const char *Txt_Remove_USER_as_an_administrator_of_the_center_X;
|
||||
|
@ -1574,7 +1572,7 @@ static void Enr_PutActionRemUsrAsCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrCh
|
|||
[Usr_OTHER] = Txt_Remove_USER_as_an_administrator_of_the_center_X,
|
||||
};
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_CTR_ADMIN,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_CTR_ADMIN,OptionChecked);
|
||||
HTM_TxtF (Txt[MeOrOther],Gbl.Hierarchy.Node[Hie_CTR].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
}
|
||||
|
@ -1583,7 +1581,7 @@ static void Enr_PutActionRemUsrAsCtrAdm (Cns_UncheckedOrChecked_t *UncheckedOrCh
|
|||
/************** Put action to remove user as institution admin ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRemUsrAsInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther)
|
||||
static void Enr_PutActionRemUsrAsInsAdm (bool *OptionChecked,Usr_MeOrOther_t MeOrOther)
|
||||
{
|
||||
extern const char *Txt_Remove_me_as_an_administrator_of_the_institution_X;
|
||||
extern const char *Txt_Remove_USER_as_an_administrator_of_the_institution_X;
|
||||
|
@ -1593,7 +1591,7 @@ static void Enr_PutActionRemUsrAsInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrCh
|
|||
[Usr_OTHER] = Txt_Remove_USER_as_an_administrator_of_the_institution_X,
|
||||
};
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_INS_ADMIN,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_REMOVE_ONE_INS_ADMIN,OptionChecked);
|
||||
HTM_TxtF (Txt[MeOrOther],Gbl.Hierarchy.Node[Hie_INS].ShrtName);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
}
|
||||
|
@ -1602,7 +1600,7 @@ static void Enr_PutActionRemUsrAsInsAdm (Cns_UncheckedOrChecked_t *UncheckedOrCh
|
|||
/********************* Put action to remove user account *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Enr_PutActionRemUsrAcc (Cns_UncheckedOrChecked_t *UncheckedOrChecked,Usr_MeOrOther_t MeOrOther)
|
||||
static void Enr_PutActionRemUsrAcc (bool *OptionChecked,Usr_MeOrOther_t MeOrOther)
|
||||
{
|
||||
extern const char *Txt_Eliminate_my_user_account;
|
||||
extern const char *Txt_Eliminate_user_account;
|
||||
|
@ -1612,7 +1610,7 @@ static void Enr_PutActionRemUsrAcc (Cns_UncheckedOrChecked_t *UncheckedOrChecked
|
|||
[Usr_OTHER] = Txt_Eliminate_user_account,
|
||||
};
|
||||
|
||||
Enr_RegRemOneUsrActionBegin (Enr_ELIMINATE_ONE_USR_FROM_PLATFORM,UncheckedOrChecked);
|
||||
Enr_RegRemOneUsrActionBegin (Enr_ELIMINATE_ONE_USR_FROM_PLATFORM,OptionChecked);
|
||||
HTM_Txt (Txt[MeOrOther]);
|
||||
Enr_RegRemOneUsrActionEnd ();
|
||||
}
|
||||
|
@ -1622,20 +1620,17 @@ static void Enr_PutActionRemUsrAcc (Cns_UncheckedOrChecked_t *UncheckedOrChecked
|
|||
/*****************************************************************************/
|
||||
|
||||
static void Enr_RegRemOneUsrActionBegin (Enr_RegRemOneUsrAction_t RegRemOneUsrAction,
|
||||
Cns_UncheckedOrChecked_t *UncheckedOrChecked)
|
||||
bool *OptionChecked)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
Cns_UncheckedOrChecked_t ThisUncheckedOrChecked = (*UncheckedOrChecked == Cns_CHECKED) ? Cns_UNCHECKED :
|
||||
Cns_CHECKED;
|
||||
|
||||
HTM_LI_Begin (NULL);
|
||||
HTM_LABEL_Begin (NULL);
|
||||
HTM_INPUT_RADIO ("RegRemAction",HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"value=\"%u\"%s",
|
||||
(unsigned) RegRemOneUsrAction,
|
||||
HTM_CheckedTxt[ThisUncheckedOrChecked]);
|
||||
*OptionChecked ? "" : " checked=\"checked\"");
|
||||
|
||||
*UncheckedOrChecked = Cns_CHECKED;
|
||||
if (!*OptionChecked)
|
||||
*OptionChecked = true;
|
||||
}
|
||||
|
||||
static void Enr_RegRemOneUsrActionEnd (void)
|
||||
|
@ -2181,7 +2176,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
1 << Rol_NET |
|
||||
1 << Rol_TCH,
|
||||
RolesSelected,
|
||||
Cns_DISABLED,
|
||||
false,
|
||||
HTM_SUBMIT_ON_CHANGE);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -50,17 +50,17 @@ typedef enum
|
|||
#define Enr_REG_REM_ONE_USR_NUM_ACTIONS 11
|
||||
typedef enum
|
||||
{
|
||||
Enr_REG_REM_ONE_USR_UNKNOWN_ACTION = 0,
|
||||
Enr_REGISTER_MODIFY_ONE_USR_IN_CRS = 1,
|
||||
Enr_REGISTER_ONE_DEG_ADMIN = 2,
|
||||
Enr_REGISTER_ONE_CTR_ADMIN = 3,
|
||||
Enr_REGISTER_ONE_INS_ADMIN = 4,
|
||||
Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE = 5,
|
||||
Enr_REMOVE_ONE_USR_FROM_CRS = 6,
|
||||
Enr_REMOVE_ONE_DEG_ADMIN = 7,
|
||||
Enr_REMOVE_ONE_CTR_ADMIN = 8,
|
||||
Enr_REMOVE_ONE_INS_ADMIN = 9,
|
||||
Enr_ELIMINATE_ONE_USR_FROM_PLATFORM = 10,
|
||||
Enr_REG_REM_ONE_USR_UNKNOWN_ACTION = 0,
|
||||
Enr_REGISTER_MODIFY_ONE_USR_IN_CRS = 1,
|
||||
Enr_REGISTER_ONE_DEG_ADMIN = 2,
|
||||
Enr_REGISTER_ONE_CTR_ADMIN = 3,
|
||||
Enr_REGISTER_ONE_INS_ADMIN = 4,
|
||||
Enr_REPORT_USR_AS_POSSIBLE_DUPLICATE = 5,
|
||||
Enr_REMOVE_ONE_USR_FROM_CRS = 6,
|
||||
Enr_REMOVE_ONE_DEG_ADMIN = 7,
|
||||
Enr_REMOVE_ONE_CTR_ADMIN = 8,
|
||||
Enr_REMOVE_ONE_INS_ADMIN = 9,
|
||||
Enr_ELIMINATE_ONE_USR_FROM_PLATFORM = 10,
|
||||
} Enr_RegRemOneUsrAction_t;
|
||||
|
||||
typedef enum
|
||||
|
|
|
@ -829,7 +829,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
|
|||
for (NumExam = 0;
|
||||
NumExam < Exams->Num;
|
||||
NumExam++)
|
||||
Exams->Lst[NumExam].UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Exams->Lst[NumExam].Selected = false;
|
||||
Exams->NumSelected = 0;
|
||||
|
||||
/* Set some exams as selected */
|
||||
|
@ -847,7 +847,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
|
|||
NumExam++)
|
||||
if (Exams->Lst[NumExam].ExaCod == ExaCod)
|
||||
{
|
||||
Exams->Lst[NumExam].UncheckedOrChecked = Cns_CHECKED;
|
||||
Exams->Lst[NumExam].Selected = true;
|
||||
Exams->NumSelected++;
|
||||
break;
|
||||
}
|
||||
|
@ -859,7 +859,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
|
|||
for (NumExam = 0;
|
||||
NumExam < Exams->Num;
|
||||
NumExam++)
|
||||
Exams->Lst[NumExam].UncheckedOrChecked = Cns_CHECKED;
|
||||
Exams->Lst[NumExam].Selected = true;
|
||||
Exams->NumSelected = Exams->Num;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -840,10 +840,9 @@ static void ExaPrn_WriteChoAnsToFill (const struct ExaPrn_Print *Print,
|
|||
unsigned QstInd,
|
||||
struct Qst_Question *Question)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
unsigned NumOpt;
|
||||
unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question
|
||||
Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
char Id[3 + Cns_MAX_DECIMAL_DIGITS_UINT + 1]; // "Ansxx...x"
|
||||
|
||||
/***** Change format of answers text *****/
|
||||
|
@ -876,7 +875,8 @@ static void ExaPrn_WriteChoAnsToFill (const struct ExaPrn_Print *Print,
|
|||
Question->Answer.Type == Qst_ANS_UNIQUE_CHOICE ? "radio" :
|
||||
"checkbox",
|
||||
Id,NumOpt,Indexes[NumOpt],
|
||||
HTM_CheckedTxt[UsrAnswers[Indexes[NumOpt]]]);
|
||||
UsrAnswers[Indexes[NumOpt]] ? " checked=\"checked\"" :
|
||||
"");
|
||||
ExaPrn_WriteJSToUpdateExamPrint (Print,QstInd,Id,(int) NumOpt);
|
||||
HTM_Txt (" />");
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -554,7 +554,6 @@ static void ExaRes_ShowResultsEnd (void)
|
|||
|
||||
static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||
extern const char *Txt_Exams;
|
||||
extern const char *Txt_Exam;
|
||||
|
@ -601,7 +600,8 @@ static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams)
|
|||
HTM_INPUT_CHECKBOX (Par_CodeStr[ParCod_Exa],HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Gam%u\" value=\"%ld\"%s",
|
||||
NumExam,Exams->Lst[NumExam].ExaCod,
|
||||
HTM_CheckedTxt[Exams->Lst[NumExam].UncheckedOrChecked]);
|
||||
Exams->Lst[NumExam].Selected ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
|
||||
|
@ -718,7 +718,7 @@ static void ExaRes_BuildExamsSelectedCommas (struct Exa_Exams *Exams,
|
|||
for (NumExam = 0;
|
||||
NumExam < Exams->Num;
|
||||
NumExam++)
|
||||
if (Exams->Lst[NumExam].UncheckedOrChecked == Cns_CHECKED)
|
||||
if (Exams->Lst[NumExam].Selected)
|
||||
{
|
||||
sprintf (LongStr,"%ld",Exams->Lst[NumExam].ExaCod);
|
||||
if ((*ExamsSelectedCommas)[0])
|
||||
|
|
|
@ -983,10 +983,8 @@ static void ExaSes_ParsFormSession (void *Session)
|
|||
|
||||
static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Groups;
|
||||
unsigned NumGrpTyp;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
@ -1009,14 +1007,13 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
|||
HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("exa_groups",
|
||||
"SesCod",
|
||||
SesCod) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"WholeCrs\" value=\"Y\"%s"
|
||||
" onclick=\"uncheckChildren(this,'GrpCods')\"",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Grp_DB_CheckIfAssociatedToGrps ("exa_groups",
|
||||
"SesCod",
|
||||
SesCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
Grp_WriteTheWholeCourse ();
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -72,7 +72,7 @@ typedef enum
|
|||
struct Exa_ExamSelected
|
||||
{
|
||||
long ExaCod; // Exam code
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked; // Is this exam selected when seeing match results?
|
||||
bool Selected; // Is this exam selected when seeing match results?
|
||||
};
|
||||
|
||||
struct Exa_Exam
|
||||
|
|
|
@ -990,7 +990,6 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
|
|||
HTM_TxtF ("[%s]",Txt_FORUM_Post_banned);
|
||||
break;
|
||||
case Cns_ENABLED:
|
||||
default:
|
||||
if (Subject[0])
|
||||
HTM_Txt (Subject);
|
||||
else
|
||||
|
@ -1432,10 +1431,8 @@ static void For_PutIconsForums (__attribute__((unused)) void *Args)
|
|||
|
||||
static void For_PutFormWhichForums (const struct For_Forums *Forums)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_FORUM_WHICH_FORUM[For_NUM_FORUM_SETS];
|
||||
For_ForumSet_t ForumSet;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Form to select which forums I want to see:
|
||||
- all my forums
|
||||
|
@ -1451,12 +1448,11 @@ static void For_PutFormWhichForums (const struct For_Forums *Forums)
|
|||
{
|
||||
HTM_LI_Begin (NULL);
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = (ForumSet == Forums->ForumSet) ? Cns_UNCHECKED :
|
||||
Cns_CHECKED;
|
||||
HTM_INPUT_RADIO ("ForumSet",HTM_SUBMIT_ON_CLICK,
|
||||
"value=\"%u\"%s",
|
||||
(unsigned) ForumSet,
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
(ForumSet == Forums->ForumSet) ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_FORUM_WHICH_FORUM[ForumSet]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_LI_End ();
|
||||
|
|
|
@ -908,7 +908,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
|
|||
for (NumGame = 0;
|
||||
NumGame < Games->Num;
|
||||
NumGame++)
|
||||
Games->Lst[NumGame].UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Games->Lst[NumGame].Selected = false;
|
||||
|
||||
/* Set some games as selected */
|
||||
for (Ptr = Games->GamCodsSelected;
|
||||
|
@ -925,7 +925,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
|
|||
NumGame++)
|
||||
if (Games->Lst[NumGame].GamCod == GamCod)
|
||||
{
|
||||
Games->Lst[NumGame].UncheckedOrChecked = Cns_CHECKED;
|
||||
Games->Lst[NumGame].Selected = true;
|
||||
Games->NumSelected++;
|
||||
break;
|
||||
}
|
||||
|
@ -937,7 +937,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
|
|||
for (NumGame = 0;
|
||||
NumGame < Games->Num;
|
||||
NumGame++)
|
||||
Games->Lst[NumGame].UncheckedOrChecked = Cns_CHECKED;
|
||||
Games->Lst[NumGame].Selected = true;
|
||||
Games->NumSelected = Games->Num;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ typedef enum
|
|||
struct Gam_GameSelected
|
||||
{
|
||||
long GamCod; // Game code
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked; // Is this game selected when seeing match results?
|
||||
bool Selected; // Is this game selected when seeing match results?
|
||||
};
|
||||
|
||||
struct Gam_Game
|
||||
|
|
71
swad_group.c
71
swad_group.c
|
@ -409,10 +409,8 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
|
|||
|
||||
static void Grp_PutCheckboxAllGrps (void)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_All_groups;
|
||||
Usr_Can_t ICanSelUnselGroup;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
|
@ -430,13 +428,11 @@ static void Grp_PutCheckboxAllGrps (void)
|
|||
|
||||
HTM_DIV_Begin ("class=\"CONTEXT_OPT\"");
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
||||
UncheckedOrChecked = (ICanSelUnselGroup == Usr_CAN &&
|
||||
Gbl.Crs.Grps.AllGrps) ? Cns_UNCHECKED :
|
||||
Cns_CHECKED;
|
||||
HTM_INPUT_CHECKBOX ("AllGroups",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
(ICanSelUnselGroup == Usr_CAN) ? " onclick=\"togglecheckChildren(this,'GrpCods')\"" :
|
||||
"value=\"Y\"%s",
|
||||
ICanSelUnselGroup == Usr_CAN ? (Gbl.Crs.Grps.AllGrps ? " checked=\"checked\""
|
||||
" onclick=\"togglecheckChildren(this,'GrpCods')\"" :
|
||||
" onclick=\"togglecheckChildren(this,'GrpCods')\"") :
|
||||
" disabled=\"disabled\"");
|
||||
HTM_NBSPTxt (Txt_All_groups);
|
||||
HTM_LABEL_End ();
|
||||
|
@ -1635,7 +1631,6 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
|
|||
Grp_WhichIsAssociatedToGrp_t WhichIsAssociatedToGrp,
|
||||
long Cod) // Assignment, attendance event, survey, exam event or match
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
static const struct
|
||||
{
|
||||
const char *Table;
|
||||
|
@ -1652,7 +1647,7 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
|
|||
unsigned NumGrpThisType;
|
||||
bool IBelongToThisGroup;
|
||||
struct Group *Grp;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
bool AssociatedToGrp;
|
||||
|
||||
/***** Write heading *****/
|
||||
Grp_WriteGrpHead (GrpTyp);
|
||||
|
@ -1669,12 +1664,12 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
|
|||
Grp = &(GrpTyp->LstGrps[NumGrpThisType]);
|
||||
IBelongToThisGroup = Grp_CheckIfGrpIsInList (Grp->GrpCod,&LstGrpsIBelong);
|
||||
|
||||
UncheckedOrChecked = Cns_UNCHECKED;
|
||||
if (Cod > 0) // Cod == -1L means new item, assignment, event, survey, exam event or match
|
||||
if (Grp_DB_CheckIfAssociatedToGrp (AssociationsToGrps[WhichIsAssociatedToGrp].Table,
|
||||
AssociationsToGrps[WhichIsAssociatedToGrp].Field,
|
||||
Cod,Grp->GrpCod))
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
AssociatedToGrp = Grp_DB_CheckIfAssociatedToGrp (AssociationsToGrps[WhichIsAssociatedToGrp].Table,
|
||||
AssociationsToGrps[WhichIsAssociatedToGrp].Field,
|
||||
Cod,Grp->GrpCod);
|
||||
else
|
||||
AssociatedToGrp = false;
|
||||
|
||||
/* Put checkbox to select the group */
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1685,7 +1680,8 @@ void Grp_ListGrpsToEditAsgAttSvyEvtMch (struct GroupType *GrpTyp,
|
|||
"id=\"Grp%ld\" value=\"%ld\"%s%s"
|
||||
" onclick=\"uncheckParent(this,'WholeCrs')\"",
|
||||
Grp->GrpCod,Grp->GrpCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
AssociatedToGrp ? " checked=\"checked\"" :
|
||||
"",
|
||||
(IBelongToThisGroup ||
|
||||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
|
@ -1849,7 +1845,6 @@ static void Grp_ShowWarningToStdsToChangeGrps (void)
|
|||
static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
|
||||
unsigned *NumGrpsThisTypeIBelong)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
struct ListCodGrps LstGrpsIBelong;
|
||||
unsigned NumGrpThisType;
|
||||
struct Group *Grp;
|
||||
|
@ -1857,7 +1852,6 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
|
|||
bool IBelongToAClosedGroup;
|
||||
Usr_Can_t ICanChangeMySelectionForThisGrpTyp;
|
||||
Usr_Can_t ICanChangeMySelectionForThisGrp;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
char StrGrpCod[32];
|
||||
|
||||
/***** Write heading *****/
|
||||
|
@ -1974,8 +1968,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
|
|||
|
||||
HTM_TD_Begin (IBelongToThisGroup ? "class=\"LM BG_HIGHLIGHT\"" :
|
||||
"class=\"LM\"");
|
||||
UncheckedOrChecked = IBelongToThisGroup ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
|
||||
snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod);
|
||||
if (Gbl.Usrs.Me.Role.Logged == Rol_STD && // If I am a student
|
||||
!GrpTyp->MultipleEnrolment && // ...and the enrolment is single
|
||||
|
@ -1986,7 +1979,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
|
|||
HTM_INPUT_RADIO (StrGrpCod,HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"id=\"Grp%ld\" value=\"%ld\"%s%s",
|
||||
Grp->GrpCod,Grp->GrpCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked], // Group selected?
|
||||
IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
|
||||
ICanChangeMySelectionForThisGrp == Usr_CAN ? "" :
|
||||
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
|
||||
" disabled=\"disabled\""); // I can not register
|
||||
|
@ -1995,7 +1988,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
|
|||
"id=\"Grp%ld\" value=\"%ld\"%s%s"
|
||||
" onclick=\"selectUnselectRadio(this,this.form.GrpCod%ld,%u)\"",
|
||||
Grp->GrpCod,Grp->GrpCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked], // Group selected?
|
||||
IBelongToThisGroup ? " checked=\"checked\"" : "", // Group selected?
|
||||
ICanChangeMySelectionForThisGrp == Usr_CAN ? "" :
|
||||
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
|
||||
" disabled=\"disabled\"", // I can not register
|
||||
|
@ -2006,7 +1999,7 @@ static Usr_Can_t Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
|
|||
HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Grp%ld\" value=\"%ld\"%s%s",
|
||||
Grp->GrpCod,Grp->GrpCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked], // Group selected?
|
||||
IBelongToThisGroup ? " checked=\"checked\"" : "",
|
||||
ICanChangeMySelectionForThisGrp == Usr_CAN ? "" :
|
||||
IBelongToThisGroup ? " readonly" : // I can not unregister (disabled does not work because the value is not submitted)
|
||||
" disabled=\"disabled\""); // I can not register
|
||||
|
@ -2066,11 +2059,9 @@ void Grp_ShowLstGrpsToChgOtherUsrsGrps (long UsrCod)
|
|||
|
||||
static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
struct ListCodGrps LstGrpsUsrBelongs;
|
||||
unsigned NumGrpThisType;
|
||||
bool UsrBelongsToThisGroup;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
struct Group *Grp;
|
||||
char StrGrpCod[32];
|
||||
|
||||
|
@ -2101,13 +2092,12 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
|
|||
/* Put checkbox to select the group */
|
||||
// Always checkbox, not radio, because the role in the form may be teacher,
|
||||
// so if he/she is registered as teacher, he/she can belong to several groups
|
||||
UncheckedOrChecked = UsrBelongsToThisGroup ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
snprintf (StrGrpCod,sizeof (StrGrpCod),"GrpCod%ld",GrpTyp->GrpTypCod);
|
||||
HTM_INPUT_CHECKBOX (StrGrpCod,HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Grp%ld\" value=\"%ld\"%s",
|
||||
Grp->GrpCod,Grp->GrpCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
UsrBelongsToThisGroup ? " checked=\"checked\"" :
|
||||
""); // I can not register
|
||||
|
||||
/* End cell for checkbox */
|
||||
HTM_TD_End ();
|
||||
|
@ -2131,14 +2121,13 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
|
|||
|
||||
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_users_with_no_group;
|
||||
unsigned NumGrpThisType;
|
||||
unsigned NumGrpSel;
|
||||
struct ListCodGrps LstGrpsIBelong;
|
||||
bool IBelongToThisGroup;
|
||||
Usr_Can_t ICanSelUnselGroup;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
bool Checked;
|
||||
struct Group *Grp;
|
||||
Rol_Role_t Role;
|
||||
|
||||
|
@ -2185,14 +2174,14 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
|
|||
|
||||
/* This group should be checked? */
|
||||
if (Gbl.Crs.Grps.AllGrps)
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
Checked = true;
|
||||
else
|
||||
for (NumGrpSel = 0, UncheckedOrChecked = Cns_UNCHECKED;
|
||||
for (NumGrpSel = 0, Checked = false;
|
||||
NumGrpSel < Gbl.Crs.Grps.LstGrpsSel.NumGrps;
|
||||
NumGrpSel++)
|
||||
if (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrpSel] == Grp->GrpCod)
|
||||
{
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
Checked = true;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2204,7 +2193,8 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
|
|||
HTM_INPUT_CHECKBOX ("GrpCods",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Grp%ld\" value=\"%ld\"%s%s",
|
||||
Grp->GrpCod,Grp->GrpCod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"",
|
||||
ICanSelUnselGroup == Usr_CAN ? " onclick=\"checkParent(this,'AllGroups')\"" :
|
||||
" disabled=\"disabled\"");
|
||||
HTM_TD_End ();
|
||||
|
@ -2227,20 +2217,20 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
|
|||
{
|
||||
case Usr_CAN:
|
||||
if (Gbl.Crs.Grps.AllGrps)
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
Checked = true;
|
||||
else
|
||||
for (NumGrpSel = 0, UncheckedOrChecked = Cns_UNCHECKED;
|
||||
for (NumGrpSel = 0, Checked = false;
|
||||
NumGrpSel < Gbl.Crs.Grps.LstGrpsSel.NumGrps;
|
||||
NumGrpSel++)
|
||||
if (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrpSel] == -(GrpTyp->GrpTypCod))
|
||||
{
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
Checked = true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Usr_CAN_NOT:
|
||||
default:
|
||||
UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Checked = false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2251,8 +2241,9 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
|
|||
"id=\"Grp%ld\" value=\"%ld\"%s"
|
||||
" onclick=\"checkParent(this,'AllGroups')\"",
|
||||
-GrpTyp->GrpTypCod,-GrpTyp->GrpTypCod,
|
||||
ICanSelUnselGroup == Usr_CAN ? HTM_CheckedTxt[UncheckedOrChecked] :
|
||||
" disabled=\"disabled\"");
|
||||
ICanSelUnselGroup == Usr_CAN ? (Checked ? " checked=\"checked\"" :
|
||||
"") :
|
||||
" disabled=\"disabled\"");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Column closed/open */
|
||||
|
|
|
@ -211,7 +211,7 @@ void Ind_ReqIndicatorsCourses (void)
|
|||
for (Ind = 0, NumCrssToList = 0;
|
||||
Ind <= Ind_NUM_INDICATORS;
|
||||
Ind++)
|
||||
if (Indicators.IndicatorsSelected[Ind] == Cns_CHECKED)
|
||||
if (Indicators.IndicatorsSelected[Ind])
|
||||
NumCrssToList += NumCrssWithIndicatorYes[Ind];
|
||||
if (Ind_GetIfShowBigList (&Indicators,NumCrssToList))
|
||||
{
|
||||
|
@ -314,7 +314,7 @@ static void Ind_GetParNumIndicators (struct Ind_Indicators *Indicators)
|
|||
for (Ind = 0;
|
||||
Ind <= Ind_NUM_INDICATORS;
|
||||
Ind++)
|
||||
Indicators->IndicatorsSelected[Ind] = Cns_UNCHECKED;
|
||||
Indicators->IndicatorsSelected[Ind] = false;
|
||||
|
||||
/* Set indicators selected */
|
||||
for (Ptr = Indicators->StrIndicatorsSelected;
|
||||
|
@ -330,7 +330,7 @@ static void Ind_GetParNumIndicators (struct Ind_Indicators *Indicators)
|
|||
Ind <= Ind_NUM_INDICATORS;
|
||||
Ind++)
|
||||
if ((long) Ind == Indicator)
|
||||
Indicators->IndicatorsSelected[Ind] = Cns_CHECKED;
|
||||
Indicators->IndicatorsSelected[Ind] = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -338,7 +338,7 @@ static void Ind_GetParNumIndicators (struct Ind_Indicators *Indicators)
|
|||
for (Ind = 0;
|
||||
Ind <= Ind_NUM_INDICATORS;
|
||||
Ind++)
|
||||
Indicators->IndicatorsSelected[Ind] = Cns_CHECKED;
|
||||
Indicators->IndicatorsSelected[Ind] = true;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -438,7 +438,6 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic
|
|||
unsigned NumCrss,
|
||||
Frm_PutForm_t PutForm)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_HIERARCHY_PLURAL_Abc[Hie_NUM_LEVELS];
|
||||
extern const char *Txt_Total;
|
||||
char *ClassNormal;
|
||||
|
@ -467,8 +466,8 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic
|
|||
Ind <= Ind_NUM_INDICATORS;
|
||||
Ind++)
|
||||
{
|
||||
Class = (Indicators->IndicatorsSelected[Ind] == Cns_CHECKED) ? ClassHighlight :
|
||||
ClassNormal;
|
||||
Class = Indicators->IndicatorsSelected[Ind] ? ClassHighlight :
|
||||
ClassNormal;
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
if (PutForm == Frm_PUT_FORM)
|
||||
|
@ -477,7 +476,8 @@ static void Ind_ShowNumCoursesWithIndicators (const struct Ind_Indicators *Indic
|
|||
HTM_INPUT_CHECKBOX ("Indicators",HTM_SUBMIT_ON_CHANGE,
|
||||
"id=\"Indicators%u\" value=\"%u\"%s",
|
||||
Ind,Ind,
|
||||
HTM_CheckedTxt[Indicators->IndicatorsSelected[Ind]]);
|
||||
Indicators->IndicatorsSelected[Ind] ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -688,13 +688,13 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
|
|||
|
||||
/* Get stored number of indicators of this course */
|
||||
NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod);
|
||||
if (Indicators->IndicatorsSelected[NumIndicators] == Cns_CHECKED)
|
||||
if (Indicators->IndicatorsSelected[NumIndicators])
|
||||
{
|
||||
/* Compute and store indicators */
|
||||
Ind_ComputeAndStoreIndicatorsCrs (CrsCod,(int) NumIndicators,&IndicatorsCrs);
|
||||
|
||||
/* The number of indicators may have changed */
|
||||
if (Indicators->IndicatorsSelected[IndicatorsCrs.NumIndicators] == Cns_CHECKED)
|
||||
if (Indicators->IndicatorsSelected[IndicatorsCrs.NumIndicators])
|
||||
{
|
||||
ActCod = Act_GetActCod (ActReqStaCrs);
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ struct Ind_Indicators
|
|||
long DegTypCod;
|
||||
long DptCod;
|
||||
char StrIndicatorsSelected[Ind_MAX_SIZE_INDICATORS_SELECTED + 1];
|
||||
Cns_UncheckedOrChecked_t IndicatorsSelected[1 + Ind_NUM_INDICATORS];
|
||||
bool IndicatorsSelected[1 + Ind_NUM_INDICATORS];
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
34
swad_info.c
34
swad_info.c
|
@ -132,8 +132,7 @@ static Act_Action_t Inf_ActionsInfo[Inf_NUM_SOURCES][Inf_NUM_TYPES] =
|
|||
/*****************************************************************************/
|
||||
|
||||
static void Inf_PutIconToViewInfo (void *Type);
|
||||
static void Inf_PutCheckboxForceStdsToReadInfo (bool MustBeRead,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled);
|
||||
static void Inf_PutCheckboxForceStdsToReadInfo (bool MustBeRead,bool Disabled);
|
||||
static void Inf_PutCheckboxConfirmIHaveReadInfo (void);
|
||||
static bool Inf_GetMustBeReadFromForm (void);
|
||||
static bool Inf_GetIfIHaveReadFromForm (void);
|
||||
|
@ -176,9 +175,10 @@ void Inf_ShowInfo (void)
|
|||
extern const char *Txt_No_information;
|
||||
struct Syl_Syllabus Syllabus;
|
||||
struct Inf_FromDB FromDB;
|
||||
bool Disabled;
|
||||
Usr_Can_t ICanEdit = (Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
|
||||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
|
||||
Usr_CAN_NOT;
|
||||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) ? Usr_CAN :
|
||||
Usr_CAN_NOT;
|
||||
bool ShowWarningNoInfo = false;
|
||||
static void (*FunctionToDrawContextualIcons[Usr_NUM_CAN]) (void *Args) =
|
||||
{
|
||||
|
@ -232,11 +232,10 @@ void Inf_ShowInfo (void)
|
|||
if (FromDB.Src != Inf_NONE)
|
||||
{
|
||||
/***** Contextual menu *****/
|
||||
// Checkbox to force students to read this couse info
|
||||
Mnu_ContextMenuBegin ();
|
||||
Inf_PutCheckboxForceStdsToReadInfo (FromDB.MustBeRead,
|
||||
(Gbl.Usrs.Me.Role.Logged == Rol_NET) ? Cns_DISABLED :
|
||||
Cns_ENABLED); // Non-editing teachers can not change the status of checkbox);
|
||||
Disabled = (Gbl.Usrs.Me.Role.Logged == Rol_NET); // Non-editing teachers can not change the status of checkbox
|
||||
Inf_PutCheckboxForceStdsToReadInfo (FromDB.MustBeRead,Disabled); // Checkbox to force students...
|
||||
// ...to read this couse info
|
||||
Mnu_ContextMenuEnd ();
|
||||
}
|
||||
break;
|
||||
|
@ -347,8 +346,7 @@ void Inf_PutIconToEditInfo (void *Type)
|
|||
/********** Put a form (checkbox) to force students to read info *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Inf_PutCheckboxForceStdsToReadInfo (bool MustBeRead,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled)
|
||||
static void Inf_PutCheckboxForceStdsToReadInfo (bool MustBeRead,bool Disabled)
|
||||
{
|
||||
extern Syl_WhichSyllabus_t Syl_WhichSyllabus[Syl_NUM_WHICH_SYLLABUS];
|
||||
extern const char *Txt_Force_students_to_read_this_information;
|
||||
|
@ -368,7 +366,7 @@ static void Inf_PutCheckboxForceStdsToReadInfo (bool MustBeRead,
|
|||
Inf_Actions[Gbl.Crs.Info.Type].FuncPars,
|
||||
Inf_Actions[Gbl.Crs.Info.Type].Args,
|
||||
"MustBeRead",
|
||||
MustBeRead,DisabledOrEnabled,
|
||||
MustBeRead,Disabled,
|
||||
Txt_Force_students_to_read_this_information,
|
||||
Txt_Force_students_to_read_this_information);
|
||||
}
|
||||
|
@ -815,7 +813,6 @@ void Inf_FormsToSelSendInfo (void)
|
|||
extern const char *Hlp_COURSE_FAQ_edit;
|
||||
extern const char *Hlp_COURSE_Links_edit;
|
||||
extern const char *Hlp_COURSE_Assessment_edit;
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Source_of_information;
|
||||
extern const char *Txt_INFO_SRC_FULL_TEXT[Inf_NUM_SOURCES];
|
||||
extern const char *Txt_INFO_SRC_HELP[Inf_NUM_SOURCES];
|
||||
|
@ -823,7 +820,6 @@ void Inf_FormsToSelSendInfo (void)
|
|||
struct Inf_FromDB FromDB;
|
||||
Inf_Src_t InfoSrc;
|
||||
bool InfoAvailable[Inf_NUM_SOURCES];
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
static Act_Action_t Inf_ActionsSelecInfoSrc[Inf_NUM_TYPES] =
|
||||
{
|
||||
[Inf_INFORMATION ] = ActSelInfSrcCrsInf,
|
||||
|
@ -904,18 +900,16 @@ void Inf_FormsToSelSendInfo (void)
|
|||
"");
|
||||
Frm_BeginForm (Inf_ActionsSelecInfoSrc[Gbl.Crs.Info.Type]);
|
||||
Syl_PutParWhichSyllabus (&Syllabus.WhichSyllabus);
|
||||
UncheckedOrChecked = (InfoSrc == FromDB.Src) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO ("InfoSrc",InfoSrc != FromDB.Src &&
|
||||
(InfoSrc == Inf_NONE ||
|
||||
InfoAvailable[InfoSrc]) ? HTM_SUBMIT_ON_CLICK :
|
||||
HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"id=\"InfoSrc%u\" value=\"%u\"%s%s",
|
||||
"id=\"InfoSrc%u\" value=\"%u\"%s",
|
||||
(unsigned) InfoSrc,(unsigned) InfoSrc,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
(InfoSrc == Inf_NONE ||
|
||||
InfoAvailable[InfoSrc]) ? "" : // Info available for this source
|
||||
" disabled=\"disabled\"");
|
||||
InfoSrc == FromDB.Src ? " checked=\"checked\"" :
|
||||
(InfoSrc == Inf_NONE ||
|
||||
InfoAvailable[InfoSrc]) ? "" : // Info available for this source
|
||||
" disabled=\"disabled\"");
|
||||
Frm_EndForm ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -1266,18 +1266,9 @@ void Lay_PutContextualLinkIconText (Act_Action_t NextAction,const char *Anchor,
|
|||
void Lay_PutContextualCheckbox (Act_Action_t NextAction,
|
||||
void (*FuncPars) (void *Args),void *Args,
|
||||
const char *CheckboxName,
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
bool Checked,bool Disabled,
|
||||
const char *Title,const char *Text)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *HTM_DisabledTxt[Cns_NUM_DISABLED_ENABLED];
|
||||
static const char *Class[Cns_NUM_UNCHECKED_CHECKED] =
|
||||
{
|
||||
[Cns_UNCHECKED] = "CHECKBOX_UNCHECKED",
|
||||
[Cns_CHECKED ] = "CHECKBOX_CHECKED",
|
||||
};
|
||||
|
||||
/***** Separator *****/
|
||||
if (Text)
|
||||
HTM_SP (); // This space is necessary to enable
|
||||
|
@ -1290,7 +1281,10 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
|
|||
|
||||
/***** Begin container *****/
|
||||
HTM_DIV_Begin ("class=\"CONTEXT_OPT %s FORM_OUT_%s BOLD\" title=\"%s\"",
|
||||
Class[UncheckedOrChecked],The_GetSuffix (),Title);
|
||||
Checked ? "CHECKBOX_CHECKED" :
|
||||
"CHECKBOX_UNCHECKED",
|
||||
The_GetSuffix (),
|
||||
Title);
|
||||
|
||||
/***** Begin label *****/
|
||||
HTM_LABEL_Begin (NULL);
|
||||
|
@ -1298,8 +1292,10 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
|
|||
/****** Checkbox *****/
|
||||
HTM_INPUT_CHECKBOX (CheckboxName,HTM_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
HTM_DisabledTxt[DisabledOrEnabled]);
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"",
|
||||
Disabled ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
|
||||
/***** Text *****/
|
||||
if (Text)
|
||||
|
|
|
@ -81,8 +81,7 @@ void Lay_PutContextualLinkIconText (Act_Action_t NextAction,const char *Anchor,
|
|||
void Lay_PutContextualCheckbox (Act_Action_t NextAction,
|
||||
void (*FuncPars) (void *Args),void *Args,
|
||||
const char *CheckboxName,
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
bool Checked,bool Disabled,
|
||||
const char *Title,const char *Text);
|
||||
|
||||
void Lay_WriteAboutZone (void);
|
||||
|
|
13
swad_match.c
13
swad_match.c
|
@ -1241,10 +1241,8 @@ static void Mch_ParsFormMatch (void *Match)
|
|||
|
||||
static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Groups;
|
||||
unsigned NumGrpTyp;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get list of groups types and groups in this course *****/
|
||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
@ -1262,20 +1260,21 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
|||
|
||||
/***** First row: checkbox to select the whole course *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("colspan=\"7\" class=\"LM DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = Grp_DB_CheckIfAssociatedToGrps ("mch_groups",
|
||||
"MchCod",
|
||||
MchCod) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("WholeCrs",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"WholeCrs\" value=\"Y\"%s"
|
||||
" onclick=\"uncheckChildren(this,'GrpCods')\"",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Grp_DB_CheckIfAssociatedToGrps ("mch_groups",
|
||||
"MchCod",
|
||||
MchCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
Grp_WriteTheWholeCourse ();
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** List the groups for each group type *****/
|
||||
|
|
|
@ -518,7 +518,6 @@ static void MchRes_ShowResultsEnd (void)
|
|||
|
||||
static void MchRes_ListGamesToSelect (struct Gam_Games *Games)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Par_CodeStr[Par_NUM_PAR_COD];
|
||||
extern const char *Txt_Games;
|
||||
extern const char *Txt_Game;
|
||||
|
@ -565,7 +564,8 @@ static void MchRes_ListGamesToSelect (struct Gam_Games *Games)
|
|||
HTM_INPUT_CHECKBOX (Par_CodeStr[ParCod_Gam],HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Gam%u\" value=\"%ld\"%s",
|
||||
NumGame,Games->Lst[NumGame].GamCod,
|
||||
HTM_CheckedTxt[Games->Lst[NumGame].UncheckedOrChecked]);
|
||||
Games->Lst[NumGame].Selected ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"RT DAT_%s %s\"",
|
||||
|
@ -671,7 +671,7 @@ static void MchRes_BuildGamesSelectedCommas (struct Gam_Games *Games,
|
|||
for (NumGame = 0;
|
||||
NumGame < Games->Num;
|
||||
NumGame++)
|
||||
if (Games->Lst[NumGame].UncheckedOrChecked == Cns_CHECKED)
|
||||
if (Games->Lst[NumGame].Selected)
|
||||
{
|
||||
sprintf (LongStr,"%ld",Games->Lst[NumGame].GamCod);
|
||||
if ((*GamesSelectedCommas)[0])
|
||||
|
|
|
@ -1900,17 +1900,14 @@ static void Msg_ShowFormToFilterMsgs (const struct Msg_Messages *Messages)
|
|||
|
||||
static void Msg_ShowFormToShowOnlyUnreadMessages (const struct Msg_Messages *Messages)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_only_unread_messages;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Put checkbox to select whether to show only unread (received) messages *****/
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
||||
UncheckedOrChecked = Messages->ShowOnlyUnreadMsgs ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("OnlyUnreadMsgs",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Messages->ShowOnlyUnreadMsgs ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_only_unread_messages);
|
||||
HTM_LABEL_End ();
|
||||
}
|
||||
|
|
|
@ -1615,14 +1615,12 @@ void Ntf_MarkAllNotifAsSeen (void)
|
|||
void Ntf_PutFormChangeNotifSentByEMail (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Settings_notifications;
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Save_changes;
|
||||
extern const char *Txt_Notifications;
|
||||
extern const char *Txt_Create_BR_notification;
|
||||
extern const char *Txt_Notify_me_BR_by_email;
|
||||
extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS];
|
||||
Ntf_NotifyEvent_t NotifyEvent;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Begin section with settings on privacy *****/
|
||||
HTM_SECTION_Begin (Ntf_NOTIFICATIONS_ID);
|
||||
|
@ -1661,23 +1659,19 @@ void Ntf_PutFormChangeNotifSentByEMail (void)
|
|||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"CM\"");
|
||||
UncheckedOrChecked = (Gbl.Usrs.Me.UsrDat.NtfEvents.CreateNotif &
|
||||
(1 << NotifyEvent)) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX (Ntf_ParNotifMeAboutNotifyEvents[NotifyEvent],
|
||||
HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
HTM_INPUT_CHECKBOX (Ntf_ParNotifMeAboutNotifyEvents[NotifyEvent],HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
(Gbl.Usrs.Me.UsrDat.NtfEvents.CreateNotif &
|
||||
(1 << NotifyEvent)) ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"CM\"");
|
||||
UncheckedOrChecked = (Gbl.Usrs.Me.UsrDat.NtfEvents.SendEmail &
|
||||
(1 << NotifyEvent)) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX (Ntf_ParEmailMeAboutNotifyEvents[NotifyEvent],
|
||||
HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
HTM_INPUT_CHECKBOX (Ntf_ParEmailMeAboutNotifyEvents[NotifyEvent],HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
(Gbl.Usrs.Me.UsrDat.NtfEvents.SendEmail &
|
||||
(1 << NotifyEvent)) ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
|
@ -163,10 +163,8 @@ static void Pri_PutFormVisibility (const char *TxtLabel,
|
|||
Pri_Visibility_t CurrentVisibilityInDB,
|
||||
unsigned MaskAllowedVisibility)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_PRIVACY_OPTIONS[Pri_NUM_OPTIONS_PRIVACY];
|
||||
Pri_Visibility_t Visibility;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
|
@ -191,15 +189,14 @@ static void Pri_PutFormVisibility (const char *TxtLabel,
|
|||
HTM_LI_Begin ("class=\"DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = (Visibility == CurrentVisibilityInDB) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO (ParName,(Action == ActUnk) ? HTM_DONT_SUBMIT_ON_CLICK :
|
||||
HTM_SUBMIT_ON_CLICK,
|
||||
HTM_INPUT_RADIO (ParName,Action == ActUnk ? HTM_DONT_SUBMIT_ON_CLICK :
|
||||
HTM_SUBMIT_ON_CLICK,
|
||||
"value=\"%u\"%s%s",
|
||||
(unsigned) Visibility,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
(Action == ActUnk) ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
Visibility == CurrentVisibilityInDB ? " checked=\"checked\"" :
|
||||
"",
|
||||
Action == ActUnk ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_PRIVACY_OPTIONS[Visibility]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_LI_End ();
|
||||
|
|
|
@ -307,16 +307,13 @@ PrjCfg_RubricType_t PrjCfg_GetRubricFromString (const char *Str)
|
|||
|
||||
static void PrjCfg_ShowFormNETCanCreate (const struct PrjCfg_Config *Config)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Non_editing_teachers_can_create_new_projects;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
HTM_LABEL_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
|
||||
UncheckedOrChecked = Config->NETCanCreate ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("NETCanCreate",HTM_SUBMIT_ON_CHANGE,
|
||||
"id=\"NETCanCreate\" value=\"Y\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Config->NETCanCreate ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_Non_editing_teachers_can_create_new_projects);
|
||||
HTM_LABEL_End ();
|
||||
}
|
||||
|
|
|
@ -210,12 +210,11 @@ void Qst_ShowFormRequestEditQsts (struct Qst_Questions *Questions)
|
|||
|
||||
void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Types_of_answers;
|
||||
extern const char *Txt_All_types_of_answers;
|
||||
extern const char *Txt_TST_STR_ANSWER_TYPES[Qst_NUM_ANS_TYPES];
|
||||
Qst_AnswerType_t AnsType;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
bool Checked;
|
||||
char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
const char *Ptr;
|
||||
|
||||
|
@ -233,11 +232,10 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
|||
HTM_TD_Begin ("class=\"LM\"");
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
UncheckedOrChecked = AnswerTypes->All ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("AllAnsTypes",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'AnswerType');\"",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
AnswerTypes->All ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_NBSPTxt (Txt_All_types_of_answers);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -251,14 +249,14 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
|||
{
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Checked = false;
|
||||
Ptr = AnswerTypes->List;
|
||||
while (*Ptr)
|
||||
{
|
||||
Par_GetNextStrUntilSeparParMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
|
||||
if (Qst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr) == AnsType)
|
||||
{
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
Checked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -268,7 +266,8 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
|||
"value=\"%u\"%s"
|
||||
" onclick=\"checkParent(this,'AllAnsTypes');\"",
|
||||
(unsigned) AnsType,
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_NBSPTxt (Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -915,10 +914,8 @@ void Qst_WriteHeadingRowQuestionsForEdition (struct Qst_Questions *Questions)
|
|||
|
||||
void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
static unsigned UniqueId = 0;
|
||||
char *Id;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get and show question data *****/
|
||||
if (Qst_GetQstDataByCod (&Questions->Question))
|
||||
|
@ -984,11 +981,10 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd)
|
|||
Frm_BeginForm (ActChgShfTstQst);
|
||||
Qst_PutParsEditQst (Questions);
|
||||
Par_PutParUnsigned (NULL,"Order",(unsigned) Questions->SelectedOrder);
|
||||
UncheckedOrChecked = Questions->Question.Answer.Shuffle ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("Shuffle",HTM_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Questions->Question.Answer.Shuffle ? " checked=\"checked\"" :
|
||||
"");
|
||||
Frm_EndForm ();
|
||||
}
|
||||
HTM_TD_End ();
|
||||
|
@ -1233,11 +1229,9 @@ void Qst_PutCheckboxToSelectAllQuestions (void)
|
|||
void Qst_WriteQuestionRowForSelection (unsigned QstInd,
|
||||
struct Qst_Question *Question)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_TST_STR_ANSWER_TYPES[Qst_NUM_ANS_TYPES];
|
||||
static unsigned UniqueId = 0;
|
||||
char *Id;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Get and show questvoidion data *****/
|
||||
if (Qst_GetQstDataByCod (Question))
|
||||
|
@ -1297,12 +1291,12 @@ void Qst_WriteQuestionRowForSelection (unsigned QstInd,
|
|||
|
||||
/* Write if shuffle is enabled */
|
||||
HTM_TD_Begin ("class=\"CT DAT_SMALL_%s %s\"",
|
||||
The_GetSuffix (),The_GetColorRows ());
|
||||
UncheckedOrChecked = Question->Answer.Shuffle ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
The_GetSuffix (),
|
||||
The_GetColorRows ());
|
||||
HTM_INPUT_CHECKBOX ("Shuffle",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s disabled=\"disabled\"",
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Question->Answer.Shuffle ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write stem */
|
||||
|
@ -1809,7 +1803,6 @@ void Qst_ShowFormEditOneQst (void)
|
|||
void Qst_PutFormEditOneQst (struct Qst_Question *Question)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Questions_writing_a_question;
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Question_code_X;
|
||||
extern const char *Txt_Question;
|
||||
extern const char *Txt_Tags;
|
||||
|
@ -1846,7 +1839,6 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question)
|
|||
char *Title;
|
||||
char *FuncOnChange;
|
||||
bool NewQuestion = (Question->QstCod > 0);
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
/***** Begin box *****/
|
||||
if (NewQuestion) // The question already has assigned a code
|
||||
|
@ -2018,13 +2010,11 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question)
|
|||
AnsType++)
|
||||
{
|
||||
HTM_LABEL_Begin (NULL);
|
||||
UncheckedOrChecked = (AnsType == Question->Answer.Type) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO ("AnswerType",HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"value=\"%u\"%s"
|
||||
" onclick=\"enableDisableAns(this.form);\"",
|
||||
"value=\"%u\"%s onclick=\"enableDisableAns(this.form);\"",
|
||||
(unsigned) AnsType,
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
AnsType == Question->Answer.Type ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TxtF ("%s ",Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_BR ();
|
||||
|
@ -2080,14 +2070,13 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question)
|
|||
HTM_TD_Empty (1);
|
||||
HTM_TD_Begin ("class=\"LT\"");
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
||||
UncheckedOrChecked = Question->Answer.Shuffle ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_CHECKBOX ("Shuffle",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\"%s%s",
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
(Question->Answer.Type != Qst_ANS_UNIQUE_CHOICE &&
|
||||
Question->Answer.Type != Qst_ANS_MULTIPLE_CHOICE) ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
Question->Answer.Shuffle ? " checked=\"checked\"" :
|
||||
"",
|
||||
Question->Answer.Type != Qst_ANS_UNIQUE_CHOICE &&
|
||||
Question->Answer.Type != Qst_ANS_MULTIPLE_CHOICE ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_Shuffle);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -2119,27 +2108,26 @@ void Qst_PutFormEditOneQst (struct Qst_Question *Question)
|
|||
/***** Left column: selectors *****/
|
||||
HTM_TD_Begin ("class=\"Qst_ANS_LEFT_COL %s\"",
|
||||
The_GetColorRows ());
|
||||
UncheckedOrChecked = Question->Answer.Options[NumOpt].Correct ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
|
||||
/* Radio selector for unique choice answers */
|
||||
HTM_INPUT_RADIO ("AnsUni",HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"value=\"%u\"%s%s%s"
|
||||
" onclick=\"enableDisableAns(this.form);\"",
|
||||
"value=\"%u\"%s%s%s onclick=\"enableDisableAns(this.form);\"",
|
||||
NumOpt,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
Question->Answer.Options[NumOpt].Correct ? " checked=\"checked\"" :
|
||||
"",
|
||||
NumOpt < 2 ? " required=\"required\"" : // First or second options required
|
||||
"",
|
||||
(Question->Answer.Type == Qst_ANS_UNIQUE_CHOICE) ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
Question->Answer.Type == Qst_ANS_UNIQUE_CHOICE ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
|
||||
/* Checkbox for multiple choice answers */
|
||||
HTM_INPUT_CHECKBOX ("AnsMulti",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"%u\"%s%s",
|
||||
NumOpt,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
(Question->Answer.Type == Qst_ANS_MULTIPLE_CHOICE) ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
Question->Answer.Options[NumOpt].Correct ? " checked=\"checked\"" :
|
||||
"",
|
||||
Question->Answer.Type == Qst_ANS_MULTIPLE_CHOICE ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -2276,16 +2264,12 @@ void Qst_PutFloatInputField (const char *Label,const char *Field,
|
|||
void Qst_PutTFInputField (const struct Qst_Question *Question,
|
||||
const char *Label,char Value)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
||||
UncheckedOrChecked = (Question->Answer.TF == Value) ? Cns_CHECKED :
|
||||
Cns_UNCHECKED;
|
||||
HTM_INPUT_RADIO ("AnsTF",HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"value=\"%c\"%s%s required=\"required\"",
|
||||
Value,
|
||||
HTM_CheckedTxt[UncheckedOrChecked],
|
||||
Question->Answer.TF == Value ? " checked=\"checked\"" :
|
||||
"",
|
||||
Question->Answer.Type == Qst_ANS_TRUE_FALSE ? "" :
|
||||
" disabled=\"disabled\"");
|
||||
HTM_Txt (Label);
|
||||
|
|
|
@ -199,11 +199,8 @@ void Rsc_ShowClipboardToChangeLink (const struct Rsc_Link *CurrentLink)
|
|||
/*****************************************************************************/
|
||||
|
||||
void Rsc_WriteRowClipboard (const struct Rsc_Link *Link,
|
||||
HTM_SubmitOnClick_t SubmitOnClick,
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked)
|
||||
HTM_SubmitOnClick_t SubmitOnClick,bool Checked)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
|
||||
/***** Begin list row *****/
|
||||
HTM_LI_Begin ("class=\"PRG_RSC_%s\"",The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
|
@ -212,7 +209,8 @@ void Rsc_WriteRowClipboard (const struct Rsc_Link *Link,
|
|||
HTM_INPUT_RADIO ("Link",SubmitOnClick,
|
||||
"value=\"%s_%ld\"%s",
|
||||
Rsc_ResourceTypesDB[Link->Type],Link->Cod,
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"");
|
||||
|
||||
/***** Name *****/
|
||||
Rsc_WriteLinkName (Link,Frm_DONT_PUT_FORM);
|
||||
|
|
|
@ -78,8 +78,7 @@ struct Rsc_Link
|
|||
void Rsc_ShowClipboard (void);
|
||||
void Rsc_ShowClipboardToChangeLink (const struct Rsc_Link *CurrentLink);
|
||||
void Rsc_WriteRowClipboard (const struct Rsc_Link *Link,
|
||||
HTM_SubmitOnClick_t SubmitOnClick,
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked);
|
||||
HTM_SubmitOnClick_t SubmitOnClick,bool Checked);
|
||||
void Rsc_WriteLinkName (const struct Rsc_Link *Link,Frm_PutForm_t PutFormToGo);
|
||||
|
||||
void Rsc_GetResourceTitleFromLink (const struct Rsc_Link *Link,
|
||||
|
|
|
@ -512,10 +512,8 @@ void Rol_ChangeMyRole (void)
|
|||
/*****************************************************************************/
|
||||
|
||||
void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
HTM_SubmitOnChange_t SubmitOnChange)
|
||||
bool Disabled,HTM_SubmitOnChange_t SubmitOnChange)
|
||||
{
|
||||
extern const char *HTM_DisabledTxt[Cns_NUM_DISABLED_ENABLED];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
Rol_Role_t Role;
|
||||
|
||||
|
@ -531,7 +529,8 @@ void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected,
|
|||
The_GetSuffix (),
|
||||
(RolesSelected & (1 << Role)) ? " checked=\"checked\"" :
|
||||
"",
|
||||
HTM_DisabledTxt[DisabledOrEnabled]);
|
||||
Disabled ? " disabled=\"disabled\"" :
|
||||
"");
|
||||
HTM_Txt (Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_BR ();
|
||||
|
|
|
@ -53,8 +53,7 @@ void Rol_PutFormToChangeMyRole (const char *ClassSelect);
|
|||
void Rol_ChangeMyRole (void);
|
||||
|
||||
void Rol_WriteSelectorRoles (unsigned RolesAllowed,unsigned RolesSelected,
|
||||
Cns_DisabledOrEnabled_t DisabledOrEnabled,
|
||||
HTM_SubmitOnChange_t SubmitOnChange);
|
||||
bool Disabled,HTM_SubmitOnChange_t SubmitOnChange);
|
||||
void Rol_PutParRoles (unsigned Roles);
|
||||
unsigned Rol_GetSelectedRoles (void);
|
||||
|
||||
|
|
|
@ -615,7 +615,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
|
|||
1 << Rol_NET |
|
||||
1 << Rol_TCH,
|
||||
Surveys->Svy.Roles,
|
||||
Cns_ENABLED,
|
||||
true,
|
||||
HTM_DONT_SUBMIT_ON_CHANGE);
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
@ -1703,7 +1703,7 @@ void Svy_ReqCreatOrEditSvy (void)
|
|||
1 << Rol_NET |
|
||||
1 << Rol_TCH,
|
||||
Surveys.Svy.Roles,
|
||||
Cns_DISABLED,
|
||||
false,
|
||||
HTM_DONT_SUBMIT_ON_CHANGE);
|
||||
HTM_TD_End ();
|
||||
HTM_TR_End ();
|
||||
|
|
10
swad_tag.c
10
swad_tag.c
|
@ -276,7 +276,6 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
MYSQL_RES *mysql_res,
|
||||
bool ShowOnlyEnabledTags)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
extern const char *Txt_Tags;
|
||||
extern const char *Txt_All_tags;
|
||||
extern const char *Txt_Tag_not_allowed;
|
||||
|
@ -284,7 +283,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
unsigned NumTag;
|
||||
MYSQL_ROW row;
|
||||
bool TagHidden = false;
|
||||
Cns_UncheckedOrChecked_t UncheckedOrChecked;
|
||||
bool Checked;
|
||||
const char *Ptr;
|
||||
char TagText[Tag_MAX_BYTES_TAG + 1];
|
||||
/*
|
||||
|
@ -339,7 +338,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
UncheckedOrChecked = Cns_UNCHECKED;
|
||||
Checked = false;
|
||||
if (Tags->List)
|
||||
{
|
||||
Ptr = Tags->List;
|
||||
|
@ -348,7 +347,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
Par_GetNextStrUntilSeparParMult (&Ptr,TagText,Tag_MAX_BYTES_TAG);
|
||||
if (!strcmp (row[1],TagText))
|
||||
{
|
||||
UncheckedOrChecked = Cns_CHECKED;
|
||||
Checked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -360,7 +359,8 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
HTM_INPUT_CHECKBOX ("ChkTag",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"%s\"%s onclick=\"checkParent(this,'AllTags');\"",
|
||||
row[1],
|
||||
HTM_CheckedTxt[UncheckedOrChecked]);
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_NBSPTxt (row[1]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -418,10 +418,9 @@ static void TstPrn_WriteChoAnsToFill (const struct TstPrn_PrintedQuestion *Print
|
|||
unsigned QstInd,
|
||||
struct Qst_Question *Question)
|
||||
{
|
||||
extern const char *HTM_CheckedTxt[Cns_NUM_UNCHECKED_CHECKED];
|
||||
unsigned NumOpt;
|
||||
unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question
|
||||
Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
char StrAns[3 + Cns_MAX_DECIMAL_DIGITS_UINT + 1]; // "Ansxx...x"
|
||||
|
||||
/***** Change format of answers text *****/
|
||||
|
@ -455,14 +454,18 @@ static void TstPrn_WriteChoAnsToFill (const struct TstPrn_PrintedQuestion *Print
|
|||
HTM_INPUT_RADIO (StrAns,HTM_DONT_SUBMIT_ON_CLICK,
|
||||
"id=\"Ans%010u_%u\" value=\"%u\"%s"
|
||||
" onclick=\"selectUnselectRadio(this,this.form.Ans%010u,%u);\"",
|
||||
QstInd,NumOpt,Indexes[NumOpt],
|
||||
HTM_CheckedTxt[UsrAnswers[Indexes[NumOpt]]],
|
||||
QstInd,NumOpt,
|
||||
Indexes[NumOpt],
|
||||
UsrAnswers[Indexes[NumOpt]] ? " checked=\"checked\"" :
|
||||
"",
|
||||
QstInd,Question->Answer.NumOptions);
|
||||
else // Answer.Type == Tst_ANS_MULTIPLE_CHOICE
|
||||
HTM_INPUT_CHECKBOX (StrAns,HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"id=\"Ans%010u_%u\" value=\"%u\"%s",
|
||||
QstInd,NumOpt,Indexes[NumOpt],
|
||||
HTM_CheckedTxt[UsrAnswers[Indexes[NumOpt]]]);
|
||||
QstInd,NumOpt,
|
||||
Indexes[NumOpt],
|
||||
UsrAnswers[Indexes[NumOpt]] ? " checked=\"checked\"" :
|
||||
"");
|
||||
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -915,7 +918,7 @@ void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
const struct Qst_Question *Question)
|
||||
{
|
||||
unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question
|
||||
Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
unsigned NumOpt;
|
||||
unsigned NumOptTotInQst = 0;
|
||||
unsigned NumOptCorrInQst = 0;
|
||||
|
@ -940,7 +943,7 @@ void TstPrn_ComputeChoAnsScore (struct TstPrn_PrintedQuestion *PrintedQuestion,
|
|||
if (Question->Answer.Options[Indexes[NumOpt]].Correct)
|
||||
NumOptCorrInQst++;
|
||||
|
||||
if (UsrAnswers[Indexes[NumOpt]] == Cns_CHECKED) // This answer has been selected by the user
|
||||
if (UsrAnswers[Indexes[NumOpt]]) // This answer has been selected by the user
|
||||
{
|
||||
if (Question->Answer.Options[Indexes[NumOpt]].Correct)
|
||||
NumAnsGood++;
|
||||
|
@ -1090,20 +1093,20 @@ void TstPrn_GetIndexesFromStr (const char StrIndexesOneQst[Qst_MAX_BYTES_INDEXES
|
|||
/*****************************************************************************/
|
||||
|
||||
void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Qst_MAX_BYTES_ANSWERS_ONE_QST + 1],
|
||||
Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION])
|
||||
bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION])
|
||||
{
|
||||
unsigned NumOpt;
|
||||
const char *Ptr;
|
||||
char StrOneAnswer[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||
unsigned AnsUsr;
|
||||
|
||||
/***** Initialize all answers to unchecked *****/
|
||||
/***** Initialize all answers to false *****/
|
||||
for (NumOpt = 0;
|
||||
NumOpt < Qst_MAX_OPTIONS_PER_QUESTION;
|
||||
NumOpt++)
|
||||
UsrAnswers[NumOpt] = Cns_UNCHECKED;
|
||||
UsrAnswers[NumOpt] = false;
|
||||
|
||||
/***** Set selected answers to checked *****/
|
||||
/***** Set selected answers to true *****/
|
||||
for (NumOpt = 0, Ptr = StrAnswersOneQst;
|
||||
NumOpt < Qst_MAX_OPTIONS_PER_QUESTION && *Ptr;
|
||||
NumOpt++)
|
||||
|
@ -1116,7 +1119,7 @@ void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Qst_MAX_BYTES_ANSWERS
|
|||
if (AnsUsr >= Qst_MAX_OPTIONS_PER_QUESTION)
|
||||
Err_WrongAnswerExit ();
|
||||
|
||||
UsrAnswers[AnsUsr] = Cns_CHECKED;
|
||||
UsrAnswers[AnsUsr] = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1403,7 +1406,7 @@ static void TstPrn_WriteChoAnsPrint (struct Usr_Data *UsrDat,
|
|||
extern const char *Txt_TST_Answer_given_by_the_teachers;
|
||||
unsigned NumOpt;
|
||||
unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]; // Indexes of all answers of this question
|
||||
Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION];
|
||||
struct
|
||||
{
|
||||
char *Class;
|
||||
|
@ -1439,7 +1442,7 @@ static void TstPrn_WriteChoAnsPrint (struct Usr_Data *UsrDat,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
/* Draw icon depending on user's answer */
|
||||
if (UsrAnswers[Indexes[NumOpt]] == Cns_CHECKED) // This answer has been selected by the user
|
||||
if (UsrAnswers[Indexes[NumOpt]]) // This answer has been selected by the user
|
||||
{
|
||||
switch (ICanView[TstVis_VISIBLE_CORRECT_ANSWER])
|
||||
{
|
||||
|
|
|
@ -122,7 +122,7 @@ void Qst_ChangeFormatAnswersFeedback (struct Qst_Question *Question);
|
|||
void TstPrn_GetIndexesFromStr (const char StrIndexesOneQst[Qst_MAX_BYTES_INDEXES_ONE_QST + 1], // 0 1 2 3, 3 0 2 1, etc.
|
||||
unsigned Indexes[Qst_MAX_OPTIONS_PER_QUESTION]);
|
||||
void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Qst_MAX_BYTES_ANSWERS_ONE_QST + 1],
|
||||
Cns_UncheckedOrChecked_t UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]);
|
||||
bool UsrAnswers[Qst_MAX_OPTIONS_PER_QUESTION]);
|
||||
|
||||
void TstPrn_ComputeAndShowGrade (unsigned NumQsts,double Score,double MaxGrade);
|
||||
double TstPrn_ComputeGrade (unsigned NumQsts,double Score,double MaxGrade);
|
||||
|
|
Loading…
Reference in New Issue
Block a user