Fixed bug in selection of groups related to attendance. Reported by Antonio Manuel Fernández Pérez.

This commit is contained in:
acanas 2024-03-08 10:33:08 +01:00
parent a8556b8f4d
commit f2792370ad
19 changed files with 158 additions and 137 deletions

View File

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/> <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-823415816682434587" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1458321346374226041" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

View File

@ -3274,7 +3274,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
width:276px; width:276px;
} }
} }
@media only screen and (min-width:600px) @media only screen and (min-width:600px) and (max-width:1024px)
{ /* For desktop */ { /* For desktop */
.Frm_C1 .Frm_C1
{ {
@ -3296,7 +3296,6 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
width:382px; width:382px;
} }
} }
/*
@media only screen and (min-width:1024px) @media only screen and (min-width:1024px)
{ * For desktop * { * For desktop *
.Frm_C1 .Frm_C1
@ -3319,7 +3318,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
width:700px; width:700px;
} }
} }
*/
/******************************** Class photo ********************************/ /******************************** Class photo ********************************/
.CLASSPHOTO_TITLE .CLASSPHOTO_TITLE
{ {

View File

@ -331,9 +331,10 @@ static void Asg_ParsWhichGroupsToShow (void *Assignments)
{ {
if (Assignments) if (Assignments)
{ {
Par_PutParOrder ((unsigned) ((struct Asg_Assignments *) Assignments)->SelectedOrder); Par_PutParOrder ((unsigned)
((struct Asg_Assignments *) Assignments)->SelectedOrder);
Pag_PutParPagNum (Pag_ASSIGNMENTS, Pag_PutParPagNum (Pag_ASSIGNMENTS,
((struct Asg_Assignments *) Assignments)->CurrentPage); ((struct Asg_Assignments *) Assignments)->CurrentPage);
} }
} }

View File

@ -1429,6 +1429,7 @@ static void Att_ShowEvent (struct Att_Events *Events)
Att_ShowOneEventRow (Events, Att_ShowOneEventRow (Events,
true); // Show only this event true); // Show only this event
Box_BoxTableEnd (); Box_BoxTableEnd ();
HTM_BR ();
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
{ {
@ -1553,7 +1554,7 @@ static void Att_ListEventStudents (struct Att_Events *Events)
Hlp_USERS_Attendance,Box_NOT_CLOSABLE); Hlp_USERS_Attendance,Box_NOT_CLOSABLE);
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (Att_PutParAttCod,Events,Grp_MY_GROUPS); Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt,Att_PutParAttCod,Events,NULL);
/***** Begin section with user list *****/ /***** Begin section with user list *****/
HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID); HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID);
@ -2705,7 +2706,7 @@ static void Att_ListEventsToSelect (struct Att_Events *Events,
/***** Put button to refresh *****/ /***** Put button to refresh *****/
if (NormalView) if (NormalView)
Lay_WriteLinkToUpdate (Txt_Update_attendance); Lay_WriteLinkToUpdate (Txt_Update_attendance,NULL);
/***** End form *****/ /***** End form *****/
if (NormalView) if (NormalView)

View File

@ -633,10 +633,12 @@ Me sale este error, no s
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
*/ */
#define Log_PLATFORM_VERSION "SWAD 23.66.1 (2024-02-10)" #define Log_PLATFORM_VERSION "SWAD 23.67 (2024-03-08)"
#define CSS_FILE "swad23.66.1.css" #define CSS_FILE "swad23.67.css"
#define JS_FILE "swad23.53.6.js" #define JS_FILE "swad23.53.6.js"
/* /*
Version 23.67: Mar 08, 2024 Fixed bug in selection of groups related to attendance. Reported by Antonio Manuel Fernández Pérez.
Fixed bugs in messages. (335308 lines)
Version 23.66.1: Feb 27, 2024 Changes in layout. (335288 lines) Version 23.66.1: Feb 27, 2024 Changes in layout. (335288 lines)
Version 23.66: Feb 11, 2024 Responsive design in hierarchy configurations. (335306 lines) Version 23.66: Feb 11, 2024 Responsive design in hierarchy configurations. (335306 lines)
Version 23.65: Feb 09, 2024 Responsive design in last clicks. (335502 lines) Version 23.65: Feb 09, 2024 Responsive design in last clicks. (335502 lines)

View File

@ -625,7 +625,7 @@ static void ExaRes_ListExamsToSelect (struct Exa_Exams *Exams)
HTM_TABLE_End (); HTM_TABLE_End ();
/***** Put link to refresh *****/ /***** Put link to refresh *****/
Lay_WriteLinkToUpdate (Txt_Update_results); Lay_WriteLinkToUpdate (Txt_Update_results,NULL);
/***** End form *****/ /***** End form *****/
Frm_EndForm (); Frm_EndForm ();

View File

@ -102,7 +102,7 @@ static void Grp_EditGroupTypes (void);
static void Grp_EditGroups (const struct Roo_Rooms *Rooms); static void Grp_EditGroups (const struct Roo_Rooms *Rooms);
static void Grp_PutIconsEditingGroups (__attribute__((unused)) void *Args); static void Grp_PutIconsEditingGroups (__attribute__((unused)) void *Args);
static void Grp_PutCheckboxAllGrps (Grp_WhichGroups_t GroupsSelectableByStdsOrNETs); static void Grp_PutCheckboxAllGrps (void);
static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType); static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
static void Grp_DestructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType); static void Grp_DestructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
@ -122,8 +122,7 @@ static void Grp_ShowWarningToStdsToChangeGrps (void);
static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp, static bool Grp_ListGrpsForChangeMySelection (struct GroupType *GrpTyp,
unsigned *NumGrpsThisTypeIBelong); unsigned *NumGrpsThisTypeIBelong);
static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod); static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod);
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp, static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp);
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs);
static void Grp_WriteGrpHead (struct GroupType *GrpTyp); static void Grp_WriteGrpHead (struct GroupType *GrpTyp);
static void Grp_WriteRowGrp (struct Group *Grp,Lay_Highlight_t Highlight); static void Grp_WriteRowGrp (struct Group *Grp,Lay_Highlight_t Highlight);
static void Grp_PutFormToCreateGroupType (void); static void Grp_PutFormToCreateGroupType (void);
@ -337,8 +336,9 @@ static void Grp_PutIconsEditingGroups (__attribute__((unused)) void *Args)
/*************** Show form to select one or several groups *******************/ /*************** Show form to select one or several groups *******************/
/*****************************************************************************/ /*****************************************************************************/
void Grp_ShowFormToSelectSeveralGroups (void (*FuncPars) (void *Args),void *Args, void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs) void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit)
{ {
extern const char *Hlp_USERS_Groups; extern const char *Hlp_USERS_Groups;
extern const char *Txt_Groups; extern const char *Txt_Groups;
@ -361,14 +361,13 @@ void Grp_ShowFormToSelectSeveralGroups (void (*FuncPars) (void *Args),void *Args
/***** Begin form to update the students listed /***** Begin form to update the students listed
depending on the groups selected *****/ depending on the groups selected *****/
Frm_BeginFormAnchor (Gbl.Action.Act, // Repeat current action Frm_BeginFormAnchorOnSubmit (NextAction,Usr_USER_LIST_SECTION_ID,OnSubmit);
Usr_USER_LIST_SECTION_ID);
Set_PutParsPrefsAboutUsrList (); Set_PutParsPrefsAboutUsrList ();
if (FuncPars) if (FuncPars)
FuncPars (Args); FuncPars (Args);
/***** Select all groups *****/ /***** Select all groups *****/
Grp_PutCheckboxAllGrps (GroupsSelectableByStdsOrNETs); Grp_PutCheckboxAllGrps ();
/***** Get list of groups types and groups in this course *****/ /***** Get list of groups types and groups in this course *****/
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS); Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
@ -379,15 +378,14 @@ void Grp_ShowFormToSelectSeveralGroups (void (*FuncPars) (void *Args),void *Args
NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes; NumGrpTyp < Gbl.Crs.Grps.GrpTypes.NumGrpTypes;
NumGrpTyp++) NumGrpTyp++)
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
Grp_ListGrpsForMultipleSelection (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp], Grp_ListGrpsForMultipleSelection (&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp]);
GroupsSelectableByStdsOrNETs);
HTM_TABLE_End (); HTM_TABLE_End ();
/***** Free list of groups types and groups in this course *****/ /***** Free list of groups types and groups in this course *****/
Grp_FreeListGrpTypesAndGrps (); Grp_FreeListGrpTypesAndGrps ();
/***** Submit button *****/ /***** Submit button *****/
Lay_WriteLinkToUpdate (Txt_Update_users); Lay_WriteLinkToUpdate (Txt_Update_users,NULL);
/***** End form *****/ /***** End form *****/
Frm_EndForm (); Frm_EndForm ();
@ -400,17 +398,13 @@ void Grp_ShowFormToSelectSeveralGroups (void (*FuncPars) (void *Args),void *Args
/******************* Put checkbox to select all groups ***********************/ /******************* Put checkbox to select all groups ***********************/
/*****************************************************************************/ /*****************************************************************************/
static void Grp_PutCheckboxAllGrps (Grp_WhichGroups_t GroupsSelectableByStdsOrNETs) static void Grp_PutCheckboxAllGrps (void)
{ {
extern const char *Txt_All_groups; extern const char *Txt_All_groups;
bool ICanSelUnselGroup; bool ICanSelUnselGroup;
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
{ {
case Rol_STD:
case Rol_NET:
ICanSelUnselGroup = (GroupsSelectableByStdsOrNETs == Grp_ALL_GROUPS);
break;
case Rol_TCH: case Rol_TCH:
case Rol_DEG_ADM: case Rol_DEG_ADM:
case Rol_CTR_ADM: case Rol_CTR_ADM:
@ -2094,8 +2088,7 @@ static void Grp_ListGrpsToAddOrRemUsrs (struct GroupType *GrpTyp,long UsrCod)
/******* Write a list of groups as checkbox form for unique selection ********/ /******* Write a list of groups as checkbox form for unique selection ********/
/*****************************************************************************/ /*****************************************************************************/
static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp, static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp)
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs)
{ {
extern const char *Txt_users_with_no_group; extern const char *Txt_users_with_no_group;
unsigned NumGrpThisType; unsigned NumGrpThisType;
@ -2133,8 +2126,7 @@ static void Grp_ListGrpsForMultipleSelection (struct GroupType *GrpTyp,
{ {
case Rol_STD: case Rol_STD:
case Rol_NET: case Rol_NET:
ICanSelUnselGroup = (GroupsSelectableByStdsOrNETs == Grp_ALL_GROUPS) || ICanSelUnselGroup = IBelongToThisGroup;
IBelongToThisGroup;
break; break;
case Rol_TCH: case Rol_TCH:
case Rol_DEG_ADM: case Rol_DEG_ADM:

View File

@ -166,8 +166,9 @@ struct Grp_Groups
void Grp_WriteNamesOfSelectedGrps (void); void Grp_WriteNamesOfSelectedGrps (void);
void Grp_ReqEditGroups (void); void Grp_ReqEditGroups (void);
void Grp_ShowFormToSelectSeveralGroups (void (*FuncPars) (void *Args),void *Args, void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction,
Grp_WhichGroups_t GroupsSelectableByStdsOrNETs); void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit);
void Grp_PutParsCodGrps (void); void Grp_PutParsCodGrps (void);
void Grp_GetParCodsSeveralGrpsToShowUsrs (void); void Grp_GetParCodsSeveralGrpsToShowUsrs (void);
void Grp_GetParCodsSeveralGrps (void); void Grp_GetParCodsSeveralGrps (void);

View File

@ -1652,7 +1652,7 @@ void Ins_GetAndShowInstitutionsStats (void)
Set_GetAndUpdatePrefsAboutUsrList (); Set_GetAndUpdatePrefsAboutUsrList ();
Figures.Level = Gbl.Scope.Current; Figures.Level = Gbl.Scope.Current;
Figures.FigureType = Fig_INSTITS; Figures.FigureType = Fig_INSTITS;
Usr_ShowFormsToSelectUsrListType (Fig_PutParsFigures,&Figures); Usr_ShowFormsToSelectUsrListType (ActSeeUseGbl,Fig_PutParsFigures,&Figures,NULL);
/***** Institutions ordered by number of centers *****/ /***** Institutions ordered by number of centers *****/
Ins_GetAndShowInssOrderedByNumCtrs (); Ins_GetAndShowInssOrderedByNumCtrs ();

View File

@ -1245,7 +1245,7 @@ void Lay_PutContextualLinkIconText (Act_Action_t NextAction,const char *Anchor,
/***** Put icon and text with link *****/ /***** Put icon and text with link *****/
if (OnSubmit) if (OnSubmit)
HTM_BUTTON_Submit_Begin (Text, HTM_BUTTON_Submit_Begin (Text,
"class=\"BT_LINK FORM_OUT_%s BOLD\" onsubmit=\"%s;\"", "class=\"BT_LINK FORM_OUT_%s BOLD\" onsubmit=\"%s\"",
The_GetSuffix (),OnSubmit); The_GetSuffix (),OnSubmit);
else else
HTM_BUTTON_Submit_Begin (Text, HTM_BUTTON_Submit_Begin (Text,
@ -1725,15 +1725,18 @@ void Lay_WriteIndex (unsigned Index,const char *Class)
/*************************** Write a link to update **************************/ /*************************** Write a link to update **************************/
/*****************************************************************************/ /*****************************************************************************/
void Lay_WriteLinkToUpdate (const char *Txt) void Lay_WriteLinkToUpdate (const char *Txt,const char *OnSubmit)
{ {
HTM_DIV_Begin ("class=\"UPD\""); HTM_DIV_Begin ("class=\"UPD\"");
HTM_BUTTON_Submit_Begin (Txt, if (OnSubmit)
"class=\"BT_LINK FORM_IN_%s BOLD\"%s", HTM_BUTTON_Submit_Begin (Txt,
The_GetSuffix (), "class=\"BT_LINK FORM_IN_%s BOLD\" onsubmit=\"%s\"",
Gbl.Action.Act == ActReqMsgUsr ? " onsubmit=\"CopyMessageToHiddenFields();\"" : The_GetSuffix (),OnSubmit);
""); else
Ico_PutIconTextUpdate (Txt); HTM_BUTTON_Submit_Begin (Txt,
"class=\"BT_LINK FORM_IN_%s BOLD\"",
The_GetSuffix ());
Ico_PutIconTextUpdate (Txt);
HTM_BUTTON_End (); HTM_BUTTON_End ();
HTM_DIV_End (); HTM_DIV_End ();
} }

View File

@ -103,7 +103,7 @@ void Lay_HelpRichEditor (void);
void Lay_BeginHTMLFile (FILE *File,const char *Title); void Lay_BeginHTMLFile (FILE *File,const char *Title);
void Lay_WriteIndex (unsigned Index,const char *Class); void Lay_WriteIndex (unsigned Index,const char *Class);
void Lay_WriteLinkToUpdate (const char *Txt); void Lay_WriteLinkToUpdate (const char *Txt,const char *OnSubmit);
//-------------------------------- Figures ------------------------------------ //-------------------------------- Figures ------------------------------------
void Lay_GetAndShowNumUsrsPerSideColumns (void); void Lay_GetAndShowNumUsrsPerSideColumns (void);

View File

@ -589,7 +589,7 @@ static void MchRes_ListGamesToSelect (struct Gam_Games *Games)
HTM_TABLE_End (); HTM_TABLE_End ();
/***** Put button to refresh *****/ /***** Put button to refresh *****/
Lay_WriteLinkToUpdate (Txt_Update_results); Lay_WriteLinkToUpdate (Txt_Update_results,NULL);
/***** End form *****/ /***** End form *****/
Frm_EndForm (); Frm_EndForm ();

View File

@ -97,7 +97,8 @@ static const Pag_WhatPaginate_t Msg_WhatPaginate[Msg_NUM_TYPES_OF_MSGS] =
static void Msg_ResetMessages (struct Msg_Messages *Messages); static void Msg_ResetMessages (struct Msg_Messages *Messages);
static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages, static void Msg_PutFormMsgUsrs (Act_Action_t NextAction,
struct Msg_Messages *Messages,
char Content[Cns_MAX_BYTES_LONG_TEXT + 1]); char Content[Cns_MAX_BYTES_LONG_TEXT + 1]);
static void Msg_ShowSntOrRcvMessages (struct Msg_Messages *Messages); static void Msg_ShowSntOrRcvMessages (struct Msg_Messages *Messages);
@ -208,14 +209,15 @@ void Msg_FormMsgUsrs (void)
Str_TO_TEXT,Str_DONT_REMOVE_SPACES); Str_TO_TEXT,Str_DONT_REMOVE_SPACES);
/***** Show a form to compose a message to users *****/ /***** Show a form to compose a message to users *****/
Msg_PutFormMsgUsrs (&Messages,Content); Msg_PutFormMsgUsrs (ActReqMsgUsr,&Messages,Content);
} }
/*****************************************************************************/ /*****************************************************************************/
/***************** Put a form to write a new message to users ****************/ /***************** Put a form to write a new message to users ****************/
/*****************************************************************************/ /*****************************************************************************/
static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages, static void Msg_PutFormMsgUsrs (Act_Action_t NextAction,
struct Msg_Messages *Messages,
char Content[Cns_MAX_BYTES_LONG_TEXT + 1]) char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
{ {
extern const char *Hlp_COMMUNICATION_Messages_write; extern const char *Hlp_COMMUNICATION_Messages_write;
@ -280,8 +282,8 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
if (GetUsrsInCrs) if (GetUsrsInCrs)
{ {
/***** Form to select groups *****/ /***** Form to select groups *****/
Grp_ShowFormToSelectSeveralGroups (Msg_PutParsWriteMsg,Messages, Grp_ShowFormToSelectSeveralGroups (NextAction,Msg_PutParsWriteMsg,Messages,
Grp_MY_GROUPS); "CopyMessageToHiddenFields();");
/***** Begin section with user list *****/ /***** Begin section with user list *****/
HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID); HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID);
@ -289,14 +291,15 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
if (NumUsrsInCrs) if (NumUsrsInCrs)
{ {
/***** Form to select type of list used for select several users *****/ /***** Form to select type of list used for select several users *****/
Usr_ShowFormsToSelectUsrListType (Msg_PutParsWriteMsg,Messages); Usr_ShowFormsToSelectUsrListType (NextAction,Msg_PutParsWriteMsg,Messages,
"CopyMessageToHiddenFields();");
/***** Put link to register students *****/ /***** Put link to register students *****/
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (); Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
/***** Check if it's a big list *****/ /***** Check if it's a big list *****/
ShowUsrsInCrs = Usr_GetIfShowBigList (NumUsrsInCrs, ShowUsrsInCrs = Usr_GetIfShowBigList (NumUsrsInCrs,
Msg_PutParsWriteMsg,Messages, NextAction,Msg_PutParsWriteMsg,Messages,
"CopyMessageToHiddenFields();"); "CopyMessageToHiddenFields();");
if (ShowUsrsInCrs) if (ShowUsrsInCrs)
@ -361,8 +364,7 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
Lay_HelpPlainEditor (); Lay_HelpPlainEditor ();
/***** Attached image (optional) *****/ /***** Attached image (optional) *****/
if (asprintf (&ClassInput,"MSG_MED_INPUT INPUT_%s", if (asprintf (&ClassInput,"MSG_MED_INPUT INPUT_%s",The_GetSuffix ()) < 0)
The_GetSuffix ()) < 0)
Err_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Med_PutMediaUploader (-1,ClassInput); Med_PutMediaUploader (-1,ClassInput);
free (ClassInput); free (ClassInput);
@ -408,7 +410,7 @@ static void Msg_PutLinkToShowMorePotentialRecipients (struct Msg_Messages *Messa
Msg_PutParsShowMorePotentialRecipients,Messages, Msg_PutParsShowMorePotentialRecipients,Messages,
"users.svg",Ico_BLACK, "users.svg",Ico_BLACK,
Txt_Show_more_recipients, Txt_Show_more_recipients,
"CopyMessageToHiddenFields();"); // Show more potential recipients "CopyMessageToHiddenFields();");
Mnu_ContextMenuEnd (); Mnu_ContextMenuEnd ();
} }
@ -788,7 +790,7 @@ void Msg_RecMsgFromUsr (void)
/* Show the form again, with the subject and the message filled */ /* Show the form again, with the subject and the message filled */
Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT, Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT,
Content,Cns_MAX_BYTES_LONG_TEXT,Str_REMOVE_SPACES); Content,Cns_MAX_BYTES_LONG_TEXT,Str_REMOVE_SPACES);
Msg_PutFormMsgUsrs (&Messages,Content); Msg_PutFormMsgUsrs (ActRcvMsgUsr,&Messages,Content);
return; return;
} }
@ -1504,7 +1506,7 @@ static void Msg_ShowSntOrRcvMessages (struct Msg_Messages *Messages)
Msg_ShowFormToFilterMsgs (Messages); Msg_ShowFormToFilterMsgs (Messages);
/***** Put button to refresh *****/ /***** Put button to refresh *****/
Lay_WriteLinkToUpdate (Txt_Update_messages); Lay_WriteLinkToUpdate (Txt_Update_messages,"CopyMessageToHiddenFields();");
Frm_EndForm (); Frm_EndForm ();

View File

@ -256,6 +256,7 @@ void Pho_ReqMyPhoto (void)
{ {
/***** Show the form for sending the photo *****/ /***** Show the form for sending the photo *****/
Pho_ReqPhoto (&Gbl.Usrs.Me.UsrDat); Pho_ReqPhoto (&Gbl.Usrs.Me.UsrDat);
HTM_BR ();
/***** Show my record and other data *****/ /***** Show my record and other data *****/
Rec_ShowMySharedRecordAndMore (); Rec_ShowMySharedRecordAndMore ();
@ -269,6 +270,7 @@ static void Pho_ReqOtherUsrPhoto (void)
{ {
/***** Show the form to send another user's photo *****/ /***** Show the form to send another user's photo *****/
Pho_ReqPhoto (&Gbl.Usrs.Other.UsrDat); Pho_ReqPhoto (&Gbl.Usrs.Other.UsrDat);
HTM_BR ();
/***** Show another user's record card *****/ /***** Show another user's record card *****/
Rec_ShowPublicSharedRecordOtherUsr (); Rec_ShowPublicSharedRecordOtherUsr ();
@ -380,7 +382,10 @@ void Pho_RecMyPhotoDetFaces (void)
{ {
/***** Receive my photo and detect faces on it *****/ /***** Receive my photo and detect faces on it *****/
if (!Pho_ReceivePhotoAndDetectFaces (Usr_ME,&Gbl.Usrs.Me.UsrDat)) if (!Pho_ReceivePhotoAndDetectFaces (Usr_ME,&Gbl.Usrs.Me.UsrDat))
{
Pho_ReqPhoto (&Gbl.Usrs.Me.UsrDat); // Request my photograph again Pho_ReqPhoto (&Gbl.Usrs.Me.UsrDat); // Request my photograph again
HTM_BR ();
}
/***** Show my record and other data *****/ /***** Show my record and other data *****/
Rec_ShowMySharedRecordAndMore (); Rec_ShowMySharedRecordAndMore ();
@ -402,7 +407,10 @@ void Pho_RecOtherUsrPhotoDetFaces (void)
{ {
/***** Receive photo *****/ /***** Receive photo *****/
if (!Pho_ReceivePhotoAndDetectFaces (Usr_OTHER,&Gbl.Usrs.Other.UsrDat)) if (!Pho_ReceivePhotoAndDetectFaces (Usr_OTHER,&Gbl.Usrs.Other.UsrDat))
{
Pho_ReqPhoto (&Gbl.Usrs.Other.UsrDat); // Request user's photograph again Pho_ReqPhoto (&Gbl.Usrs.Other.UsrDat); // Request user's photograph again
HTM_BR ();
}
/***** Show another user's record card *****/ /***** Show another user's record card *****/
Rec_ShowPublicSharedRecordOtherUsr (); Rec_ShowPublicSharedRecordOtherUsr ();
@ -2136,7 +2144,7 @@ static void Pho_ShowOrPrintClassPhotoDegrees (struct Pho_DegPhotos *DegPhotos,
{ {
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
Usr_ShowFormsToSelectUsrListType (Pho_PutParsDegPhoto,DegPhotos); Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg,Pho_PutParsDegPhoto,DegPhotos,NULL);
HTM_TABLE_BeginCenter (); HTM_TABLE_BeginCenter ();
@ -2219,7 +2227,7 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
/***** Class photo start *****/ /***** Class photo start *****/
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
Usr_ShowFormsToSelectUsrListType (Pho_PutParsDegPhoto,DegPhotos); Usr_ShowFormsToSelectUsrListType (ActSeePhoDeg,Pho_PutParsDegPhoto,DegPhotos,NULL);
/***** Write heading *****/ /***** Write heading *****/
HTM_TABLE_BeginCenterPadding (2); HTM_TABLE_BeginCenterPadding (2);

View File

@ -272,8 +272,7 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
free (Title); free (Title);
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (NULL,NULL, Grp_ShowFormToSelectSeveralGroups (ActSeeAccCrs,NULL,NULL,NULL);
Grp_MY_GROUPS);
/***** Begin section with user list *****/ /***** Begin section with user list *****/
HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID); HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID);
@ -281,11 +280,10 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
if (NumTotalUsrs) if (NumTotalUsrs)
{ {
if (Usr_GetIfShowBigList (NumTotalUsrs, if (Usr_GetIfShowBigList (NumTotalUsrs,
NULL,NULL, ActReqAccCrs,NULL,NULL,NULL))
NULL))
{ {
/***** Form to select type of list used for select several users *****/ /***** Form to select type of list used for select several users *****/
Usr_ShowFormsToSelectUsrListType (NULL,NULL); Usr_ShowFormsToSelectUsrListType (ActReqAccCrs,NULL,NULL,NULL);
/***** Put link to register students *****/ /***** Put link to register students *****/
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (); Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();

View File

@ -2862,7 +2862,7 @@ const char *Txt_Attendance = // Number of times a students has attended to face-
#elif L==5 // fr #elif L==5 // fr
"Pr&eacute;sence"; "Pr&eacute;sence";
#elif L==6 // gn #elif L==6 // gn
"Asistencia"; // Okoteve traducción "Asistencia";
#elif L==7 // it #elif L==7 // it
"Presenza"; "Presenza";
#elif L==8 // pl #elif L==8 // pl
@ -12756,7 +12756,7 @@ const char *Txt_File_with_the_photo =
#elif L==5 // fr #elif L==5 // fr
"Fichier avec la photo"; "Fichier avec la photo";
#elif L==6 // gn #elif L==6 // gn
"Archivo con la foto"; // Okoteve traducción "Archivo orek&oacute;va ta'anga";
#elif L==7 // it #elif L==7 // it
"File con la foto"; "File con la foto";
#elif L==8 // pl #elif L==8 // pl
@ -12764,7 +12764,7 @@ const char *Txt_File_with_the_photo =
#elif L==9 // pt #elif L==9 // pt
"Arquivo com a foto"; "Arquivo com a foto";
#elif L==10 // tr #elif L==10 // tr
"File with the photo"; // Çeviri lazim! "Foto&gbreve;rafl&inodot; dosya";
#endif #endif
const char *Txt_File_zone = const char *Txt_File_zone =
@ -52076,48 +52076,48 @@ const char *Txt_There_have_been_X_errors_in_sending_the_message = // Warning: it
const char *Txt_There_is_already_a_file_named_X = // Warning: it is very important to include %s in the following sentences const char *Txt_There_is_already_a_file_named_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca #if L==1 // ca
"Ya existe un archivo con el nombre <strong>%s</strong>."; // Necessita traducció "Ja hi ha un arxiu amb el nom <strong>%s</strong>.";
#elif L==2 // de #elif L==2 // de
"There is already a file named <strong>%s</strong>."; // Übersetzung notwendig "Es gibt bereits eine Datei mit dem Namen <strong>%s</strong>.";
#elif L==3 // en #elif L==3 // en
"There is already a file named <strong>%s</strong>."; "There is already a file named <strong>%s</strong>.";
#elif L==4 // es #elif L==4 // es
"Ya existe un archivo con el nombre <strong>%s</strong>."; "Ya existe un archivo con el nombre <strong>%s</strong>.";
#elif L==5 // fr #elif L==5 // fr
"There is already a file named <strong>%s</strong>."; // Besoin de traduction "Il existe d&eacute;j&agrave; un fichier nomm&eacute; <strong>%s</strong>.";
#elif L==6 // gn #elif L==6 // gn
"Ya existe un archivo con el nombre <strong>%s</strong>."; // Okoteve traducción "O&itilde;ma pete&itilde; vore h&eacute;rava <strong>%s</strong>.";
#elif L==7 // it #elif L==7 // it
"C'&egrave; gi&agrave; un file chiamato <strong>%s</strong>."; "C'&egrave; gi&agrave; un file chiamato <strong>%s</strong>.";
#elif L==8 // pl #elif L==8 // pl
"There is already a file named <strong>%s</strong>."; // Potrzebujesz tlumaczenie "Istnieje ju&zdot; plik o nazwie <strong>%s</strong>.";
#elif L==9 // pt #elif L==9 // pt
"J&aacute; existe um arquivo chamado <strong>%s</strong>."; "J&aacute; existe um arquivo chamado <strong>%s</strong>.";
#elif L==10 // tr #elif L==10 // tr
"There is already a file named <strong>%s</strong>."; // Çeviri lazim! "Zaten <strong>%s</strong> ad&inodot;nda bir dosya var.";
#endif #endif
const char *Txt_There_is_already_a_non_empty_folder_named_X = // Warning: it is very important to include %s in the following sentences const char *Txt_There_is_already_a_non_empty_folder_named_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca #if L==1 // ca
"Ya existe una carpeta no vac&iacute;a con el nombre <strong>%s</strong>."; // Necessita traducció "Ja hi ha una carpeta no buida amb el nom <strong>%s</strong>.";
#elif L==2 // de #elif L==2 // de
"There is already a non-empty folder named <strong>%s</strong>."; // Übersetzung notwendig "Es gibt bereits einen nicht leeren Ordner mit dem Namen <strong>%s</strong>.";
#elif L==3 // en #elif L==3 // en
"There is already a non-empty folder named <strong>%s</strong>."; "There is already a non-empty folder named <strong>%s</strong>.";
#elif L==4 // es #elif L==4 // es
"Ya existe una carpeta no vac&iacute;a con el nombre <strong>%s</strong>."; "Ya existe una carpeta no vac&iacute;a con el nombre <strong>%s</strong>.";
#elif L==5 // fr #elif L==5 // fr
"There is already a non-empty folder named <strong>%s</strong>."; // Besoin de traduction "Il existe d&eacute;j&agrave; un dossier non vide nomm&eacute; <strong>%s</strong>.";
#elif L==6 // gn #elif L==6 // gn
"Ya existe una carpeta no vac&iacute;a con el nombre <strong>%s</strong>."; // Okoteve traducción "O&itilde;ma pete&itilde; kundaha nandi'&ytilde;va h&eacute;rava <strong>%s</strong>.";
#elif L==7 // it #elif L==7 // it
"C'&egrave; gi&agrave; una cartella non vuota chiamata <strong>%s</strong>."; "C'&egrave; gi&agrave; una cartella non vuota chiamata <strong>%s</strong>.";
#elif L==8 // pl #elif L==8 // pl
"There is already a non-empty folder named <strong>%s</strong>."; // Potrzebujesz tlumaczenie "Istnieje ju&zdot; niepusty folder o nazwie <strong>%s</strong>.";
#elif L==9 // pt #elif L==9 // pt
"J&aacute; existe uma pasta n&atilde;o vazia chamada strong>%s</strong>."; "J&aacute; existe uma pasta n&atilde;o vazia chamada strong>%s</strong>.";
#elif L==10 // tr #elif L==10 // tr
"There is already a non-empty folder named <strong>%s</strong>."; // Çeviri lazim! "<strong>%s</strong> ad&inodot;nda bo&scedil; olmayan bir klas&ouml;r zaten var.";
#endif #endif
const char *Txt_There_is_no_empty_account_associated_with_your_ID_X = // Warning: it is very important to include %s in the following sentences const char *Txt_There_is_no_empty_account_associated_with_your_ID_X = // Warning: it is very important to include %s in the following sentences
@ -52698,7 +52698,7 @@ const char *Txt_time =
#elif L==5 // fr #elif L==5 // fr
"temps"; "temps";
#elif L==6 // gn #elif L==6 // gn
"tiempo"; // Okoteve traducción "aravo";
#elif L==7 // it #elif L==7 // it
"tempo"; "tempo";
#elif L==8 // pl #elif L==8 // pl
@ -52706,7 +52706,7 @@ const char *Txt_time =
#elif L==9 // pt #elif L==9 // pt
"tempo"; "tempo";
#elif L==10 // tr #elif L==10 // tr
"time"; // Çeviri lazim! "zaman";
#endif #endif
const char *Txt_Time_zone_used_in_the_calculation_of_these_statistics = const char *Txt_Time_zone_used_in_the_calculation_of_these_statistics =
@ -52744,7 +52744,7 @@ const char *Txt_Timeline =
#elif L==5 // fr #elif L==5 // fr
"Chronologie"; "Chronologie";
#elif L==6 // gn #elif L==6 // gn
"Timeline"; // Okoteve traducción "Timeline";
#elif L==7 // it #elif L==7 // it
"Timeline"; "Timeline";
#elif L==8 // pl #elif L==8 // pl
@ -52752,7 +52752,7 @@ const char *Txt_Timeline =
#elif L==9 // pt #elif L==9 // pt
"Timeline"; "Timeline";
#elif L==10 // tr #elif L==10 // tr
"Timeline"; // Çeviri lazim! "Zaman &ccedil;izelgesi";
#endif #endif
const char *Txt_Timeline_OF_A_USER = // Warning: it is very important to include %s in the following sentences const char *Txt_Timeline_OF_A_USER = // Warning: it is very important to include %s in the following sentences

View File

@ -476,48 +476,48 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
, ,
[ActRefNewPubGblTL] = [ActRefNewPubGblTL] =
#if L==1 // ca #if L==1 // ca
"Refresh global timeline (new publications)" // Necessita traducció "Actualitzar timeline global (noves publicacions)"
#elif L==2 // de #elif L==2 // de
"Refresh global timeline (new publications)" // Need Übersetzung "Globale Zeitleiste aktualisieren (Neuver&ouml;ffentlichungen)"
#elif L==3 // en #elif L==3 // en
"Refresh global timeline (new publications)" "Refresh global timeline (new publications)"
#elif L==4 // es #elif L==4 // es
"Refrescar timeline global (nuevas publicaciones)" "Actualizar timeline global (nuevas publicaciones)"
#elif L==5 // fr #elif L==5 // fr
"Refresh global timeline (new publications)" // Besoin de traduction "Actualiser la chronologie globale (nouvelles publications)"
#elif L==6 // gn #elif L==6 // gn
"Refrescar timeline global (nuevas publicaciones)" // Okoteve traducción "Ombopyahu l&iacute;nea de tiempo global (post pyahu)"
#elif L==7 // it #elif L==7 // it
"Refresh global timeline (new publications)" // Bisogno di traduzione "Aggiorna la sequenza temporale globale (nuove pubblicazioni)"
#elif L==8 // pl #elif L==8 // pl
"Refresh global timeline (new publications)" // Potrzebujesz tlumaczenie "Od&sacute;wie&zdot; globaln&aogon; o&sacute; czasu (nowe publikacje)"
#elif L==9 // pt #elif L==9 // pt
"Refresh global timeline (new publications)" // Precisa de tradução "Atualizar linha do tempo global (novas publica&ccedil;&otilde;es)"
#elif L==10 // tr #elif L==10 // tr
"Refresh global timeline (new publications)" // Çeviri lazim! "K&uuml;resel zaman &ccedil;izelgesini yenile (yeni yay&inodot;nlar)"
#endif #endif
, ,
[ActRefOldPubGblTL] = [ActRefOldPubGblTL] =
#if L==1 // ca #if L==1 // ca
"Show previous publications in global timeline" // Necessita traducció "Mostrar publicacions anteriors a timeline global"
#elif L==2 // de #elif L==2 // de
"Show previous publications in global timeline" // Need Übersetzung "Fr&uuml;here Ver&ouml;ffentlichungen in der globalen Zeitleiste anzeigen"
#elif L==3 // en #elif L==3 // en
"Show previous publications in global timeline" "Show previous publications in global timeline"
#elif L==4 // es #elif L==4 // es
"Mostrar publicaciones anteriores en timeline global" "Mostrar publicaciones anteriores en timeline global"
#elif L==5 // fr #elif L==5 // fr
"Show previous publications in global timeline" // Besoin de traduction "Afficher les publications pr&eacute;c&eacute;dentes dans la chronologie globale"
#elif L==6 // gn #elif L==6 // gn
"Mostrar publicaciones anteriores en timeline global" // Okoteve traducción "Ehechauka umi kuatia&ntilde;e'&etilde; yma guare l&iacute;nea de tiempo global-pe"
#elif L==7 // it #elif L==7 // it
"Show previous publications in global timeline" // Bisogno di traduzione "Mostra le pubblicazioni precedenti nella sequenza temporale globale"
#elif L==8 // pl #elif L==8 // pl
"Show previous publications in global timeline" // Potrzebujesz tlumaczenie "Poka&zdot; poprzednie publikacje na globalnej osi czasu"
#elif L==9 // pt #elif L==9 // pt
"Show previous publications in global timeline" // Precisa de tradução "Mostrar publica&ccedil;&otilde;es anteriores na linha do tempo global"
#elif L==10 // tr #elif L==10 // tr
"Show previous publications in global timeline" // Çeviri lazim! "&Ouml;nceki yay&inodot;nlar&inodot; k&uuml;resel zaman &ccedil;izelgesinde g&ouml;ster"
#endif #endif
, ,
[ActRcvPstGblTL] = [ActRcvPstGblTL] =

View File

@ -192,6 +192,7 @@ static void Usr_GetGstsLst (Hie_Level_t Level);
static void Usr_AllocateUsrsList (Rol_Role_t Role); static void Usr_AllocateUsrsList (Rol_Role_t Role);
static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs, static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,
Act_Action_t NextAction,
void (*FuncPars) (void *Args),void *Args, void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit); const char *OnSubmit);
static void Usr_PutParsConfirmIWantToSeeBigList (void *Args); static void Usr_PutParsConfirmIWantToSeeBigList (void *Args);
@ -204,8 +205,10 @@ static void Usr_AllocateListSelectedEncryptedUsrCods (struct Usr_SelectedUsrs *S
Rol_Role_t Role); Rol_Role_t Role);
static void Usr_AllocateListOtherRecipients (void); static void Usr_AllocateListOtherRecipients (void);
static void Set_FormToSelectUsrListType (void (*FuncPars) (void *Args),void *Args, static void Set_FormToSelectUsrListType (Act_Action_t NextAction,
Set_ShowUsrsType_t ListType); void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit,
Set_ShowUsrsType_t ListType);
static void Usr_ListUsersByRoleToSelect (struct Usr_SelectedUsrs *SelectedUsrs, static void Usr_ListUsersByRoleToSelect (struct Usr_SelectedUsrs *SelectedUsrs,
Rol_Role_t Role); Rol_Role_t Role);
static void Usr_ListUsrsForSelection (struct Usr_SelectedUsrs *SelectedUsrs, static void Usr_ListUsrsForSelection (struct Usr_SelectedUsrs *SelectedUsrs,
@ -3006,6 +3009,7 @@ void Usr_FreeUsrsList (Rol_Role_t Role)
/*****************************************************************************/ /*****************************************************************************/
bool Usr_GetIfShowBigList (unsigned NumUsrs, bool Usr_GetIfShowBigList (unsigned NumUsrs,
Act_Action_t NextAction,
void (*FuncPars) (void *Args),void *Args, void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit) const char *OnSubmit)
{ {
@ -3018,7 +3022,7 @@ bool Usr_GetIfShowBigList (unsigned NumUsrs,
to see a big list of users *****/ to see a big list of users *****/
if (!(ShowBigList = Par_GetParBool ("ShowBigList"))) if (!(ShowBigList = Par_GetParBool ("ShowBigList")))
Usr_PutButtonToConfirmIWantToSeeBigList (NumUsrs, Usr_PutButtonToConfirmIWantToSeeBigList (NumUsrs,
FuncPars,Args, NextAction,FuncPars,Args,
OnSubmit); OnSubmit);
return ShowBigList; return ShowBigList;
@ -3032,6 +3036,7 @@ bool Usr_GetIfShowBigList (unsigned NumUsrs,
/*****************************************************************************/ /*****************************************************************************/
static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs, static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,
Act_Action_t NextAction,
void (*FuncPars) (void *Args),void *Args, void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit) const char *OnSubmit)
{ {
@ -3040,7 +3045,7 @@ static void Usr_PutButtonToConfirmIWantToSeeBigList (unsigned NumUsrs,
/***** Show alert and button to confirm that I want to see the big list *****/ /***** Show alert and button to confirm that I want to see the big list *****/
Usr_FuncParsBigList = FuncPars; // Used to pass pointer to function Usr_FuncParsBigList = FuncPars; // Used to pass pointer to function
Ale_ShowAlertAndButton (Gbl.Action.Act,Usr_USER_LIST_SECTION_ID,OnSubmit, Ale_ShowAlertAndButton (NextAction,Usr_USER_LIST_SECTION_ID,OnSubmit,
Usr_PutParsConfirmIWantToSeeBigList,Args, Usr_PutParsConfirmIWantToSeeBigList,Args,
Btn_CONFIRM_BUTTON,Txt_Show_anyway, Btn_CONFIRM_BUTTON,Txt_Show_anyway,
Ale_WARNING,Txt_The_list_of_X_users_is_too_large_to_be_displayed, Ale_WARNING,Txt_The_list_of_X_users_is_too_large_to_be_displayed,
@ -3600,7 +3605,9 @@ void Usr_FreeListOtherRecipients (void)
/*************************** Selection of list type **************************/ /*************************** Selection of list type **************************/
/*****************************************************************************/ /*****************************************************************************/
void Usr_ShowFormsToSelectUsrListType (void (*FuncPars) (void *Args),void *Args) void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction,
void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit)
{ {
Set_BeginSettingsHead (); Set_BeginSettingsHead ();
Set_BeginOneSettingSelector (); Set_BeginOneSettingSelector ();
@ -3608,12 +3615,11 @@ void Usr_ShowFormsToSelectUsrListType (void (*FuncPars) (void *Args),void *Args)
/***** Select Set_USR_LIST_AS_CLASS_PHOTO *****/ /***** Select Set_USR_LIST_AS_CLASS_PHOTO *****/
Set_BeginPref (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO); Set_BeginPref (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO);
Set_FormToSelectUsrListType (FuncPars,Args, Set_FormToSelectUsrListType (NextAction,FuncPars,Args,OnSubmit,
Set_USR_LIST_AS_CLASS_PHOTO); Set_USR_LIST_AS_CLASS_PHOTO);
/* Number of columns in the class photo */ /* Number of columns in the class photo */
Frm_BeginFormAnchor (Gbl.Action.Act, // Repeat current action Frm_BeginFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
Usr_USER_LIST_SECTION_ID);
Grp_PutParsCodGrps (); Grp_PutParsCodGrps ();
Set_PutParUsrListType (Set_USR_LIST_AS_CLASS_PHOTO); Set_PutParUsrListType (Set_USR_LIST_AS_CLASS_PHOTO);
Set_PutParListWithPhotos (); Set_PutParListWithPhotos ();
@ -3627,12 +3633,11 @@ void Usr_ShowFormsToSelectUsrListType (void (*FuncPars) (void *Args),void *Args)
/***** Select Usr_LIST_AS_LISTING *****/ /***** Select Usr_LIST_AS_LISTING *****/
Set_BeginPref (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_LISTING); Set_BeginPref (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_LISTING);
Set_FormToSelectUsrListType (FuncPars,Args, Set_FormToSelectUsrListType (NextAction,FuncPars,Args,OnSubmit,
Set_USR_LIST_AS_LISTING); Set_USR_LIST_AS_LISTING);
/* See the photos in list? */ /* See the photos in list? */
Frm_BeginFormAnchor (Gbl.Action.Act, // Repeat current action Frm_BeginFormAnchor (NextAction,Usr_USER_LIST_SECTION_ID);
Usr_USER_LIST_SECTION_ID);
Grp_PutParsCodGrps (); Grp_PutParsCodGrps ();
Set_PutParUsrListType (Set_USR_LIST_AS_LISTING); Set_PutParUsrListType (Set_USR_LIST_AS_LISTING);
if (FuncPars) if (FuncPars)
@ -3650,14 +3655,15 @@ void Usr_ShowFormsToSelectUsrListType (void (*FuncPars) (void *Args),void *Args)
/************* Put a radio element to select a users' list type **************/ /************* Put a radio element to select a users' list type **************/
/*****************************************************************************/ /*****************************************************************************/
static void Set_FormToSelectUsrListType (void (*FuncPars) (void *Args),void *Args, static void Set_FormToSelectUsrListType (Act_Action_t NextAction,
Set_ShowUsrsType_t ListType) void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit,
Set_ShowUsrsType_t ListType)
{ {
extern const char *Txt_USR_LIST_TYPES[Set_NUM_USR_LIST_TYPES]; extern const char *Txt_USR_LIST_TYPES[Set_NUM_USR_LIST_TYPES];
/***** Begin form *****/ /***** Begin form *****/
Frm_BeginFormAnchor (Gbl.Action.Act, // Repeat current action Frm_BeginFormAnchorOnSubmit (NextAction,Usr_USER_LIST_SECTION_ID,OnSubmit);
Usr_USER_LIST_SECTION_ID);
Grp_PutParsCodGrps (); Grp_PutParsCodGrps ();
Set_PutParUsrListType (ListType); Set_PutParUsrListType (ListType);
Set_PutParListWithPhotos (); Set_PutParListWithPhotos ();
@ -3665,14 +3671,17 @@ static void Set_FormToSelectUsrListType (void (*FuncPars) (void *Args),void *Arg
FuncPars (Args); FuncPars (Args);
/***** Link and image *****/ /***** Link and image *****/
HTM_BUTTON_Submit_Begin (Txt_USR_LIST_TYPES[ListType], if (OnSubmit)
"class=\"BT_LINK FORM_IN_%s NOWRAP\"%s", HTM_BUTTON_Submit_Begin (Txt_USR_LIST_TYPES[ListType],
The_GetSuffix (), "class=\"BT_LINK FORM_IN_%s NOWRAP\" onsubmit=\"%s\"",
Gbl.Action.Act == ActReqMsgUsr ? " onsubmit=\"CopyMessageToHiddenFields();\"" : The_GetSuffix (),OnSubmit);
""); else
Ico_PutIcon (Usr_IconsClassPhotoOrList[ListType],Ico_BLACK, HTM_BUTTON_Submit_Begin (Txt_USR_LIST_TYPES[ListType],
Txt_USR_LIST_TYPES[ListType],"ICO20x20"); "class=\"BT_LINK FORM_IN_%s NOWRAP\"",
HTM_NBSPTxt (Txt_USR_LIST_TYPES[ListType]); The_GetSuffix ());
Ico_PutIcon (Usr_IconsClassPhotoOrList[ListType],Ico_BLACK,
Txt_USR_LIST_TYPES[ListType],"ICO20x20");
HTM_NBSPTxt (Txt_USR_LIST_TYPES[ListType]);
HTM_BUTTON_End (); HTM_BUTTON_End ();
/***** End form *****/ /***** End form *****/
@ -3719,8 +3728,7 @@ void Usr_PutFormToSelectUsrsToGoToAct (struct Usr_SelectedUsrs *SelectedUsrs,
Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs; Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
/***** Show form to select the groups *****/ /***** Show form to select the groups *****/
Grp_ShowFormToSelectSeveralGroups (FuncPars,Args, Grp_ShowFormToSelectSeveralGroups (NextAction,FuncPars,Args,NULL);
Grp_MY_GROUPS);
/***** Begin section with user list *****/ /***** Begin section with user list *****/
HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID); HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID);
@ -3728,11 +3736,11 @@ void Usr_PutFormToSelectUsrsToGoToAct (struct Usr_SelectedUsrs *SelectedUsrs,
if (NumTotalUsrs) if (NumTotalUsrs)
{ {
if (Usr_GetIfShowBigList (NumTotalUsrs, if (Usr_GetIfShowBigList (NumTotalUsrs,
FuncPars,Args, NextAction,FuncPars,Args,
NULL)) NULL))
{ {
/***** Form to select type of list used for select several users *****/ /***** Form to select type of list used for select several users *****/
Usr_ShowFormsToSelectUsrListType (FuncPars,Args); Usr_ShowFormsToSelectUsrListType (NextAction,FuncPars,Args,NULL);
/***** Link to register students *****/ /***** Link to register students *****/
Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs (); Enr_CheckStdsAndPutButtonToRegisterStdsInCurrentCrs ();
@ -5080,11 +5088,12 @@ void Usr_SeeGuests (void)
if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs) if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs)
{ {
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs, if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs,
Sco_PutParCurrentScope,&Gbl.Scope.Current, ActLstGst,Sco_PutParCurrentScope,&Gbl.Scope.Current,
NULL)) NULL))
{ {
/***** Form to select type of list of users *****/ /***** Form to select type of list of users *****/
Usr_ShowFormsToSelectUsrListType (Sco_PutParCurrentScope,&Gbl.Scope.Current); Usr_ShowFormsToSelectUsrListType (ActLstGst,Sco_PutParCurrentScope,&Gbl.Scope.Current,
NULL);
/***** Draw a class photo with guests *****/ /***** Draw a class photo with guests *****/
if (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO) if (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO)
@ -5222,8 +5231,8 @@ void Usr_SeeStudents (void)
/***** Form to select groups *****/ /***** Form to select groups *****/
if (Gbl.Scope.Current == Hie_CRS) if (Gbl.Scope.Current == Hie_CRS)
Grp_ShowFormToSelectSeveralGroups (Sco_PutParCurrentScope,&Gbl.Scope.Current, Grp_ShowFormToSelectSeveralGroups (ActLstStd,Sco_PutParCurrentScope,
Grp_MY_GROUPS); &Gbl.Scope.Current,NULL);
/***** Begin section with user list *****/ /***** Begin section with user list *****/
HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID); HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID);
@ -5231,11 +5240,12 @@ void Usr_SeeStudents (void)
if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs) if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs)
{ {
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs, if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,
Sco_PutParCurrentScope,&Gbl.Scope.Current, ActLstStd,Sco_PutParCurrentScope,&Gbl.Scope.Current,
NULL)) NULL))
{ {
/***** Form to select type of list of users *****/ /***** Form to select type of list of users *****/
Usr_ShowFormsToSelectUsrListType (Sco_PutParCurrentScope,&Gbl.Scope.Current); Usr_ShowFormsToSelectUsrListType (ActLstStd,Sco_PutParCurrentScope,&Gbl.Scope.Current,
NULL);
/***** Draw a class photo with students of the course *****/ /***** Draw a class photo with students of the course *****/
if (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO) if (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO)
@ -5389,8 +5399,8 @@ void Usr_SeeTeachers (void)
/***** Form to select groups *****/ /***** Form to select groups *****/
if (Gbl.Scope.Current == Hie_CRS) if (Gbl.Scope.Current == Hie_CRS)
Grp_ShowFormToSelectSeveralGroups (Sco_PutParCurrentScope,&Gbl.Scope.Current, Grp_ShowFormToSelectSeveralGroups (ActLstTch,Sco_PutParCurrentScope,
Grp_MY_GROUPS); &Gbl.Scope.Current,NULL);
/***** Begin section with user list *****/ /***** Begin section with user list *****/
HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID); HTM_SECTION_Begin (Usr_USER_LIST_SECTION_ID);
@ -5398,11 +5408,12 @@ void Usr_SeeTeachers (void)
if (NumUsrs) if (NumUsrs)
{ {
if (Usr_GetIfShowBigList (NumUsrs, if (Usr_GetIfShowBigList (NumUsrs,
Sco_PutParCurrentScope,&Gbl.Scope.Current, ActLstTch,Sco_PutParCurrentScope,&Gbl.Scope.Current,
NULL)) NULL))
{ {
/***** Form to select type of list of users *****/ /***** Form to select type of list of users *****/
Usr_ShowFormsToSelectUsrListType (Sco_PutParCurrentScope,&Gbl.Scope.Current); Usr_ShowFormsToSelectUsrListType (ActLstTch,Sco_PutParCurrentScope,&Gbl.Scope.Current,
NULL);
/***** Draw a class photo with teachers of the course *****/ /***** Draw a class photo with teachers of the course *****/
if (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO) if (Gbl.Usrs.Me.ListType == Set_USR_LIST_AS_CLASS_PHOTO)

View File

@ -365,6 +365,7 @@ void Usr_CopyBasicUsrDataFromList (struct Usr_Data *UsrDat,
void Usr_FreeUsrsList (Rol_Role_t Role); void Usr_FreeUsrsList (Rol_Role_t Role);
bool Usr_GetIfShowBigList (unsigned NumUsrs, bool Usr_GetIfShowBigList (unsigned NumUsrs,
Act_Action_t NextAction,
void (*FuncPars) (void *Args),void *Args, void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit); const char *OnSubmit);
@ -392,7 +393,9 @@ void Usr_FreeSubqueryUsrCods (char *SubQueryUsrs);
void Usr_FreeListOtherRecipients (void); void Usr_FreeListOtherRecipients (void);
void Usr_ShowFormsToSelectUsrListType (void (*FuncPars) (void *Args),void *Args); void Usr_ShowFormsToSelectUsrListType (Act_Action_t NextAction,
void (*FuncPars) (void *Args),void *Args,
const char *OnSubmit);
unsigned Usr_GetColumnsForSelectUsrs (void); unsigned Usr_GetColumnsForSelectUsrs (void);
void Usr_SetUsrDatMainFieldNames (void); void Usr_SetUsrDatMainFieldNames (void);
void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr); void Usr_WriteHeaderFieldsUsrDat (bool PutCheckBoxToSelectUsr);