mirror of https://github.com/acanas/swad-core.git
Version19.169.6
This commit is contained in:
parent
4a01070ca3
commit
6641a97413
|
@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.169.5 (2020-04-08)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.169.6 (2020-04-08)"
|
||||
#define CSS_FILE "swad19.146.css"
|
||||
#define JS_FILE "swad19.153.js"
|
||||
/*
|
||||
|
@ -548,6 +548,7 @@ Funci
|
|||
// TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores
|
||||
// TODO: Integrar pull requests con traducciones del alemán del usuario eruedin en GitHub
|
||||
|
||||
Version 19.169.6: Apr 08, 2020 Mark some parameters as unused (functions from S to Z). (284836 lines)
|
||||
Version 19.169.5: Apr 08, 2020 Mark some parameters as unused (functions from O to R). (284854 lines)
|
||||
Version 19.169.4: Apr 08, 2020 Mark some parameters as unused (functions from I to N). (284903 lines)
|
||||
Version 19.169.3: Apr 08, 2020 Mark some parameters as unused (functions from D to I). (284929 lines)
|
||||
|
|
16
swad_forum.c
16
swad_forum.c
|
@ -392,7 +392,7 @@ static void For_GetParamsForums (struct For_Forums *Forums);
|
|||
static void For_SetForumType (struct For_Forums *Forums);
|
||||
static void For_RestrictAccess (const struct For_Forums *Forums);
|
||||
|
||||
static void For_WriteFormForumPst (const struct For_Forums *Forums,
|
||||
static void For_WriteFormForumPst (struct For_Forums *Forums,
|
||||
bool IsReply,const char *Subject);
|
||||
|
||||
static void For_UpdateNumUsrsNotifiedByEMailAboutPost (long PstCod,unsigned NumUsrsToBeNotifiedByEMail);
|
||||
|
@ -1024,7 +1024,7 @@ static void For_ShowPostsOfAThread (struct For_Forums *Forums,
|
|||
"%s: %s",
|
||||
Txt_Thread,Thr.Subject);
|
||||
Box_BoxBegin (NULL,FrameTitle,
|
||||
For_PutIconNewPost,&Gbl,
|
||||
For_PutIconNewPost,Forums,
|
||||
Hlp_MESSAGES_Forums_posts,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Get posts of a thread from database *****/
|
||||
|
@ -1167,7 +1167,7 @@ static void For_PutIconNewPost (void *Forums)
|
|||
if (Forums)
|
||||
Ico_PutContextualIconToAdd (For_ActionsSeePstFor[((struct For_Forums *) Forums)->ForumSelected.Type],
|
||||
For_NEW_POST_SECTION_ID,
|
||||
For_PutAllHiddenParamsNewPost,&Gbl,
|
||||
For_PutAllHiddenParamsNewPost,Forums,
|
||||
Txt_New_post);
|
||||
}
|
||||
|
||||
|
@ -3847,7 +3847,7 @@ static void For_RestrictAccess (const struct For_Forums *Forums)
|
|||
/********************** Show an area to write a message **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void For_WriteFormForumPst (const struct For_Forums *Forums,
|
||||
static void For_WriteFormForumPst (struct For_Forums *Forums,
|
||||
bool IsReply,const char *Subject)
|
||||
{
|
||||
extern const char *Hlp_MESSAGES_Forums_new_post;
|
||||
|
@ -3874,13 +3874,13 @@ static void For_WriteFormForumPst (const struct For_Forums *Forums,
|
|||
{
|
||||
Frm_StartFormAnchor (For_ActionsRecRepFor[Forums->ForumSelected.Type],
|
||||
For_FORUM_POSTS_SECTION_ID);
|
||||
For_PutAllHiddenParamsNewPost (&Gbl);
|
||||
For_PutAllHiddenParamsNewPost (Forums);
|
||||
}
|
||||
else // Form to write the first post of a new thread
|
||||
{
|
||||
Frm_StartFormAnchor (For_ActionsRecThrFor[Forums->ForumSelected.Type],
|
||||
For_FORUM_POSTS_SECTION_ID);
|
||||
For_PutAllHiddenParamsNewThread (&Gbl);
|
||||
For_PutAllHiddenParamsNewThread (Forums);
|
||||
}
|
||||
|
||||
/***** Subject and content *****/
|
||||
|
@ -4173,14 +4173,14 @@ void For_RequestRemoveThread (void)
|
|||
if (Subject[0])
|
||||
Ale_ShowAlertAndButton (For_ActionsDelThrFor[Forums.ForumSelected.Type],
|
||||
For_FORUM_THREADS_SECTION_ID,NULL,
|
||||
For_PutAllHiddenParamsRemThread,&Gbl,
|
||||
For_PutAllHiddenParamsRemThread,&Forums,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove_thread,
|
||||
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_entire_thread_X,
|
||||
Subject);
|
||||
else
|
||||
Ale_ShowAlertAndButton (For_ActionsDelThrFor[Forums.ForumSelected.Type],
|
||||
For_FORUM_THREADS_SECTION_ID,NULL,
|
||||
For_PutAllHiddenParamsRemThread,&Gbl,
|
||||
For_PutAllHiddenParamsRemThread,&Forums,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove_thread,
|
||||
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_entire_thread);
|
||||
HTM_SECTION_End ();
|
||||
|
|
13
swad_game.c
13
swad_game.c
|
@ -1897,7 +1897,7 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games,struct Gam_Game *Game
|
|||
Games->GamCod = Game->GamCod;
|
||||
if (ICanEditQuestions)
|
||||
Box_BoxBegin (NULL,Txt_Questions,
|
||||
Gam_PutIconToAddNewQuestions,&Gbl,
|
||||
Gam_PutIconToAddNewQuestions,Games,
|
||||
Hlp_ASSESSMENT_Games_questions,Box_NOT_CLOSABLE);
|
||||
else
|
||||
Box_BoxBegin (NULL,Txt_Questions,
|
||||
|
@ -2119,11 +2119,10 @@ static void Gam_PutIconToAddNewQuestions (void *Games)
|
|||
{
|
||||
extern const char *Txt_Add_questions;
|
||||
|
||||
if (Games)
|
||||
/***** Put form to create a new question *****/
|
||||
Ico_PutContextualIconToAdd (ActAddOneGamQst,NULL,
|
||||
Gam_PutParams,Games,
|
||||
Txt_Add_questions);
|
||||
/***** Put form to create a new question *****/
|
||||
Ico_PutContextualIconToAdd (ActAddOneGamQst,NULL,
|
||||
Gam_PutParams,Games,
|
||||
Txt_Add_questions);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -2289,7 +2288,7 @@ void Gam_RequestRemoveQst (void)
|
|||
Games.GamCod = Game.GamCod;
|
||||
Games.QstInd = QstInd;
|
||||
Ale_ShowAlertAndButton (ActRemGamQst,NULL,NULL,
|
||||
Gam_PutParamsOneQst,&Gbl,
|
||||
Gam_PutParamsOneQst,&Games,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove_question,
|
||||
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
|
||||
QstInd);
|
||||
|
|
|
@ -520,55 +520,16 @@ struct Globals
|
|||
} ZIP;
|
||||
} FileBrowser; // Struct used for a file browser
|
||||
struct Prj_Projects Prjs;
|
||||
struct
|
||||
{
|
||||
Usr_Who_t Who;
|
||||
long NotCod; // Used as parameter about social note to be edited, removed...
|
||||
long PubCod; // Used as parameter about social publishing to be edited, removed...
|
||||
} Timeline;
|
||||
struct TL_Timeline Timeline;
|
||||
struct Msg_Messages Msg;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct TT_Range Range;
|
||||
unsigned HoursPerDay; // From start hour to end hour
|
||||
unsigned SecondsPerInterval;
|
||||
unsigned IntervalsPerHour;
|
||||
unsigned IntervalsPerDay;
|
||||
unsigned IntervalsBeforeStartHour;
|
||||
} Config;
|
||||
TT_TimeTableType_t Type;
|
||||
TT_TimeTableView_t View;
|
||||
unsigned Weekday;
|
||||
unsigned Interval;
|
||||
unsigned Column;
|
||||
TT_ClassType_t ClassType;
|
||||
unsigned DurationIntervals;
|
||||
char Info[TT_MAX_BYTES_INFO + 1];
|
||||
// char Place[TT_MAX_BYTES_PLACE + 1];
|
||||
long GrpCod; // Group code (-1 if no group selected)
|
||||
struct
|
||||
{
|
||||
bool PutIconEditCrsTT;
|
||||
bool PutIconEditOfficeHours;
|
||||
bool PutIconPrint;
|
||||
} ContextualIcons;
|
||||
} TimeTable;
|
||||
struct TT_Timetable Timetable;
|
||||
struct
|
||||
{
|
||||
struct DateTime DateIni; // TODO: Remove in future versions
|
||||
struct DateTime DateEnd; // TODO: Remove in future versions
|
||||
time_t TimeUTC[Dat_NUM_START_END_TIME];
|
||||
} DateRange;
|
||||
struct
|
||||
{
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
unsigned Num; // Number of surveys
|
||||
long *LstSvyCods; // List of survey codes
|
||||
Dat_StartEndTime_t SelectedOrder;
|
||||
unsigned CurrentPage;
|
||||
} Svys;
|
||||
struct Svy_Surveys Svys;
|
||||
struct Sta_Stats Stat;
|
||||
|
||||
/* Cache */
|
||||
|
|
|
@ -117,7 +117,7 @@ void Ico_PutIconsToSelectIconSet (void)
|
|||
char Icon[PATH_MAX + 1];
|
||||
|
||||
Box_BoxBegin (NULL,Txt_Icons,
|
||||
Ico_PutIconsIconSet,&Gbl,
|
||||
Ico_PutIconsIconSet,NULL,
|
||||
Hlp_PROFILE_Settings_icons,Box_NOT_CLOSABLE);
|
||||
Set_StartSettingsHead ();
|
||||
Set_StartOneSettingSelector ();
|
||||
|
|
|
@ -1906,7 +1906,7 @@ void Ntf_PutFormChangeNotifSentByEMail (void)
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_Notifications,
|
||||
Ntf_PutIconsNotif,&Gbl,
|
||||
Ntf_PutIconsNotif,NULL,
|
||||
Hlp_PROFILE_Settings_notifications,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Begin form *****/
|
||||
|
|
|
@ -1304,8 +1304,8 @@ static void Rec_ShowRecordOneTchCrs (void)
|
|||
if (ShowOfficeHours)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"REC_RIGHT\"");
|
||||
Gbl.TimeTable.Type = TT_TUTORING_TIMETABLE;
|
||||
Box_BoxBegin (Width,Txt_TIMETABLE_TYPES[Gbl.TimeTable.Type],
|
||||
Gbl.Timetable.Type = TT_TUTORING_TIMETABLE;
|
||||
Box_BoxBegin (Width,Txt_TIMETABLE_TYPES[Gbl.Timetable.Type],
|
||||
NULL,NULL,
|
||||
Hlp_USERS_Teachers_timetable,Box_NOT_CLOSABLE);
|
||||
TT_ShowTimeTable (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
@ -1426,8 +1426,8 @@ static void Rec_ListRecordsTchs (Rec_SharedRecordViewType_t TypeOfView)
|
|||
if (ShowOfficeHours)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"REC_RIGHT\"");
|
||||
Gbl.TimeTable.Type = TT_TUTORING_TIMETABLE;
|
||||
Box_BoxBegin (Width,Txt_TIMETABLE_TYPES[Gbl.TimeTable.Type],
|
||||
Gbl.Timetable.Type = TT_TUTORING_TIMETABLE;
|
||||
Box_BoxBegin (Width,Txt_TIMETABLE_TYPES[Gbl.Timetable.Type],
|
||||
NULL,NULL,
|
||||
Hlp_USERS_Teachers_timetable,Box_NOT_CLOSABLE);
|
||||
TT_ShowTimeTable (UsrDat.UsrCod);
|
||||
|
|
|
@ -177,10 +177,10 @@ void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange)
|
|||
/********************** Put hidden parameter scope ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Sco_PutParamCurrentScope (void *Args)
|
||||
void Sco_PutParamCurrentScope (void *Scope)
|
||||
{
|
||||
if (Args)
|
||||
Sco_PutParamScope ("ScopeUsr",Gbl.Scope.Current);
|
||||
if (Scope)
|
||||
Sco_PutParamScope ("ScopeUsr",*((Hie_Level_t *) Scope));
|
||||
}
|
||||
|
||||
void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope)
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
/*****************************************************************************/
|
||||
|
||||
void Sco_PutSelectorScope (const char *ParamName,bool SendOnChange);
|
||||
void Sco_PutParamCurrentScope (void *Args);
|
||||
void Sco_PutParamCurrentScope (void *Scope);
|
||||
void Sco_PutParamScope (const char *ParamName,Hie_Level_t Scope);
|
||||
void Sco_GetScope (const char *ParamName);
|
||||
void Sco_AdjustScope (void);
|
||||
|
|
232
swad_survey.c
232
swad_survey.c
|
@ -89,28 +89,25 @@ struct SurveyQuestion // Must be initialized to 0 before using it
|
|||
/***************************** Private variables *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
long Svy_CurrentSvyCod; // Used as parameter in contextual links
|
||||
long Svy_CurrentQstCod; // Used as parameter in contextual links
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_ListAllSurveys (void);
|
||||
static bool Svy_CheckIfICanCreateSvy (void);
|
||||
static void Svy_PutIconsListSurveys (void *Args);
|
||||
static void Svy_PutIconToCreateNewSvy (void);
|
||||
static void Svy_PutIconsListSurveys (void *Surveys);
|
||||
static void Svy_PutIconToCreateNewSvy (struct Svy_Surveys *Surveys);
|
||||
static void Svy_PutButtonToCreateNewSvy (void);
|
||||
static void Svy_PutParamsToCreateNewSvy (void *Args);
|
||||
static void Svy_ParamsWhichGroupsToShow (void *Args);
|
||||
static void Svy_PutParamsToCreateNewSvy (void *Surveys);
|
||||
static void Svy_ParamsWhichGroupsToShow (void *Surveys);
|
||||
static void Svy_ShowOneSurvey (long SvyCod,bool ShowOnlyThisSvyComplete);
|
||||
static void Svy_WriteAuthor (struct Survey *Svy);
|
||||
static void Svy_WriteStatus (struct Survey *Svy);
|
||||
static void Svy_WriteAuthor (struct Svy_Survey *Svy);
|
||||
static void Svy_WriteStatus (struct Svy_Survey *Svy);
|
||||
static void Svy_GetParamSvyOrder (void);
|
||||
|
||||
static void Svy_PutFormsToRemEditOneSvy (const struct Survey *Svy,
|
||||
static void Svy_PutFormsToRemEditOneSvy (const struct Svy_Survey *Svy,
|
||||
const char *Anchor);
|
||||
static void Svy_PutParams (void *Args);
|
||||
static void Svy_PutParams (void *Surveys);
|
||||
|
||||
static void Svy_GetListSurveys (void);
|
||||
|
||||
|
@ -123,17 +120,17 @@ static long Svy_GetParamSvyCod (void);
|
|||
|
||||
static void Svy_PutButtonToResetSurvey (void);
|
||||
|
||||
static bool Svy_CheckIfSimilarSurveyExists (struct Survey *Svy);
|
||||
static void Svy_SetDefaultAndAllowedScope (struct Survey *Svy);
|
||||
static bool Svy_CheckIfSimilarSurveyExists (struct Svy_Survey *Svy);
|
||||
static void Svy_SetDefaultAndAllowedScope (struct Svy_Survey *Svy);
|
||||
static void Svy_ShowLstGrpsToEditSurvey (long SvyCod);
|
||||
static void Svy_UpdateNumUsrsNotifiedByEMailAboutSurvey (long SvyCod,
|
||||
unsigned NumUsrsToBeNotifiedByEMail);
|
||||
static void Svy_CreateSurvey (struct Survey *Svy,const char *Txt);
|
||||
static void Svy_UpdateSurvey (struct Survey *Svy,const char *Txt);
|
||||
static void Svy_CreateSurvey (struct Svy_Survey *Svy,const char *Txt);
|
||||
static void Svy_UpdateSurvey (struct Svy_Survey *Svy,const char *Txt);
|
||||
static bool Svy_CheckIfSvyIsAssociatedToGrps (long SvyCod);
|
||||
static void Svy_RemoveAllTheGrpsAssociatedToAndSurvey (long SvyCod);
|
||||
static void Svy_CreateGrps (long SvyCod);
|
||||
static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Survey *Svy);
|
||||
static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy);
|
||||
static bool Svy_CheckIfICanDoThisSurveyBasedOnGrps (long SvyCod);
|
||||
|
||||
static unsigned Svy_GetNumQstsSvy (long SvyCod);
|
||||
|
@ -152,18 +149,18 @@ static void Svy_FreeTextChoiceAnswer (struct SurveyQuestion *SvyQst,unsigned Num
|
|||
|
||||
static unsigned Svy_GetQstIndFromQstCod (long QstCod);
|
||||
static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod);
|
||||
static void Svy_ListSvyQuestions (struct Survey *Svy);
|
||||
static void Svy_PutParamsToEditQuestion (void *Args);
|
||||
static void Svy_PutIconToAddNewQuestion (void *Args);
|
||||
static void Svy_ListSvyQuestions (struct Svy_Survey *Svy);
|
||||
static void Svy_PutParamsToEditQuestion (void *Surveys);
|
||||
static void Svy_PutIconToAddNewQuestion (void *Surveys);
|
||||
static void Svy_PutButtonToCreateNewQuestion (void);
|
||||
static void Svy_WriteQstStem (const char *Stem);
|
||||
static void Svy_WriteAnswersOfAQst (struct Survey *Svy,
|
||||
static void Svy_WriteAnswersOfAQst (struct Svy_Survey *Svy,
|
||||
struct SurveyQuestion *SvyQst,
|
||||
bool PutFormAnswerSurvey);
|
||||
static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs);
|
||||
|
||||
static void Svy_PutIconToRemoveOneQst (void *Args);
|
||||
static void Svy_PutParamsRemoveOneQst (void *Args);
|
||||
static void Svy_PutIconToRemoveOneQst (void *Surveys);
|
||||
static void Svy_PutParamsRemoveOneQst (void *Surveys);
|
||||
|
||||
static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod);
|
||||
static void Svy_IncreaseAnswerInDB (long QstCod,unsigned AnsInd);
|
||||
|
@ -219,7 +216,7 @@ static void Svy_ListAllSurveys (void)
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin ("100%",Txt_Surveys,
|
||||
Svy_PutIconsListSurveys,&Gbl,
|
||||
Svy_PutIconsListSurveys,&Gbl.Svys,
|
||||
Hlp_ASSESSMENT_Surveys,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Select whether show only my groups or all groups *****/
|
||||
|
@ -227,7 +224,7 @@ static void Svy_ListAllSurveys (void)
|
|||
{
|
||||
Set_StartSettingsHead ();
|
||||
Grp_ShowFormToSelWhichGrps (ActSeeAllSvy,
|
||||
Svy_ParamsWhichGroupsToShow,&Gbl);
|
||||
Svy_ParamsWhichGroupsToShow,&Gbl.Svys);
|
||||
Set_EndSettingsHead ();
|
||||
}
|
||||
|
||||
|
@ -328,29 +325,26 @@ static bool Svy_CheckIfICanCreateSvy (void)
|
|||
/***************** Put contextual icons in list of surveys *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutIconsListSurveys (void *Args)
|
||||
static void Svy_PutIconsListSurveys (void *Surveys)
|
||||
{
|
||||
if (Args)
|
||||
{
|
||||
/***** Put icon to create a new survey *****/
|
||||
if (Svy_CheckIfICanCreateSvy ())
|
||||
Svy_PutIconToCreateNewSvy ();
|
||||
/***** Put icon to create a new survey *****/
|
||||
if (Svy_CheckIfICanCreateSvy ())
|
||||
Svy_PutIconToCreateNewSvy ((struct Svy_Surveys *) Surveys);
|
||||
|
||||
/***** Put icon to show a figure *****/
|
||||
Fig_PutIconToShowFigure (Fig_SURVEYS);
|
||||
}
|
||||
/***** Put icon to show a figure *****/
|
||||
Fig_PutIconToShowFigure (Fig_SURVEYS);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Put icon to create a new survey **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutIconToCreateNewSvy (void)
|
||||
static void Svy_PutIconToCreateNewSvy (struct Svy_Surveys *Surveys)
|
||||
{
|
||||
extern const char *Txt_New_survey;
|
||||
|
||||
Ico_PutContextualIconToAdd (ActFrmNewSvy,NULL,
|
||||
Svy_PutParamsToCreateNewSvy,&Gbl,
|
||||
Svy_PutParamsToCreateNewSvy,Surveys,
|
||||
Txt_New_survey);
|
||||
}
|
||||
|
||||
|
@ -363,7 +357,7 @@ static void Svy_PutButtonToCreateNewSvy (void)
|
|||
extern const char *Txt_New_survey;
|
||||
|
||||
Frm_StartForm (ActFrmNewSvy);
|
||||
Svy_PutParamsToCreateNewSvy (&Gbl);
|
||||
Svy_PutParamsToCreateNewSvy (&Gbl.Svys);
|
||||
Btn_PutConfirmButton (Txt_New_survey);
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -372,16 +366,16 @@ static void Svy_PutButtonToCreateNewSvy (void)
|
|||
/******************* Put parameters to create a new survey *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutParamsToCreateNewSvy (void *Args)
|
||||
static void Svy_PutParamsToCreateNewSvy (void *Surveys)
|
||||
{
|
||||
Grp_WhichGroups_t WhichGroups;
|
||||
|
||||
if (Args)
|
||||
if (Surveys)
|
||||
{
|
||||
Svy_PutHiddenParamSvyOrder ();
|
||||
Svy_PutHiddenParamSvyOrder (((struct Svy_Surveys *) Surveys)->SelectedOrder);
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
Grp_PutParamWhichGroups (&WhichGroups);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,Gbl.Svys.CurrentPage);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,((struct Svy_Surveys *) Surveys)->CurrentPage);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -389,12 +383,12 @@ static void Svy_PutParamsToCreateNewSvy (void *Args)
|
|||
/**************** Put params to select which groups to show ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_ParamsWhichGroupsToShow (void *Args)
|
||||
static void Svy_ParamsWhichGroupsToShow (void *Surveys)
|
||||
{
|
||||
if (Args)
|
||||
if (Surveys)
|
||||
{
|
||||
Svy_PutHiddenParamSvyOrder ();
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,Gbl.Svys.CurrentPage);
|
||||
Svy_PutHiddenParamSvyOrder (((struct Svy_Surveys *) Surveys)->SelectedOrder);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,((struct Svy_Surveys *) Surveys)->CurrentPage);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -404,7 +398,7 @@ static void Svy_ParamsWhichGroupsToShow (void *Args)
|
|||
|
||||
void Svy_SeeOneSurvey (void)
|
||||
{
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -443,7 +437,7 @@ static void Svy_ShowOneSurvey (long SvyCod,bool ShowOnlyThisSvyComplete)
|
|||
static unsigned UniqueId = 0;
|
||||
char *Id;
|
||||
Grp_WhichGroups_t WhichGroups;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||
|
||||
/***** Begin box *****/
|
||||
|
@ -532,7 +526,7 @@ static void Svy_ShowOneSurvey (long SvyCod,bool ShowOnlyThisSvyComplete)
|
|||
HTM_ARTICLE_Begin (Anchor);
|
||||
Frm_StartForm (ActSeeSvy);
|
||||
Svy_PutParamSvyCod (SvyCod);
|
||||
Svy_PutHiddenParamSvyOrder ();
|
||||
Svy_PutHiddenParamSvyOrder (Gbl.Svys.SelectedOrder);
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
Grp_PutParamWhichGroups (&WhichGroups);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,Gbl.Svys.CurrentPage);
|
||||
|
@ -574,7 +568,7 @@ static void Svy_ShowOneSurvey (long SvyCod,bool ShowOnlyThisSvyComplete)
|
|||
|
||||
Frm_StartForm (ActSeeSvy);
|
||||
Svy_PutParamSvyCod (Svy.SvyCod);
|
||||
Svy_PutHiddenParamSvyOrder ();
|
||||
Svy_PutHiddenParamSvyOrder (Gbl.Svys.SelectedOrder);
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
Grp_PutParamWhichGroups (&WhichGroups);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,Gbl.Svys.CurrentPage);
|
||||
|
@ -590,7 +584,7 @@ static void Svy_ShowOneSurvey (long SvyCod,bool ShowOnlyThisSvyComplete)
|
|||
|
||||
Frm_StartForm (ActSeeSvy);
|
||||
Svy_PutParamSvyCod (Svy.SvyCod);
|
||||
Svy_PutHiddenParamSvyOrder ();
|
||||
Svy_PutHiddenParamSvyOrder (Gbl.Svys.SelectedOrder);
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
Grp_PutParamWhichGroups (&WhichGroups);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,Gbl.Svys.CurrentPage);
|
||||
|
@ -716,7 +710,7 @@ static void Svy_ShowOneSurvey (long SvyCod,bool ShowOnlyThisSvyComplete)
|
|||
/*********************** Write the author of a survey ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_WriteAuthor (struct Survey *Svy)
|
||||
static void Svy_WriteAuthor (struct Svy_Survey *Svy)
|
||||
{
|
||||
Usr_WriteAuthor1Line (Svy->UsrCod,!Svy->Status.Visible);
|
||||
}
|
||||
|
@ -725,7 +719,7 @@ static void Svy_WriteAuthor (struct Survey *Svy)
|
|||
/************************ Write status of a survey ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_WriteStatus (struct Survey *Svy)
|
||||
static void Svy_WriteStatus (struct Svy_Survey *Svy)
|
||||
{
|
||||
extern const char *Txt_Hidden_survey;
|
||||
extern const char *Txt_Visible_survey;
|
||||
|
@ -843,61 +837,61 @@ static void Svy_GetParamSvyOrder (void)
|
|||
/***** Put a hidden parameter with the type of order in list of surveys ******/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Svy_PutHiddenParamSvyOrder (void)
|
||||
void Svy_PutHiddenParamSvyOrder (Dat_StartEndTime_t SelectedOrder)
|
||||
{
|
||||
Dat_PutHiddenParamOrder (Gbl.Svys.SelectedOrder);
|
||||
Dat_PutHiddenParamOrder (SelectedOrder);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Put a link (form) to edit one survey ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutFormsToRemEditOneSvy (const struct Survey *Svy,
|
||||
static void Svy_PutFormsToRemEditOneSvy (const struct Svy_Survey *Svy,
|
||||
const char *Anchor)
|
||||
{
|
||||
extern const char *Txt_Reset;
|
||||
|
||||
Svy_CurrentSvyCod = Svy->SvyCod; // Used as parameters in contextual links
|
||||
Gbl.Svys.SvyCod = Svy->SvyCod; // Used as parameters in contextual links
|
||||
|
||||
/***** Put form to remove survey *****/
|
||||
Ico_PutContextualIconToRemove (ActReqRemSvy,
|
||||
Svy_PutParams,&Gbl);
|
||||
Svy_PutParams,&Gbl.Svys);
|
||||
|
||||
/***** Put form to reset survey *****/
|
||||
Lay_PutContextualLinkOnlyIcon (ActReqRstSvy,NULL,
|
||||
Svy_PutParams,&Gbl,
|
||||
Svy_PutParams,&Gbl.Svys,
|
||||
"recycle.svg",
|
||||
Txt_Reset);
|
||||
|
||||
/***** Put form to hide/show survey *****/
|
||||
if (Svy->Status.Visible)
|
||||
Ico_PutContextualIconToHide (ActHidSvy,Anchor,
|
||||
Svy_PutParams,&Gbl);
|
||||
Svy_PutParams,&Gbl.Svys);
|
||||
else
|
||||
Ico_PutContextualIconToUnhide (ActShoSvy,Anchor,
|
||||
Svy_PutParams,&Gbl);
|
||||
Svy_PutParams,&Gbl.Svys);
|
||||
|
||||
/***** Put form to edit survey *****/
|
||||
Ico_PutContextualIconToEdit (ActEdiOneSvy,NULL,
|
||||
Svy_PutParams,&Gbl);
|
||||
Svy_PutParams,&Gbl.Svys);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Params used to edit a survey *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutParams (void *Args)
|
||||
static void Svy_PutParams (void *Surveys)
|
||||
{
|
||||
Grp_WhichGroups_t WhichGroups;
|
||||
|
||||
if (Args)
|
||||
if (Surveys)
|
||||
{
|
||||
if (Svy_CurrentSvyCod > 0)
|
||||
Svy_PutParamSvyCod (Svy_CurrentSvyCod);
|
||||
Dat_PutHiddenParamOrder (Gbl.Svys.SelectedOrder);
|
||||
if (Gbl.Svys.SvyCod > 0)
|
||||
Svy_PutParamSvyCod (Gbl.Svys.SvyCod);
|
||||
Dat_PutHiddenParamOrder (((struct Svy_Surveys *) Surveys)->SelectedOrder);
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
Grp_PutParamWhichGroups (&WhichGroups);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,Gbl.Svys.CurrentPage);
|
||||
Pag_PutHiddenParamPagNum (Pag_SURVEYS,((struct Svy_Surveys *) Surveys)->CurrentPage);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1226,7 +1220,7 @@ static void Svy_SetAllowedAndHiddenScopes (unsigned *ScopesAllowed,
|
|||
/********************* Get survey data using its code ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Svy_GetDataOfSurveyByCod (struct Survey *Svy)
|
||||
void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1554,7 +1548,7 @@ void Svy_AskRemSurvey (void)
|
|||
{
|
||||
extern const char *Txt_Do_you_really_want_to_remove_the_survey_X;
|
||||
extern const char *Txt_Remove_survey;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -1571,9 +1565,9 @@ void Svy_AskRemSurvey (void)
|
|||
Lay_NoPermissionExit ();
|
||||
|
||||
/***** Show question and button to remove survey *****/
|
||||
Svy_CurrentSvyCod = Svy.SvyCod;
|
||||
Gbl.Svys.SvyCod = Svy.SvyCod;
|
||||
Ale_ShowAlertAndButton (ActRemSvy,NULL,NULL,
|
||||
Svy_PutParams,&Gbl,
|
||||
Svy_PutParams,&Gbl.Svys,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove_survey,
|
||||
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_survey_X,
|
||||
Svy.Title);
|
||||
|
@ -1589,7 +1583,7 @@ void Svy_AskRemSurvey (void)
|
|||
void Svy_RemoveSurvey (void)
|
||||
{
|
||||
extern const char *Txt_Survey_X_removed;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -1649,7 +1643,7 @@ void Svy_RemoveSurvey (void)
|
|||
void Svy_AskResetSurvey (void)
|
||||
{
|
||||
extern const char *Txt_Do_you_really_want_to_reset_the_survey_X;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -1670,7 +1664,7 @@ void Svy_AskResetSurvey (void)
|
|||
Svy.Title);
|
||||
|
||||
/***** Button of confirmation of reset *****/
|
||||
Svy_CurrentSvyCod = Svy.SvyCod;
|
||||
Gbl.Svys.SvyCod = Svy.SvyCod;
|
||||
Svy_PutButtonToResetSurvey ();
|
||||
|
||||
/***** Show surveys again *****/
|
||||
|
@ -1686,7 +1680,7 @@ static void Svy_PutButtonToResetSurvey (void)
|
|||
extern const char *Txt_Reset_survey;
|
||||
|
||||
Frm_StartForm (ActRstSvy);
|
||||
Svy_PutParams (&Gbl);
|
||||
Svy_PutParams (&Gbl.Svys);
|
||||
Btn_PutRemoveButton (Txt_Reset_survey);
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -1698,7 +1692,7 @@ static void Svy_PutButtonToResetSurvey (void)
|
|||
void Svy_ResetSurvey (void)
|
||||
{
|
||||
extern const char *Txt_Survey_X_reset;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -1740,7 +1734,7 @@ void Svy_ResetSurvey (void)
|
|||
|
||||
void Svy_HideSurvey (void)
|
||||
{
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -1771,7 +1765,7 @@ void Svy_HideSurvey (void)
|
|||
|
||||
void Svy_UnhideSurvey (void)
|
||||
{
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get parameters *****/
|
||||
Svy_GetParamSvyOrder ();
|
||||
|
@ -1800,7 +1794,7 @@ void Svy_UnhideSurvey (void)
|
|||
/******************* Check if the title of a survey exists *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static bool Svy_CheckIfSimilarSurveyExists (struct Survey *Svy)
|
||||
static bool Svy_CheckIfSimilarSurveyExists (struct Svy_Survey *Svy)
|
||||
{
|
||||
/***** Get number of surveys with a field value from database *****/
|
||||
return (DB_QueryCOUNT ("can not get similar surveys",
|
||||
|
@ -1828,7 +1822,7 @@ void Svy_RequestCreatOrEditSvy (void)
|
|||
extern const char *Txt_Users;
|
||||
extern const char *Txt_Create_survey;
|
||||
extern const char *Txt_Save_changes;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
bool ItsANewSurvey;
|
||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||
static const Dat_SetHMS SetHMS[Dat_NUM_START_END_TIME] =
|
||||
|
@ -1882,10 +1876,10 @@ void Svy_RequestCreatOrEditSvy (void)
|
|||
}
|
||||
|
||||
/***** Begin form *****/
|
||||
Svy_CurrentSvyCod = Svy.SvyCod;
|
||||
Gbl.Svys.SvyCod = Svy.SvyCod;
|
||||
Frm_StartForm (ItsANewSurvey ? ActNewSvy :
|
||||
ActChgSvy);
|
||||
Svy_PutParams (&Gbl);
|
||||
Svy_PutParams (&Gbl.Svys);
|
||||
|
||||
/***** Begin box and table *****/
|
||||
if (ItsANewSurvey)
|
||||
|
@ -1992,7 +1986,7 @@ void Svy_RequestCreatOrEditSvy (void)
|
|||
/****** Set default and allowed scopes depending on logged user's role *******/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_SetDefaultAndAllowedScope (struct Survey *Svy)
|
||||
static void Svy_SetDefaultAndAllowedScope (struct Svy_Survey *Svy)
|
||||
{
|
||||
bool ICanEdit = false;
|
||||
|
||||
|
@ -2136,8 +2130,8 @@ void Svy_RecFormSurvey (void)
|
|||
{
|
||||
extern const char *Txt_Already_existed_a_survey_with_the_title_X;
|
||||
extern const char *Txt_You_must_specify_the_title_of_the_survey;
|
||||
struct Survey OldSvy;
|
||||
struct Survey NewSvy;
|
||||
struct Svy_Survey OldSvy;
|
||||
struct Svy_Survey NewSvy;
|
||||
bool ItsANewSurvey;
|
||||
bool NewSurveyIsCorrect = true;
|
||||
unsigned NumUsrsToBeNotifiedByEMail;
|
||||
|
@ -2293,7 +2287,7 @@ static void Svy_UpdateNumUsrsNotifiedByEMailAboutSurvey (long SvyCod,
|
|||
/*************************** Create a new survey *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_CreateSurvey (struct Survey *Svy,const char *Txt)
|
||||
static void Svy_CreateSurvey (struct Svy_Survey *Svy,const char *Txt)
|
||||
{
|
||||
extern const char *Txt_Created_new_survey_X;
|
||||
|
||||
|
@ -2327,7 +2321,7 @@ static void Svy_CreateSurvey (struct Survey *Svy,const char *Txt)
|
|||
/************************* Update an existing survey *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_UpdateSurvey (struct Survey *Svy,const char *Txt)
|
||||
static void Svy_UpdateSurvey (struct Svy_Survey *Svy,const char *Txt)
|
||||
{
|
||||
extern const char *Txt_The_survey_has_been_modified;
|
||||
|
||||
|
@ -2450,7 +2444,7 @@ static void Svy_CreateGrps (long SvyCod)
|
|||
/************ Get and write the names of the groups of a survey **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Survey *Svy)
|
||||
static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
|
||||
{
|
||||
extern const char *Txt_Group;
|
||||
extern const char *Txt_Groups;
|
||||
|
@ -2705,13 +2699,13 @@ static void Svy_ShowFormEditOneQst (long SvyCod,struct SurveyQuestion *SvyQst,
|
|||
if (SvyQst->QstCod > 0) // If the question already has assigned a code
|
||||
{
|
||||
/* Parameters for contextual icon */
|
||||
Svy_CurrentSvyCod = SvyCod;
|
||||
Svy_CurrentQstCod = SvyQst->QstCod;
|
||||
Gbl.Svys.SvyCod = SvyCod;
|
||||
Gbl.Svys.QstCod = SvyQst->QstCod;
|
||||
|
||||
if (asprintf (&Title,"%s %u",Txt_Question,SvyQst->QstInd + 1) < 0) // Question index may be 0, 1, 2, 3,...
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
Box_BoxBegin (NULL,Title,
|
||||
Svy_PutIconToRemoveOneQst,&Gbl,
|
||||
Svy_PutIconToRemoveOneQst,&Gbl.Svys,
|
||||
NULL,Box_NOT_CLOSABLE);
|
||||
free (Title);
|
||||
}
|
||||
|
@ -3201,7 +3195,7 @@ static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod)
|
|||
/************************ List the questions of a survey *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_ListSvyQuestions (struct Survey *Svy)
|
||||
static void Svy_ListSvyQuestions (struct Svy_Survey *Svy)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Surveys_questions;
|
||||
extern const char *Txt_Questions;
|
||||
|
@ -3229,10 +3223,10 @@ static void Svy_ListSvyQuestions (struct Survey *Svy)
|
|||
Svy->SvyCod);
|
||||
|
||||
/***** Begin box *****/
|
||||
Svy_CurrentSvyCod = Svy->SvyCod;
|
||||
Gbl.Svys.SvyCod = Svy->SvyCod;
|
||||
if (Svy->Status.ICanEdit)
|
||||
Box_BoxBegin (NULL,Txt_Questions,
|
||||
Svy_PutIconToAddNewQuestion,&Gbl,
|
||||
Svy_PutIconToAddNewQuestion,&Gbl.Svys,
|
||||
Hlp_ASSESSMENT_Surveys_questions,Box_NOT_CLOSABLE);
|
||||
else
|
||||
Box_BoxBegin (NULL,Txt_Questions,
|
||||
|
@ -3290,10 +3284,10 @@ static void Svy_ListSvyQuestions (struct Survey *Svy)
|
|||
Frm_EndForm ();
|
||||
|
||||
/* Write icon to edit the question */
|
||||
Svy_CurrentSvyCod = Svy->SvyCod;
|
||||
Svy_CurrentQstCod = SvyQst.QstCod;
|
||||
Gbl.Svys.SvyCod = Svy->SvyCod;
|
||||
Gbl.Svys.QstCod = SvyQst.QstCod;
|
||||
Ico_PutContextualIconToEdit (ActEdiOneSvyQst,NULL,
|
||||
Svy_PutParamsToEditQuestion,&Gbl);
|
||||
Svy_PutParamsToEditQuestion,&Gbl.Svys);
|
||||
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
@ -3351,12 +3345,12 @@ static void Svy_ListSvyQuestions (struct Survey *Svy)
|
|||
/******************** Put parameters to edit a question **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutParamsToEditQuestion (void *Args)
|
||||
static void Svy_PutParamsToEditQuestion (void *Surveys)
|
||||
{
|
||||
if (Args)
|
||||
if (Surveys)
|
||||
{
|
||||
Svy_PutParamSvyCod (Svy_CurrentSvyCod);
|
||||
Svy_PutParamQstCod (Svy_CurrentQstCod);
|
||||
Svy_PutParamSvyCod (((struct Svy_Surveys *) Surveys)->SvyCod);
|
||||
Svy_PutParamQstCod (((struct Svy_Surveys *) Surveys)->QstCod);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3364,15 +3358,14 @@ static void Svy_PutParamsToEditQuestion (void *Args)
|
|||
/***************** Put icon to add a new question to survey ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutIconToAddNewQuestion (void *Args)
|
||||
static void Svy_PutIconToAddNewQuestion (void *Surveys)
|
||||
{
|
||||
extern const char *Txt_New_question;
|
||||
|
||||
if (Args)
|
||||
/***** Put form to create a new question *****/
|
||||
Ico_PutContextualIconToAdd (ActEdiOneSvyQst,NULL,
|
||||
Svy_PutParams,&Gbl,
|
||||
Txt_New_question);
|
||||
/***** Put form to create a new question *****/
|
||||
Ico_PutContextualIconToAdd (ActEdiOneSvyQst,NULL,
|
||||
Svy_PutParams,Surveys,
|
||||
Txt_New_question);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3384,7 +3377,7 @@ static void Svy_PutButtonToCreateNewQuestion (void)
|
|||
extern const char *Txt_New_question;
|
||||
|
||||
Frm_StartForm (ActEdiOneSvyQst);
|
||||
Svy_PutParams (&Gbl);
|
||||
Svy_PutParams (&Gbl.Svys);
|
||||
Btn_PutConfirmButton (Txt_New_question);
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -3418,7 +3411,7 @@ static void Svy_WriteQstStem (const char *Stem)
|
|||
/************** Get and write the answers of a survey question ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_WriteAnswersOfAQst (struct Survey *Svy,
|
||||
static void Svy_WriteAnswersOfAQst (struct Svy_Survey *Svy,
|
||||
struct SurveyQuestion *SvyQst,
|
||||
bool PutFormAnswerSurvey)
|
||||
{
|
||||
|
@ -3572,23 +3565,22 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
|
|||
/********************* Put icon to remove one question ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutIconToRemoveOneQst (void *Args)
|
||||
static void Svy_PutIconToRemoveOneQst (void *Surveys)
|
||||
{
|
||||
if (Args)
|
||||
Ico_PutContextualIconToRemove (ActReqRemSvyQst,
|
||||
Svy_PutParamsRemoveOneQst,Args);
|
||||
Ico_PutContextualIconToRemove (ActReqRemSvyQst,
|
||||
Svy_PutParamsRemoveOneQst,Surveys);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Put parameter to remove one question *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Svy_PutParamsRemoveOneQst (void *Args)
|
||||
static void Svy_PutParamsRemoveOneQst (void *Surveys)
|
||||
{
|
||||
if (Args)
|
||||
if (Surveys)
|
||||
{
|
||||
Svy_PutParamSvyCod (Svy_CurrentSvyCod);
|
||||
Svy_PutParamQstCod (Svy_CurrentQstCod);
|
||||
Svy_PutParamSvyCod (((struct Svy_Surveys *) Surveys)->SvyCod);
|
||||
Svy_PutParamQstCod (((struct Svy_Surveys *) Surveys)->QstCod);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3619,10 +3611,10 @@ void Svy_RequestRemoveQst (void)
|
|||
SvyQst.QstInd = Svy_GetQstIndFromQstCod (SvyQst.QstCod);
|
||||
|
||||
/***** Show question and button to remove question *****/
|
||||
Svy_CurrentSvyCod = SvyCod;
|
||||
Svy_CurrentQstCod = SvyQst.QstCod;
|
||||
Gbl.Svys.SvyCod = SvyCod;
|
||||
Gbl.Svys.QstCod = SvyQst.QstCod;
|
||||
Ale_ShowAlertAndButton (ActRemSvyQst,NULL,NULL,
|
||||
Svy_PutParamsRemoveOneQst,&Gbl,
|
||||
Svy_PutParamsRemoveOneQst,&Gbl.Svys,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove_question,
|
||||
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
|
||||
(long) SvyQst.QstInd + 1);
|
||||
|
@ -3688,7 +3680,7 @@ void Svy_ReceiveSurveyAnswers (void)
|
|||
{
|
||||
extern const char *Txt_You_already_answered_this_survey_before;
|
||||
extern const char *Txt_Thanks_for_answering_the_survey;
|
||||
struct Survey Svy;
|
||||
struct Svy_Survey Svy;
|
||||
|
||||
/***** Get survey code *****/
|
||||
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) == -1L)
|
||||
|
|
|
@ -43,7 +43,18 @@ typedef enum
|
|||
Svy_END_TIME = 1,
|
||||
} Svy_StartOrEndTime_t;
|
||||
|
||||
struct Survey
|
||||
struct Svy_Surveys
|
||||
{
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
unsigned Num; // Number of surveys
|
||||
long *LstSvyCods; // List of survey codes
|
||||
Dat_StartEndTime_t SelectedOrder;
|
||||
unsigned CurrentPage;
|
||||
long SvyCod;
|
||||
long QstCod;
|
||||
};
|
||||
|
||||
struct Svy_Survey
|
||||
{
|
||||
long SvyCod;
|
||||
Hie_Level_t Scope;
|
||||
|
@ -83,10 +94,10 @@ typedef enum
|
|||
|
||||
void Svy_SeeAllSurveys (void);
|
||||
void Svy_SeeOneSurvey (void);
|
||||
void Svy_PutHiddenParamSvyOrder (void);
|
||||
void Svy_PutHiddenParamSvyOrder (Dat_StartEndTime_t SelectedOrder);
|
||||
void Svy_RequestCreatOrEditSvy (void);
|
||||
void Svy_GetDataOfSurveyByCod (struct Survey *Svy);
|
||||
void Svy_GetDataOfSurveyByFolder (struct Survey *Svy);
|
||||
void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy);
|
||||
void Svy_GetDataOfSurveyByFolder (struct Svy_Survey *Svy);
|
||||
void Svy_FreeListSurveys (void);
|
||||
void Svy_GetNotifSurvey (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||
char **ContentStr,
|
||||
|
|
|
@ -105,7 +105,7 @@ static void Syl_ShowSyllabus (bool PutIconToEdit);
|
|||
static void Syl_ShowRowSyllabus (unsigned NumItem,
|
||||
int Level,int *CodItem,const char *Text,bool NewItem);
|
||||
static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int *CodItem,const char *Text);
|
||||
static void Syl_PutParamNumItem (void *Args);
|
||||
static void Syl_PutParamNumItem (void *ParamNumItem);
|
||||
|
||||
static void Syl_WriteNumItem (char *StrDst,FILE *FileTgt,int Level,int *CodItem);
|
||||
|
||||
|
@ -608,7 +608,7 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
{
|
||||
Frm_StartForm (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDelItmSylLec :
|
||||
ActDelItmSylPra);
|
||||
Syl_PutParamNumItem (&Gbl);
|
||||
Syl_PutParamNumItem (&Gbl.Syllabus.ParamNumItem);
|
||||
Ico_PutIconRemove ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -622,7 +622,7 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActUp_IteSylLec :
|
||||
ActUp_IteSylPra,
|
||||
NULL,
|
||||
Syl_PutParamNumItem,&Gbl,
|
||||
Syl_PutParamNumItem,&Gbl.Syllabus.ParamNumItem,
|
||||
"arrow-up.svg",
|
||||
Str_BuildStringStr (Syl_LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_up_X_and_its_subsections :
|
||||
Txt_Move_up_X,
|
||||
|
@ -641,7 +641,7 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActDwnIteSylLec :
|
||||
ActDwnIteSylPra,
|
||||
NULL,
|
||||
Syl_PutParamNumItem,&Gbl,
|
||||
Syl_PutParamNumItem,&Gbl.Syllabus.ParamNumItem,
|
||||
"arrow-down.svg",
|
||||
Str_BuildStringStr (Syl_LstItemsSyllabus.Lst[NumItem].HasChildren ? Txt_Move_down_X_and_its_subsections :
|
||||
Txt_Move_down_X,
|
||||
|
@ -659,7 +659,7 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActRgtIteSylLec :
|
||||
ActRgtIteSylPra,
|
||||
NULL,
|
||||
Syl_PutParamNumItem,&Gbl,
|
||||
Syl_PutParamNumItem,&Gbl.Syllabus.ParamNumItem,
|
||||
"arrow-left.svg",
|
||||
Str_BuildStringStr (Txt_Increase_level_of_X,
|
||||
StrItemCod));
|
||||
|
@ -677,7 +677,7 @@ static void Syl_ShowRowSyllabus (unsigned NumItem,
|
|||
Lay_PutContextualLinkOnlyIcon (Gbl.Crs.Info.Type == Inf_LECTURES ? ActLftIteSylLec :
|
||||
ActLftIteSylPra,
|
||||
NULL,
|
||||
Syl_PutParamNumItem,&Gbl,
|
||||
Syl_PutParamNumItem,&Gbl.Syllabus.ParamNumItem,
|
||||
"arrow-right.svg",
|
||||
Str_BuildStringStr (Txt_Decrease_level_of_X,
|
||||
StrItemCod));
|
||||
|
@ -837,7 +837,7 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int
|
|||
(Gbl.Crs.Info.Type == Inf_LECTURES ? ActModIteSylLec :
|
||||
ActModIteSylPra));
|
||||
Gbl.Syllabus.ParamNumItem = NumItem;
|
||||
Syl_PutParamNumItem (&Gbl);
|
||||
Syl_PutParamNumItem (&Gbl.Syllabus.ParamNumItem);
|
||||
HTM_INPUT_TEXT ("Txt",Syl_MAX_CHARS_TEXT_ITEM,Text,true,
|
||||
"size=\"60\" placeholder=\"%s\"%s",
|
||||
Txt_Enter_a_new_item_here,
|
||||
|
@ -851,10 +851,10 @@ static void Syl_PutFormItemSyllabus (bool NewItem,unsigned NumItem,int Level,int
|
|||
/***** Write parameter with the number of an item in a syllabus form *********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Syl_PutParamNumItem (void *Args)
|
||||
static void Syl_PutParamNumItem (void *ParamNumItem)
|
||||
{
|
||||
if (Args)
|
||||
Par_PutHiddenParamUnsigned (NULL,"NumI",Gbl.Syllabus.ParamNumItem);
|
||||
if (ParamNumItem)
|
||||
Par_PutHiddenParamUnsigned (NULL,"NumI",*((unsigned *) ParamNumItem));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -67,7 +67,7 @@ extern struct Globals Gbl; // All the global parameters and variables must be in
|
|||
/*****************************************************************************/
|
||||
|
||||
static void SysCfg_Configuration (bool PrintView);
|
||||
static void SysCfg_PutIconToPrint (void *Args);
|
||||
static void SysCfg_PutIconToPrint (__attribute__((unused)) void *Args);
|
||||
static void SysCfg_GetCoordAndZoom (struct Coordinates *Coord,unsigned *Zoom);
|
||||
static void SysCfg_Map (void);
|
||||
static void SysCfg_Platform (void);
|
||||
|
@ -117,7 +117,7 @@ static void SysCfg_Configuration (bool PrintView)
|
|||
NULL,Box_NOT_CLOSABLE);
|
||||
else
|
||||
Box_BoxBegin (NULL,Cfg_PLATFORM_SHORT_NAME,
|
||||
SysCfg_PutIconToPrint,&Gbl,
|
||||
SysCfg_PutIconToPrint,NULL,
|
||||
Hlp_SYSTEM_Information,Box_NOT_CLOSABLE);
|
||||
|
||||
/**************************** Left part ***********************************/
|
||||
|
@ -185,11 +185,10 @@ static void SysCfg_Configuration (bool PrintView)
|
|||
/************* Put icon to print the configuration of a country **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void SysCfg_PutIconToPrint (void *Args)
|
||||
static void SysCfg_PutIconToPrint (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
Ico_PutContextualIconToPrint (ActPrnSysInf,
|
||||
NULL,NULL);
|
||||
Ico_PutContextualIconToPrint (ActPrnSysInf,
|
||||
NULL,NULL);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -145,7 +145,9 @@ static void TstExa_StoreOneExamQstInDB (const struct TstExa_Exam *Exam,
|
|||
unsigned NumQst);
|
||||
static void Tst_UpdateQstScoreInDB (const struct TstExa_Exam *Exam,unsigned NumQst);
|
||||
|
||||
static void TstExa_ShowUsrsExams (void *Args);
|
||||
static void TstExa_PutFormToSelectUsrsToViewUsrsExams (__attribute__((unused)) void *Args);
|
||||
|
||||
static void TstExa_ShowUsrsExams (__attribute__((unused)) void *Args);
|
||||
static void TstExa_ShowHeaderExams (void);
|
||||
static void TstExa_ShowExams (struct UsrData *UsrDat);
|
||||
static void TstExa_ShowExamsSummaryRow (bool ItsMe,
|
||||
|
@ -1451,20 +1453,24 @@ static void Tst_UpdateQstScoreInDB (const struct TstExa_Exam *Exam,unsigned NumQ
|
|||
/************* Select users and dates to show their test exams ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void TstExa_SelUsrsToViewUsrsExams (void *Args)
|
||||
void TstExa_SelUsrsToViewUsrsExams (void)
|
||||
{
|
||||
TstExa_PutFormToSelectUsrsToViewUsrsExams (NULL);
|
||||
}
|
||||
|
||||
static void TstExa_PutFormToSelectUsrsToViewUsrsExams (__attribute__((unused)) void *Args)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Tests_results;
|
||||
extern const char *Txt_Results;
|
||||
extern const char *Txt_View_test_results;
|
||||
|
||||
if (Args)
|
||||
Usr_PutFormToSelectUsrsToGoToAct (&Gbl.Usrs.Selected,
|
||||
ActSeeUsrTstRes,
|
||||
NULL,NULL,
|
||||
Txt_Results,
|
||||
Hlp_ASSESSMENT_Tests_results,
|
||||
Txt_View_test_results,
|
||||
true); // Put form with date range
|
||||
Usr_PutFormToSelectUsrsToGoToAct (&Gbl.Usrs.Selected,
|
||||
ActSeeUsrTstRes,
|
||||
NULL,NULL,
|
||||
Txt_Results,
|
||||
Hlp_ASSESSMENT_Tests_results,
|
||||
Txt_View_test_results,
|
||||
true); // Put form with date range
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1533,23 +1539,20 @@ void TstExa_ShowMyExams (void)
|
|||
void TstExa_GetUsrsAndShowExams (void)
|
||||
{
|
||||
Usr_GetSelectedUsrsAndGoToAct (&Gbl.Usrs.Selected,
|
||||
TstExa_ShowUsrsExams,&Gbl,
|
||||
TstExa_SelUsrsToViewUsrsExams,&Gbl);
|
||||
TstExa_ShowUsrsExams,NULL,
|
||||
TstExa_PutFormToSelectUsrsToViewUsrsExams,NULL);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Show test exams for several users *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void TstExa_ShowUsrsExams (void *Args)
|
||||
static void TstExa_ShowUsrsExams (__attribute__((unused)) void *Args)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Tests_results;
|
||||
extern const char *Txt_Results;
|
||||
const char *Ptr;
|
||||
|
||||
if (!Args)
|
||||
return;
|
||||
|
||||
/***** Get starting and ending dates *****/
|
||||
Dat_GetIniEndDatesFromForm ();
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ void TstExa_ComputeAndShowGrade (unsigned NumQsts,double Score,double MaxGrade);
|
|||
double TstExa_ComputeGrade (unsigned NumQsts,double Score,double MaxGrade);
|
||||
void TstExa_ShowGrade (double Grade,double MaxGrade);
|
||||
|
||||
void TstExa_SelUsrsToViewUsrsExams (void *Args);
|
||||
void TstExa_SelUsrsToViewUsrsExams (void);
|
||||
void TstExa_SelDatesToSeeMyExams (void);
|
||||
void TstExa_ShowMyExams (void);
|
||||
void TstExa_GetUsrsAndShowExams (void);
|
||||
|
|
|
@ -333,7 +333,7 @@ static void TL_CreateNotifToAuthor (long AuthorCod,long PubCod,
|
|||
Ntf_NotifyEvent_t NotifyEvent);
|
||||
|
||||
static void TL_RequestRemovalNote (void);
|
||||
static void TL_PutParamsRemoveNote (void *Args);
|
||||
static void TL_PutParamsRemoveNote (void *Timeline);
|
||||
static void TL_RemoveNote (void);
|
||||
static void TL_RemoveNoteMediaAndDBEntries (struct TL_Note *SocNot);
|
||||
|
||||
|
@ -341,7 +341,7 @@ static long TL_GetNotCodOfPublication (long PubCod);
|
|||
static long TL_GetPubCodOfOriginalNote (long NotCod);
|
||||
|
||||
static void TL_RequestRemovalComment (void);
|
||||
static void TL_PutParamsRemoveCommment (void *Args);
|
||||
static void TL_PutParamsRemoveComment (void *Timeline);
|
||||
static void TL_RemoveComment (void);
|
||||
static void TL_RemoveCommentMediaAndDBEntries (long PubCod);
|
||||
|
||||
|
@ -4071,11 +4071,11 @@ static void TL_RequestRemovalNote (void)
|
|||
Gbl.Timeline.NotCod = SocNot.NotCod; // Note to be removed
|
||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||
Ale_ShowAlertAndButton2 (ActRemSocPubUsr,"timeline",NULL,
|
||||
TL_PutParamsRemoveNote,&Gbl,
|
||||
TL_PutParamsRemoveNote,&Gbl.Timeline,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove);
|
||||
else
|
||||
Ale_ShowAlertAndButton2 (ActRemSocPubGbl,NULL,NULL,
|
||||
TL_PutParamsRemoveNote,&Gbl,
|
||||
TL_PutParamsRemoveNote,&Gbl.Timeline,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove);
|
||||
}
|
||||
}
|
||||
|
@ -4087,15 +4087,15 @@ static void TL_RequestRemovalNote (void)
|
|||
/********************* Put parameters to remove a note ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void TL_PutParamsRemoveNote (void *Args)
|
||||
static void TL_PutParamsRemoveNote (void *Timeline)
|
||||
{
|
||||
if (Args)
|
||||
if (Timeline)
|
||||
{
|
||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
|
||||
else
|
||||
Usr_PutHiddenParamWho (Gbl.Timeline.Who);
|
||||
TL_PutHiddenParamNotCod (Gbl.Timeline.NotCod);
|
||||
Usr_PutHiddenParamWho (((struct TL_Timeline *) Timeline)->Who);
|
||||
TL_PutHiddenParamNotCod (((struct TL_Timeline *) Timeline)->NotCod);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4384,11 +4384,11 @@ static void TL_RequestRemovalComment (void)
|
|||
Gbl.Timeline.PubCod = SocCom.PubCod; // Publication to be removed
|
||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||
Ale_ShowAlertAndButton2 (ActRemSocComUsr,"timeline",NULL,
|
||||
TL_PutParamsRemoveCommment,&Gbl,
|
||||
TL_PutParamsRemoveComment,&Gbl.Timeline,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove);
|
||||
else
|
||||
Ale_ShowAlertAndButton2 (ActRemSocComGbl,NULL,NULL,
|
||||
TL_PutParamsRemoveCommment,&Gbl,
|
||||
TL_PutParamsRemoveComment,&Gbl.Timeline,
|
||||
Btn_REMOVE_BUTTON,Txt_Remove);
|
||||
}
|
||||
}
|
||||
|
@ -4403,15 +4403,15 @@ static void TL_RequestRemovalComment (void)
|
|||
/******************** Put parameters to remove a comment *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void TL_PutParamsRemoveCommment (void *Args)
|
||||
static void TL_PutParamsRemoveComment (void *Timeline)
|
||||
{
|
||||
if (Args)
|
||||
if (Timeline)
|
||||
{
|
||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
|
||||
else
|
||||
Usr_PutHiddenParamWho (Gbl.Timeline.Who);
|
||||
TL_PutHiddenParamPubCod (Gbl.Timeline.PubCod);
|
||||
Usr_PutHiddenParamWho (((struct TL_Timeline *) Timeline)->Who);
|
||||
TL_PutHiddenParamPubCod (((struct TL_Timeline *) Timeline)->PubCod);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -107,6 +107,13 @@ struct TL_Publication
|
|||
TL_TopMessage_t TopMessage; // Used to show feedback on the action made
|
||||
};
|
||||
|
||||
struct TL_Timeline
|
||||
{
|
||||
Usr_Who_t Who;
|
||||
long NotCod; // Used as parameter about social note to be edited, removed...
|
||||
long PubCod; // Used as parameter about social publishing to be edited, removed...
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
|
347
swad_timetable.c
347
swad_timetable.c
|
@ -129,11 +129,11 @@ static void TT_FreeTimeTable (void);
|
|||
|
||||
static void TT_ShowTimeTableGrpsSelected (void);
|
||||
static void TT_GetParamsTimeTable (void);
|
||||
static void TT_PutContextualIcons (void *Args);
|
||||
static void TT_PutContextualIcons (void *Timetable);
|
||||
static void TT_PutFormToSelectWhichGroupsToShow (void);
|
||||
|
||||
static void TT_PutIconToViewCrsTT (void *Args);
|
||||
static void TT_PutIconToViewMyTT (void *Args);
|
||||
static void TT_PutIconToViewCrsTT (__attribute__((unused)) void *Args);
|
||||
static void TT_PutIconToViewMyTT (__attribute__((unused)) void *Args);
|
||||
|
||||
static void TT_WriteCrsTimeTableIntoDB (long CrsCod);
|
||||
static void TT_WriteTutTimeTableIntoDB (long UsrCod);
|
||||
|
@ -163,38 +163,38 @@ static void TT_TimeTableConfigureIntervalsAndAllocateTimeTable (void)
|
|||
{
|
||||
unsigned Weekday;
|
||||
|
||||
if (Gbl.TimeTable.Config.Range.Hours.End >
|
||||
Gbl.TimeTable.Config.Range.Hours.Start)
|
||||
if (Gbl.Timetable.Config.Range.Hours.End >
|
||||
Gbl.Timetable.Config.Range.Hours.Start)
|
||||
{
|
||||
/***** Configuration of timetable depending on hours and resolution *****/
|
||||
Gbl.TimeTable.Config.HoursPerDay = Gbl.TimeTable.Config.Range.Hours.End -
|
||||
Gbl.TimeTable.Config.Range.Hours.Start; // From start hour to end hour
|
||||
Gbl.TimeTable.Config.SecondsPerInterval = Gbl.TimeTable.Config.Range.MinutesPerInterval *
|
||||
Gbl.Timetable.Config.HoursPerDay = Gbl.Timetable.Config.Range.Hours.End -
|
||||
Gbl.Timetable.Config.Range.Hours.Start; // From start hour to end hour
|
||||
Gbl.Timetable.Config.SecondsPerInterval = Gbl.Timetable.Config.Range.MinutesPerInterval *
|
||||
TT_SECONDS_PER_MINUTE;
|
||||
Gbl.TimeTable.Config.IntervalsPerHour = TT_MINUTES_PER_HOUR /
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval;
|
||||
Gbl.TimeTable.Config.IntervalsPerDay = Gbl.TimeTable.Config.IntervalsPerHour *
|
||||
Gbl.TimeTable.Config.HoursPerDay;
|
||||
Gbl.TimeTable.Config.IntervalsBeforeStartHour = Gbl.TimeTable.Config.IntervalsPerHour *
|
||||
Gbl.TimeTable.Config.Range.Hours.Start;
|
||||
Gbl.Timetable.Config.IntervalsPerHour = TT_MINUTES_PER_HOUR /
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval;
|
||||
Gbl.Timetable.Config.IntervalsPerDay = Gbl.Timetable.Config.IntervalsPerHour *
|
||||
Gbl.Timetable.Config.HoursPerDay;
|
||||
Gbl.Timetable.Config.IntervalsBeforeStartHour = Gbl.Timetable.Config.IntervalsPerHour *
|
||||
Gbl.Timetable.Config.Range.Hours.Start;
|
||||
|
||||
/***** Allocate memory for timetable *****/
|
||||
for (Weekday = 0;
|
||||
Weekday < TT_DAYS_PER_WEEK;
|
||||
Weekday++)
|
||||
if ((TT_TimeTable[Weekday] = (struct TT_Cell *)
|
||||
malloc (Gbl.TimeTable.Config.IntervalsPerDay *
|
||||
malloc (Gbl.Timetable.Config.IntervalsPerDay *
|
||||
sizeof (struct TT_Cell))) == NULL)
|
||||
Lay_ShowErrorAndExit ("Error allocating memory for timetable.");
|
||||
}
|
||||
else
|
||||
{
|
||||
/***** Table is empty *****/
|
||||
Gbl.TimeTable.Config.HoursPerDay = 0;
|
||||
Gbl.TimeTable.Config.SecondsPerInterval = 0;
|
||||
Gbl.TimeTable.Config.IntervalsPerHour = 0;
|
||||
Gbl.TimeTable.Config.IntervalsPerDay = 0;
|
||||
Gbl.TimeTable.Config.IntervalsBeforeStartHour = 0;
|
||||
Gbl.Timetable.Config.HoursPerDay = 0;
|
||||
Gbl.Timetable.Config.SecondsPerInterval = 0;
|
||||
Gbl.Timetable.Config.IntervalsPerHour = 0;
|
||||
Gbl.Timetable.Config.IntervalsPerDay = 0;
|
||||
Gbl.Timetable.Config.IntervalsBeforeStartHour = 0;
|
||||
|
||||
/***** Clear timetable in order to not try to free it *****/
|
||||
for (Weekday = 0;
|
||||
|
@ -257,21 +257,21 @@ static void TT_GetParamsTimeTable (void)
|
|||
unsigned Minutes;
|
||||
|
||||
/***** Get day (0: monday, 1: tuesday,..., 6: sunday *****/
|
||||
Gbl.TimeTable.Weekday = (unsigned)
|
||||
Gbl.Timetable.Weekday = (unsigned)
|
||||
Par_GetParToUnsignedLong ("TTDay",
|
||||
0,
|
||||
TT_DAYS_PER_WEEK - 1,
|
||||
0);
|
||||
|
||||
/***** Get hour *****/
|
||||
Gbl.TimeTable.Interval = (unsigned)
|
||||
Gbl.Timetable.Interval = (unsigned)
|
||||
Par_GetParToUnsignedLong ("TTInt",
|
||||
0,
|
||||
Gbl.TimeTable.Config.IntervalsPerDay - 1,
|
||||
Gbl.Timetable.Config.IntervalsPerDay - 1,
|
||||
0);
|
||||
|
||||
/***** Get number of column *****/
|
||||
Gbl.TimeTable.Column = (unsigned)
|
||||
Gbl.Timetable.Column = (unsigned)
|
||||
Par_GetParToUnsignedLong ("TTCol",
|
||||
0,
|
||||
TT_MAX_COLUMNS_PER_CELL - 1,
|
||||
|
@ -279,26 +279,26 @@ static void TT_GetParamsTimeTable (void)
|
|||
|
||||
/***** Get class type *****/
|
||||
Par_GetParToText ("TTTyp",StrClassType,TT_MAX_BYTES_STR_CLASS_TYPE);
|
||||
for (Gbl.TimeTable.ClassType = (TT_ClassType_t) 0;
|
||||
Gbl.TimeTable.ClassType <= (TT_ClassType_t) (TT_NUM_CLASS_TYPES - 1);
|
||||
Gbl.TimeTable.ClassType++)
|
||||
if (!strcmp (StrClassType,TT_ClassTypeDB[Gbl.TimeTable.ClassType]))
|
||||
for (Gbl.Timetable.ClassType = (TT_ClassType_t) 0;
|
||||
Gbl.Timetable.ClassType <= (TT_ClassType_t) (TT_NUM_CLASS_TYPES - 1);
|
||||
Gbl.Timetable.ClassType++)
|
||||
if (!strcmp (StrClassType,TT_ClassTypeDB[Gbl.Timetable.ClassType]))
|
||||
break;
|
||||
if (Gbl.TimeTable.ClassType > (TT_ClassType_t) (TT_NUM_CLASS_TYPES - 1))
|
||||
if (Gbl.Timetable.ClassType > (TT_ClassType_t) (TT_NUM_CLASS_TYPES - 1))
|
||||
Lay_ShowErrorAndExit ("Type of timetable cell is missing.");
|
||||
|
||||
/***** Get class duration *****/
|
||||
Par_GetParToText ("TTDur",StrDuration,TT_MAX_BYTES_STR_DURATION);
|
||||
if (sscanf (StrDuration,"%u:%u",&Hours,&Minutes) != 2)
|
||||
Lay_ShowErrorAndExit ("Duration is missing.");
|
||||
Gbl.TimeTable.DurationIntervals = Hours * Gbl.TimeTable.Config.IntervalsPerHour +
|
||||
Minutes / Gbl.TimeTable.Config.Range.MinutesPerInterval;
|
||||
Gbl.Timetable.DurationIntervals = Hours * Gbl.Timetable.Config.IntervalsPerHour +
|
||||
Minutes / Gbl.Timetable.Config.Range.MinutesPerInterval;
|
||||
|
||||
/***** Get group code *****/
|
||||
Gbl.TimeTable.GrpCod = Par_GetParToLong ("TTGrp");
|
||||
Gbl.Timetable.GrpCod = Par_GetParToLong ("TTGrp");
|
||||
|
||||
/***** Get info *****/
|
||||
Par_GetParToText ("TTInf",Gbl.TimeTable.Info,TT_MAX_BYTES_INFO);
|
||||
Par_GetParToText ("TTInf",Gbl.Timetable.Info,TT_MAX_BYTES_INFO);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -332,42 +332,42 @@ void TT_ShowClassTimeTable (void)
|
|||
case ActSeeCrsTT:
|
||||
case ActPrnCrsTT:
|
||||
case ActChgCrsTT1stDay:
|
||||
Gbl.TimeTable.Type = TT_COURSE_TIMETABLE;
|
||||
Gbl.Timetable.Type = TT_COURSE_TIMETABLE;
|
||||
break;
|
||||
case ActSeeMyTT:
|
||||
case ActPrnMyTT:
|
||||
case ActChgMyTT1stDay:
|
||||
Gbl.TimeTable.Type = TT_MY_TIMETABLE;
|
||||
Gbl.Timetable.Type = TT_MY_TIMETABLE;
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong action.");
|
||||
}
|
||||
|
||||
Gbl.TimeTable.ContextualIcons.PutIconEditCrsTT = (Gbl.TimeTable.Type == TT_COURSE_TIMETABLE &&
|
||||
Gbl.Timetable.ContextualIcons.PutIconEditCrsTT = (Gbl.Timetable.Type == TT_COURSE_TIMETABLE &&
|
||||
!PrintView &&
|
||||
Gbl.Usrs.Me.Role.Logged >= Rol_TCH);
|
||||
Gbl.TimeTable.ContextualIcons.PutIconEditOfficeHours = (Gbl.TimeTable.Type == TT_MY_TIMETABLE &&
|
||||
Gbl.Timetable.ContextualIcons.PutIconEditOfficeHours = (Gbl.Timetable.Type == TT_MY_TIMETABLE &&
|
||||
!PrintView &&
|
||||
(Gbl.Usrs.Me.Role.Available & (1 << Rol_TCH)));
|
||||
Gbl.TimeTable.ContextualIcons.PutIconPrint = !PrintView;
|
||||
Gbl.Timetable.ContextualIcons.PutIconPrint = !PrintView;
|
||||
|
||||
/***** Get whether to show only my groups or all groups *****/
|
||||
Grp_GetParamWhichGroups ();
|
||||
|
||||
/***** Begin box *****/
|
||||
if (Gbl.TimeTable.ContextualIcons.PutIconEditCrsTT ||
|
||||
Gbl.TimeTable.ContextualIcons.PutIconEditOfficeHours ||
|
||||
Gbl.TimeTable.ContextualIcons.PutIconPrint)
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.TimeTable.Type],
|
||||
TT_PutContextualIcons,&Gbl,
|
||||
Help[Gbl.TimeTable.Type],Box_NOT_CLOSABLE);
|
||||
if (Gbl.Timetable.ContextualIcons.PutIconEditCrsTT ||
|
||||
Gbl.Timetable.ContextualIcons.PutIconEditOfficeHours ||
|
||||
Gbl.Timetable.ContextualIcons.PutIconPrint)
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.Timetable.Type],
|
||||
TT_PutContextualIcons,&Gbl.Timetable,
|
||||
Help[Gbl.Timetable.Type],Box_NOT_CLOSABLE);
|
||||
else
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.TimeTable.Type],
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.Timetable.Type],
|
||||
NULL,NULL,
|
||||
Help[Gbl.TimeTable.Type],Box_NOT_CLOSABLE);
|
||||
Help[Gbl.Timetable.Type],Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Start time table drawing *****/
|
||||
if (Gbl.TimeTable.Type == TT_COURSE_TIMETABLE)
|
||||
if (Gbl.Timetable.Type == TT_COURSE_TIMETABLE)
|
||||
Lay_WriteHeaderClassPhoto (PrintView,false,
|
||||
Gbl.Hierarchy.Ins.InsCod,Gbl.Hierarchy.Deg.DegCod,Gbl.Hierarchy.Crs.CrsCod);
|
||||
|
||||
|
@ -380,14 +380,14 @@ void TT_ShowClassTimeTable (void)
|
|||
Set_StartSettingsHead ();
|
||||
|
||||
/* Select whether show only my groups or all groups */
|
||||
if ( Gbl.TimeTable.Type == TT_MY_TIMETABLE ||
|
||||
(Gbl.TimeTable.Type == TT_COURSE_TIMETABLE &&
|
||||
if ( Gbl.Timetable.Type == TT_MY_TIMETABLE ||
|
||||
(Gbl.Timetable.Type == TT_COURSE_TIMETABLE &&
|
||||
Gbl.Crs.Grps.NumGrps))
|
||||
TT_PutFormToSelectWhichGroupsToShow ();
|
||||
|
||||
/* Show form to change first day of week */
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
Cal_ShowFormToSelFirstDayOfWeek (ActChgTT1stDay[Gbl.TimeTable.Type],
|
||||
Cal_ShowFormToSelFirstDayOfWeek (ActChgTT1stDay[Gbl.Timetable.Type],
|
||||
Grp_PutParamWhichGroups,&WhichGroups);
|
||||
|
||||
Set_EndSettingsHead ();
|
||||
|
@ -404,24 +404,25 @@ void TT_ShowClassTimeTable (void)
|
|||
/***************** Put contextual icons above the time table *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void TT_PutContextualIcons (void *Args)
|
||||
static void TT_PutContextualIcons (void *Timetable)
|
||||
{
|
||||
Grp_WhichGroups_t WhichGroups;
|
||||
|
||||
if (Args)
|
||||
if (Timetable)
|
||||
{
|
||||
WhichGroups = Grp_GetParamWhichGroups ();
|
||||
if (Gbl.TimeTable.ContextualIcons.PutIconEditCrsTT)
|
||||
|
||||
if (((struct TT_Timetable *) Timetable)->ContextualIcons.PutIconEditCrsTT)
|
||||
Ico_PutContextualIconToEdit (ActEdiCrsTT,NULL,
|
||||
Grp_PutParamWhichGroups,&WhichGroups);
|
||||
|
||||
if (Gbl.TimeTable.ContextualIcons.PutIconEditOfficeHours)
|
||||
if (((struct TT_Timetable *) Timetable)->ContextualIcons.PutIconEditOfficeHours)
|
||||
Ico_PutContextualIconToEdit (ActEdiTut,NULL,
|
||||
NULL,NULL);
|
||||
|
||||
if (Gbl.TimeTable.ContextualIcons.PutIconPrint)
|
||||
Ico_PutContextualIconToPrint (Gbl.TimeTable.Type == TT_COURSE_TIMETABLE ? ActPrnCrsTT :
|
||||
ActPrnMyTT,
|
||||
if (((struct TT_Timetable *) Timetable)->ContextualIcons.PutIconPrint)
|
||||
Ico_PutContextualIconToPrint (((struct TT_Timetable *) Timetable)->Type == TT_COURSE_TIMETABLE ? ActPrnCrsTT :
|
||||
ActPrnMyTT,
|
||||
Grp_PutParamWhichGroups,&WhichGroups);
|
||||
}
|
||||
}
|
||||
|
@ -439,7 +440,7 @@ static void TT_PutFormToSelectWhichGroupsToShow (void)
|
|||
[TT_TUTORING_TIMETABLE] = ActUnk,
|
||||
};
|
||||
|
||||
Grp_ShowFormToSelWhichGrps (ActSeeTT[Gbl.TimeTable.Type],
|
||||
Grp_ShowFormToSelWhichGrps (ActSeeTT[Gbl.Timetable.Type],
|
||||
NULL,NULL);
|
||||
}
|
||||
|
||||
|
@ -453,9 +454,9 @@ void TT_EditCrsTimeTable (void)
|
|||
extern const char *Txt_TIMETABLE_TYPES[TT_NUM_TIMETABLE_TYPES];
|
||||
|
||||
/***** Editable time table *****/
|
||||
Gbl.TimeTable.Type = TT_COURSE_TIMETABLE;
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.TimeTable.Type],
|
||||
TT_PutIconToViewCrsTT,&Gbl,
|
||||
Gbl.Timetable.Type = TT_COURSE_TIMETABLE;
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.Timetable.Type],
|
||||
TT_PutIconToViewCrsTT,NULL,
|
||||
Hlp_COURSE_Timetable,Box_NOT_CLOSABLE);
|
||||
TT_ShowTimeTable (Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
Box_BoxEnd ();
|
||||
|
@ -471,9 +472,9 @@ void TT_EditMyTutTimeTable (void)
|
|||
extern const char *Txt_TIMETABLE_TYPES[TT_NUM_TIMETABLE_TYPES];
|
||||
|
||||
/***** Time table *****/
|
||||
Gbl.TimeTable.Type = TT_TUTORING_TIMETABLE;
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.TimeTable.Type],
|
||||
TT_PutIconToViewMyTT,&Gbl,
|
||||
Gbl.Timetable.Type = TT_TUTORING_TIMETABLE;
|
||||
Box_BoxBegin ("100%",Txt_TIMETABLE_TYPES[Gbl.Timetable.Type],
|
||||
TT_PutIconToViewMyTT,NULL,
|
||||
Hlp_PROFILE_Timetable,Box_NOT_CLOSABLE);
|
||||
TT_ShowTimeTable (Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
Box_BoxEnd ();
|
||||
|
@ -483,22 +484,20 @@ void TT_EditMyTutTimeTable (void)
|
|||
/********************** Put icon to view course timetable ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void TT_PutIconToViewCrsTT (void *Args)
|
||||
static void TT_PutIconToViewCrsTT (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
Ico_PutContextualIconToView (ActSeeCrsTT,
|
||||
NULL,NULL);
|
||||
Ico_PutContextualIconToView (ActSeeCrsTT,
|
||||
NULL,NULL);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Put icon to view my timetable **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void TT_PutIconToViewMyTT (void *Args)
|
||||
static void TT_PutIconToViewMyTT (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
Ico_PutContextualIconToView (ActSeeMyTT,
|
||||
NULL,NULL);
|
||||
Ico_PutContextualIconToView (ActSeeMyTT,
|
||||
NULL,NULL);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -510,31 +509,31 @@ void TT_ShowTimeTable (long UsrCod)
|
|||
extern const char *Txt_The_timetable_is_empty;
|
||||
|
||||
/***** Set type of view depending on current action *****/
|
||||
Gbl.TimeTable.View = TT_CRS_VIEW;
|
||||
Gbl.Timetable.View = TT_CRS_VIEW;
|
||||
switch (Gbl.Action.Act)
|
||||
{
|
||||
case ActSeeCrsTT: case ActPrnCrsTT: case ActChgCrsTT1stDay:
|
||||
case ActSeeMyTT: case ActPrnMyTT: case ActChgMyTT1stDay:
|
||||
Gbl.TimeTable.View = TT_CRS_VIEW;
|
||||
Gbl.Timetable.View = TT_CRS_VIEW;
|
||||
break;
|
||||
case ActSeeRecOneTch: case ActSeeRecSevTch:
|
||||
Gbl.TimeTable.View = TT_TUT_VIEW;
|
||||
Gbl.Timetable.View = TT_TUT_VIEW;
|
||||
break;
|
||||
case ActEdiCrsTT: case ActChgCrsTT:
|
||||
Gbl.TimeTable.View = TT_CRS_EDIT;
|
||||
Gbl.Timetable.View = TT_CRS_EDIT;
|
||||
break;
|
||||
case ActEdiTut: case ActChgTut:
|
||||
Gbl.TimeTable.View = TT_TUT_EDIT;
|
||||
Gbl.Timetable.View = TT_TUT_EDIT;
|
||||
break;
|
||||
}
|
||||
|
||||
/***** If editing ==> configure and allocate timetable *****/
|
||||
if (Gbl.TimeTable.View == TT_CRS_EDIT ||
|
||||
Gbl.TimeTable.View == TT_TUT_EDIT)
|
||||
if (Gbl.Timetable.View == TT_CRS_EDIT ||
|
||||
Gbl.Timetable.View == TT_TUT_EDIT)
|
||||
{
|
||||
Gbl.TimeTable.Config.Range.Hours.Start = TT_START_HOUR; // Day starts at this hour
|
||||
Gbl.TimeTable.Config.Range.Hours.End = TT_END_HOUR; // Day ends at this hour
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval = TT_MinutesPerInterval[0]; // The smallest interval
|
||||
Gbl.Timetable.Config.Range.Hours.Start = TT_START_HOUR; // Day starts at this hour
|
||||
Gbl.Timetable.Config.Range.Hours.End = TT_END_HOUR; // Day ends at this hour
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval = TT_MinutesPerInterval[0]; // The smallest interval
|
||||
TT_TimeTableConfigureIntervalsAndAllocateTimeTable ();
|
||||
}
|
||||
/* If viewing (not editing) ==>
|
||||
|
@ -554,7 +553,7 @@ void TT_ShowTimeTable (long UsrCod)
|
|||
TT_ModifTimeTable ();
|
||||
|
||||
/* Write a new timetable in database */
|
||||
switch (Gbl.TimeTable.Type)
|
||||
switch (Gbl.Timetable.Type)
|
||||
{
|
||||
case TT_COURSE_TIMETABLE:
|
||||
TT_WriteCrsTimeTableIntoDB (Gbl.Hierarchy.Crs.CrsCod);
|
||||
|
@ -571,7 +570,7 @@ void TT_ShowTimeTable (long UsrCod)
|
|||
}
|
||||
|
||||
/***** Draw timetable *****/
|
||||
if (Gbl.TimeTable.Config.HoursPerDay)
|
||||
if (Gbl.Timetable.Config.HoursPerDay)
|
||||
TT_DrawTimeTable ();
|
||||
else
|
||||
Ale_ShowAlert (Ale_INFO,Txt_The_timetable_is_empty);
|
||||
|
@ -601,11 +600,11 @@ static void TT_WriteCrsTimeTableIntoDB (long CrsCod)
|
|||
for (Weekday = 0;
|
||||
Weekday < TT_DAYS_PER_WEEK;
|
||||
Weekday++)
|
||||
for (Interval = 0, Hour = Gbl.TimeTable.Config.Range.Hours.Start, Min = 0;
|
||||
Interval < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
for (Interval = 0, Hour = Gbl.Timetable.Config.Range.Hours.Start, Min = 0;
|
||||
Interval < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
Interval++,
|
||||
Hour += (Min + Gbl.TimeTable.Config.Range.MinutesPerInterval) / TT_SECONDS_PER_MINUTE,
|
||||
Min = (Min + Gbl.TimeTable.Config.Range.MinutesPerInterval) % TT_SECONDS_PER_MINUTE)
|
||||
Hour += (Min + Gbl.Timetable.Config.Range.MinutesPerInterval) / TT_SECONDS_PER_MINUTE,
|
||||
Min = (Min + Gbl.Timetable.Config.Range.MinutesPerInterval) % TT_SECONDS_PER_MINUTE)
|
||||
for (Column = 0;
|
||||
Column < TT_MAX_COLUMNS_PER_CELL;
|
||||
Column++)
|
||||
|
@ -623,7 +622,7 @@ static void TT_WriteCrsTimeTableIntoDB (long CrsCod)
|
|||
Weekday,
|
||||
Hour,Min,
|
||||
TT_TimeTable[Weekday][Interval].Columns[Column].DurationIntervals *
|
||||
Gbl.TimeTable.Config.SecondsPerInterval,
|
||||
Gbl.Timetable.Config.SecondsPerInterval,
|
||||
TT_ClassTypeDB[TT_TimeTable[Weekday][Interval].Columns[Column].ClassType],
|
||||
TT_TimeTable[Weekday][Interval].Columns[Column].Info);
|
||||
}
|
||||
|
@ -649,11 +648,11 @@ static void TT_WriteTutTimeTableIntoDB (long UsrCod)
|
|||
for (Weekday = 0;
|
||||
Weekday < TT_DAYS_PER_WEEK;
|
||||
Weekday++)
|
||||
for (Interval = 0, Hour = Gbl.TimeTable.Config.Range.Hours.Start, Min = 0;
|
||||
Interval < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
for (Interval = 0, Hour = Gbl.Timetable.Config.Range.Hours.Start, Min = 0;
|
||||
Interval < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
Interval++,
|
||||
Hour += (Min + Gbl.TimeTable.Config.Range.MinutesPerInterval) / TT_SECONDS_PER_MINUTE,
|
||||
Min = (Min + Gbl.TimeTable.Config.Range.MinutesPerInterval) % TT_SECONDS_PER_MINUTE)
|
||||
Hour += (Min + Gbl.Timetable.Config.Range.MinutesPerInterval) / TT_SECONDS_PER_MINUTE,
|
||||
Min = (Min + Gbl.Timetable.Config.Range.MinutesPerInterval) % TT_SECONDS_PER_MINUTE)
|
||||
for (Column = 0;
|
||||
Column < TT_MAX_COLUMNS_PER_CELL;
|
||||
Column++)
|
||||
|
@ -668,7 +667,7 @@ static void TT_WriteTutTimeTableIntoDB (long UsrCod)
|
|||
Weekday,
|
||||
Hour,Min,
|
||||
TT_TimeTable[Weekday][Interval].Columns[Column].DurationIntervals *
|
||||
Gbl.TimeTable.Config.SecondsPerInterval,
|
||||
Gbl.Timetable.Config.SecondsPerInterval,
|
||||
TT_TimeTable[Weekday][Interval].Columns[Column].Info);
|
||||
}
|
||||
|
||||
|
@ -699,7 +698,7 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
bool Found;
|
||||
|
||||
/***** Get timetable from database *****/
|
||||
switch (Gbl.TimeTable.Type)
|
||||
switch (Gbl.Timetable.Type)
|
||||
{
|
||||
case TT_MY_TIMETABLE:
|
||||
switch (Gbl.Crs.Grps.WhichGrps)
|
||||
|
@ -829,13 +828,13 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
|
||||
/***** If viewing (not editing) ==>
|
||||
calculate range of hours and resolution *****/
|
||||
if (Gbl.TimeTable.View == TT_CRS_VIEW ||
|
||||
Gbl.TimeTable.View == TT_TUT_VIEW)
|
||||
if (Gbl.Timetable.View == TT_CRS_VIEW ||
|
||||
Gbl.Timetable.View == TT_TUT_VIEW)
|
||||
{
|
||||
/* Initialize hours and resolution for timetable */
|
||||
Gbl.TimeTable.Config.Range.Hours.Start = TT_END_HOUR; // Initialized to maximum hour
|
||||
Gbl.TimeTable.Config.Range.Hours.End = TT_START_HOUR; // Initialized to minimum hour
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval = TT_MinutesPerInterval[TT_NUM_RESOLUTIONS - 1]; // The longest interval
|
||||
Gbl.Timetable.Config.Range.Hours.Start = TT_END_HOUR; // Initialized to maximum hour
|
||||
Gbl.Timetable.Config.Range.Hours.End = TT_START_HOUR; // Initialized to minimum hour
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval = TT_MinutesPerInterval[TT_NUM_RESOLUTIONS - 1]; // The longest interval
|
||||
|
||||
for (NumRow = 0;
|
||||
NumRow < NumRows;
|
||||
|
@ -854,12 +853,12 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
|
||||
/* Compute hours and resolution */
|
||||
TT_CalculateRangeCell (StartTimeSeconds,EndTimeSeconds,&RangeCell);
|
||||
if (RangeCell.Hours.Start < Gbl.TimeTable.Config.Range.Hours.Start)
|
||||
Gbl.TimeTable.Config.Range.Hours.Start = RangeCell.Hours.Start;
|
||||
if (RangeCell.Hours.End > Gbl.TimeTable.Config.Range.Hours.End)
|
||||
Gbl.TimeTable.Config.Range.Hours.End = RangeCell.Hours.End;
|
||||
if (RangeCell.MinutesPerInterval < Gbl.TimeTable.Config.Range.MinutesPerInterval)
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval = RangeCell.MinutesPerInterval;
|
||||
if (RangeCell.Hours.Start < Gbl.Timetable.Config.Range.Hours.Start)
|
||||
Gbl.Timetable.Config.Range.Hours.Start = RangeCell.Hours.Start;
|
||||
if (RangeCell.Hours.End > Gbl.Timetable.Config.Range.Hours.End)
|
||||
Gbl.Timetable.Config.Range.Hours.End = RangeCell.Hours.End;
|
||||
if (RangeCell.MinutesPerInterval < Gbl.Timetable.Config.Range.MinutesPerInterval)
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval = RangeCell.MinutesPerInterval;
|
||||
|
||||
}
|
||||
mysql_data_seek (mysql_res,0);
|
||||
|
@ -869,14 +868,14 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
}
|
||||
|
||||
/***** Build the table by filling it from database *****/
|
||||
if (Gbl.TimeTable.Config.HoursPerDay)
|
||||
if (Gbl.Timetable.Config.HoursPerDay)
|
||||
{
|
||||
/***** Initialize timetable to all free *****/
|
||||
for (Weekday = 0;
|
||||
Weekday < TT_DAYS_PER_WEEK;
|
||||
Weekday++)
|
||||
for (Interval = 0;
|
||||
Interval < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
Interval < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
Interval++)
|
||||
{
|
||||
TT_TimeTable[Weekday][Interval].NumColumns = 0;
|
||||
|
@ -911,20 +910,20 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
if (sscanf (row[1],"%u",&StartTimeSeconds) != 1)
|
||||
Lay_ShowErrorAndExit ("Wrong start time in timetable.");
|
||||
Interval = StartTimeSeconds /
|
||||
Gbl.TimeTable.Config.SecondsPerInterval;
|
||||
if (Interval < Gbl.TimeTable.Config.IntervalsBeforeStartHour)
|
||||
Gbl.Timetable.Config.SecondsPerInterval;
|
||||
if (Interval < Gbl.Timetable.Config.IntervalsBeforeStartHour)
|
||||
Lay_ShowErrorAndExit ("Wrong start time in timetable.");
|
||||
Interval -= Gbl.TimeTable.Config.IntervalsBeforeStartHour;
|
||||
Interval -= Gbl.Timetable.Config.IntervalsBeforeStartHour;
|
||||
|
||||
/* Duration formatted as seconds (row[2])
|
||||
--> Duration in number of intervals */
|
||||
if (sscanf (row[2],"%u",&DurationSeconds) != 1)
|
||||
Lay_ShowErrorAndExit ("Wrong duration in timetable.");
|
||||
DurationNumIntervals = DurationSeconds /
|
||||
Gbl.TimeTable.Config.SecondsPerInterval;
|
||||
Gbl.Timetable.Config.SecondsPerInterval;
|
||||
|
||||
/* Type of class (row[4]) */
|
||||
switch (Gbl.TimeTable.Type)
|
||||
switch (Gbl.Timetable.Type)
|
||||
{
|
||||
case TT_COURSE_TIMETABLE:
|
||||
case TT_MY_TIMETABLE:
|
||||
|
@ -966,7 +965,7 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
TimeTableHasSpaceForThisClass = true;
|
||||
for (i = Interval + 1;
|
||||
i < Interval + DurationNumIntervals &&
|
||||
i < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
i < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
i++)
|
||||
if (TT_TimeTable[Weekday][i].Columns[FirstFreeColumn].IntervalType != TT_FREE_INTERVAL)
|
||||
{
|
||||
|
@ -981,7 +980,7 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].IntervalType = TT_FIRST_INTERVAL;
|
||||
for (i = Interval + 1;
|
||||
i < Interval + DurationNumIntervals &&
|
||||
i < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
i < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
i++)
|
||||
{
|
||||
TT_TimeTable[Weekday][i].Columns[FirstFreeColumn].IntervalType = TT_NEXT_INTERVAL;
|
||||
|
@ -989,19 +988,19 @@ static void TT_FillTimeTableFromDB (long UsrCod)
|
|||
}
|
||||
|
||||
/* Course (row[6]) and info (row[3])*/
|
||||
switch (Gbl.TimeTable.Type)
|
||||
switch (Gbl.Timetable.Type)
|
||||
{
|
||||
case TT_MY_TIMETABLE:
|
||||
case TT_COURSE_TIMETABLE:
|
||||
/* Group code (row[5]) */
|
||||
if (Gbl.TimeTable.Type == TT_MY_TIMETABLE ||
|
||||
Gbl.TimeTable.Type == TT_COURSE_TIMETABLE)
|
||||
if (Gbl.Timetable.Type == TT_MY_TIMETABLE ||
|
||||
Gbl.Timetable.Type == TT_COURSE_TIMETABLE)
|
||||
if (sscanf (row[5],"%ld",&TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].GrpCod) != 1)
|
||||
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].GrpCod = -1;
|
||||
|
||||
/* Course code (row[6]) */
|
||||
TT_TimeTable[Weekday][Interval].Columns[FirstFreeColumn].CrsCod =
|
||||
(Gbl.TimeTable.Type == TT_MY_TIMETABLE ? Str_ConvertStrCodToLongCod (row[6]) :
|
||||
(Gbl.Timetable.Type == TT_MY_TIMETABLE ? Str_ConvertStrCodToLongCod (row[6]) :
|
||||
Gbl.Hierarchy.Crs.CrsCod);
|
||||
/* falls through */
|
||||
/* no break */
|
||||
|
@ -1103,29 +1102,29 @@ static unsigned TT_CalculateMinutesPerInterval (unsigned Seconds)
|
|||
|
||||
static void TT_ModifTimeTable (void)
|
||||
{
|
||||
if (TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].IntervalType == TT_FIRST_INTERVAL)
|
||||
if (TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].IntervalType == TT_FIRST_INTERVAL)
|
||||
{
|
||||
/***** Free this cell *****/
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].GrpCod = -1L;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].IntervalType = TT_FREE_INTERVAL;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].ClassType = TT_FREE;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].DurationIntervals = 0;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].Info[0] = '\0';
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].NumColumns--;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].GrpCod = -1L;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].IntervalType = TT_FREE_INTERVAL;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].ClassType = TT_FREE;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].DurationIntervals = 0;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].Info[0] = '\0';
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].NumColumns--;
|
||||
}
|
||||
|
||||
if (Gbl.TimeTable.ClassType != TT_FREE &&
|
||||
Gbl.TimeTable.DurationIntervals > 0 &&
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].NumColumns < TT_MAX_COLUMNS_PER_CELL)
|
||||
if (Gbl.Timetable.ClassType != TT_FREE &&
|
||||
Gbl.Timetable.DurationIntervals > 0 &&
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].NumColumns < TT_MAX_COLUMNS_PER_CELL)
|
||||
{
|
||||
/***** Change this cell *****/
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].NumColumns++;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].GrpCod = Gbl.TimeTable.GrpCod;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].IntervalType = TT_FIRST_INTERVAL;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].ClassType = Gbl.TimeTable.ClassType;
|
||||
TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].DurationIntervals = Gbl.TimeTable.DurationIntervals;
|
||||
Str_Copy (TT_TimeTable[Gbl.TimeTable.Weekday][Gbl.TimeTable.Interval].Columns[Gbl.TimeTable.Column].Info,
|
||||
Gbl.TimeTable.Info,
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].NumColumns++;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].GrpCod = Gbl.Timetable.GrpCod;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].IntervalType = TT_FIRST_INTERVAL;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].ClassType = Gbl.Timetable.ClassType;
|
||||
TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].DurationIntervals = Gbl.Timetable.DurationIntervals;
|
||||
Str_Copy (TT_TimeTable[Gbl.Timetable.Weekday][Gbl.Timetable.Interval].Columns[Gbl.Timetable.Column].Info,
|
||||
Gbl.Timetable.Info,
|
||||
TT_MAX_BYTES_INFO);
|
||||
}
|
||||
}
|
||||
|
@ -1156,7 +1155,7 @@ static void TT_DrawTimeTable (void)
|
|||
|
||||
HTM_TD_Begin ("rowspan=\"2\" class=\"TT_HOUR_BIG RM\" style=\"width:%u%%;\"",
|
||||
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN);
|
||||
HTM_TxtF ("%02u:00",Gbl.TimeTable.Config.Range.Hours.Start);
|
||||
HTM_TxtF ("%02u:00",Gbl.Timetable.Config.Range.Hours.Start);
|
||||
HTM_TD_End ();
|
||||
|
||||
TT_DrawCellAlignTimeTable ();
|
||||
|
@ -1165,7 +1164,7 @@ static void TT_DrawTimeTable (void)
|
|||
|
||||
HTM_TD_Begin ("rowspan=\"2\" class=\"TT_HOUR_BIG LM\" style=\"width:%u%%;\"",
|
||||
TT_PERCENT_WIDTH_OF_AN_HOUR_COLUMN);
|
||||
HTM_TxtF ("%02u:00",Gbl.TimeTable.Config.Range.Hours.Start);
|
||||
HTM_TxtF ("%02u:00",Gbl.Timetable.Config.Range.Hours.Start);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -1176,18 +1175,18 @@ static void TT_DrawTimeTable (void)
|
|||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||
|
||||
/***** Write the table row by row *****/
|
||||
for (Interval = 0, Min = Gbl.TimeTable.Config.Range.MinutesPerInterval;
|
||||
Interval < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
for (Interval = 0, Min = Gbl.Timetable.Config.Range.MinutesPerInterval;
|
||||
Interval < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
Interval++,
|
||||
Min = (Min + Gbl.TimeTable.Config.Range.MinutesPerInterval) %
|
||||
Min = (Min + Gbl.Timetable.Config.Range.MinutesPerInterval) %
|
||||
TT_SECONDS_PER_MINUTE)
|
||||
{
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
/* Left hour:minutes cell */
|
||||
if (Interval % 2)
|
||||
TT_TimeTableDrawHourCell (Gbl.TimeTable.Config.Range.Hours.Start +
|
||||
(Interval + 2) / Gbl.TimeTable.Config.IntervalsPerHour,
|
||||
TT_TimeTableDrawHourCell (Gbl.Timetable.Config.Range.Hours.Start +
|
||||
(Interval + 2) / Gbl.Timetable.Config.IntervalsPerHour,
|
||||
Min,
|
||||
"RM");
|
||||
|
||||
|
@ -1210,15 +1209,15 @@ static void TT_DrawTimeTable (void)
|
|||
ColumnsToDraw = TT_CalculateColsToDrawInCell (true, // Top call, non recursive
|
||||
Weekday,Interval);
|
||||
if (ColumnsToDraw == 0 &&
|
||||
(Gbl.TimeTable.View == TT_CRS_VIEW ||
|
||||
Gbl.TimeTable.View == TT_TUT_VIEW))
|
||||
(Gbl.Timetable.View == TT_CRS_VIEW ||
|
||||
Gbl.Timetable.View == TT_TUT_VIEW))
|
||||
ColumnsToDraw = 1;
|
||||
// If editing and there's place for more columns,
|
||||
// a potential new column is added at the end of each day
|
||||
ColumnsToDrawIncludingExtraColumn = ColumnsToDraw;
|
||||
if (ColumnsToDraw < TT_MAX_COLUMNS_PER_CELL &&
|
||||
(Gbl.TimeTable.View == TT_CRS_EDIT ||
|
||||
Gbl.TimeTable.View == TT_TUT_EDIT))
|
||||
(Gbl.Timetable.View == TT_CRS_EDIT ||
|
||||
Gbl.Timetable.View == TT_TUT_EDIT))
|
||||
ColumnsToDrawIncludingExtraColumn++;
|
||||
|
||||
/* Draw cells */
|
||||
|
@ -1256,8 +1255,8 @@ static void TT_DrawTimeTable (void)
|
|||
|
||||
/* Right hour:minutes cell */
|
||||
if (Interval % 2)
|
||||
TT_TimeTableDrawHourCell (Gbl.TimeTable.Config.Range.Hours.Start +
|
||||
(Interval + 2) / Gbl.TimeTable.Config.IntervalsPerHour,
|
||||
TT_TimeTableDrawHourCell (Gbl.Timetable.Config.Range.Hours.Start +
|
||||
(Interval + 2) / Gbl.Timetable.Config.IntervalsPerHour,
|
||||
Min,
|
||||
"LM");
|
||||
|
||||
|
@ -1372,7 +1371,7 @@ static unsigned TT_CalculateColsToDrawInCell (bool TopCall,
|
|||
if (TopCall) // Top call, non recursive call
|
||||
/****** Allocate space to store list of intervals already checked
|
||||
and initialize to false by using calloc *****/
|
||||
if ((TT_IntervalsChecked = (bool *) calloc (Gbl.TimeTable.Config.IntervalsPerDay,
|
||||
if ((TT_IntervalsChecked = (bool *) calloc (Gbl.Timetable.Config.IntervalsPerDay,
|
||||
sizeof (bool))) == NULL)
|
||||
Lay_ShowErrorAndExit ("Error allocating memory for timetable.");
|
||||
|
||||
|
@ -1498,8 +1497,8 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
|
||||
/***** If group code > 0, a group is selected ==> get group data *****/
|
||||
if (IntervalType == TT_FIRST_INTERVAL &&
|
||||
(Gbl.TimeTable.View == TT_CRS_VIEW ||
|
||||
Gbl.TimeTable.View == TT_CRS_EDIT) &&
|
||||
(Gbl.Timetable.View == TT_CRS_VIEW ||
|
||||
Gbl.Timetable.View == TT_CRS_EDIT) &&
|
||||
GrpCod > 0)
|
||||
{
|
||||
/* Get group data */
|
||||
|
@ -1549,13 +1548,13 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
free (ClassStr);
|
||||
|
||||
/***** Form to modify this cell *****/
|
||||
if (Gbl.TimeTable.View == TT_CRS_EDIT)
|
||||
if (Gbl.Timetable.View == TT_CRS_EDIT)
|
||||
Frm_StartForm (ActChgCrsTT);
|
||||
else if (Gbl.TimeTable.View == TT_TUT_EDIT)
|
||||
else if (Gbl.Timetable.View == TT_TUT_EDIT)
|
||||
Frm_StartForm (ActChgTut);
|
||||
|
||||
/***** Draw cell depending on type of view *****/
|
||||
switch (Gbl.TimeTable.View)
|
||||
switch (Gbl.Timetable.View)
|
||||
{
|
||||
case TT_CRS_VIEW: // View course timetable
|
||||
case TT_TUT_VIEW: // View tutoring timetable
|
||||
|
@ -1565,7 +1564,7 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
HTM_DIV_Begin ("class=\"TT_CELL TT_TXT\"");
|
||||
|
||||
/***** Course name *****/
|
||||
if (Gbl.TimeTable.Type == TT_MY_TIMETABLE)
|
||||
if (Gbl.Timetable.Type == TT_MY_TIMETABLE)
|
||||
{
|
||||
Crs.CrsCod = CrsCod;
|
||||
Crs_GetDataOfCourseByCod (&Crs);
|
||||
|
@ -1581,12 +1580,12 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
/***** Type of class and duration *****/
|
||||
HTM_TxtF ("%s (%u:%02u)",
|
||||
Txt_TIMETABLE_CLASS_TYPES[ClassType],
|
||||
(DurationNumIntervals / Gbl.TimeTable.Config.IntervalsPerHour), // Hours
|
||||
(DurationNumIntervals % Gbl.TimeTable.Config.IntervalsPerHour) *
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval); // Minutes
|
||||
(DurationNumIntervals / Gbl.Timetable.Config.IntervalsPerHour), // Hours
|
||||
(DurationNumIntervals % Gbl.Timetable.Config.IntervalsPerHour) *
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval); // Minutes
|
||||
|
||||
/***** Group *****/
|
||||
if (Gbl.TimeTable.View == TT_CRS_VIEW &&
|
||||
if (Gbl.Timetable.View == TT_CRS_VIEW &&
|
||||
GrpCod > 0)
|
||||
{
|
||||
HTM_BR ();
|
||||
|
@ -1631,8 +1630,8 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
CT <= (TT_ClassType_t) (TT_NUM_CLASS_TYPES - 1);
|
||||
CT++)
|
||||
if ((CT == TT_FREE) ||
|
||||
((Gbl.TimeTable.View == TT_CRS_EDIT) && (CT == TT_LECTURE || CT == TT_PRACTICAL)) ||
|
||||
((Gbl.TimeTable.View == TT_TUT_EDIT) && (CT == TT_TUTORING)))
|
||||
((Gbl.Timetable.View == TT_CRS_EDIT) && (CT == TT_LECTURE || CT == TT_PRACTICAL)) ||
|
||||
((Gbl.Timetable.View == TT_TUT_EDIT) && (CT == TT_TUTORING)))
|
||||
HTM_OPTION (HTM_Type_STRING,TT_ClassTypeDB[CT],
|
||||
CT == ClassType,false,
|
||||
"%s",Txt_TIMETABLE_CLASS_TYPES[CT]);
|
||||
|
@ -1641,17 +1640,17 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
if (IntervalType == TT_FREE_INTERVAL)
|
||||
{
|
||||
for (i = Interval + 1;
|
||||
i < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
i < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
i++)
|
||||
if (TT_TimeTable[Weekday][i].NumColumns == TT_MAX_COLUMNS_PER_CELL)
|
||||
break;
|
||||
MaxDuration = i - Interval;
|
||||
Dur = (MaxDuration >= Gbl.TimeTable.Config.IntervalsPerHour) ? Gbl.TimeTable.Config.IntervalsPerHour : // MaxDuration >= 1h ==> Dur = 1h
|
||||
Dur = (MaxDuration >= Gbl.Timetable.Config.IntervalsPerHour) ? Gbl.Timetable.Config.IntervalsPerHour : // MaxDuration >= 1h ==> Dur = 1h
|
||||
MaxDuration; // MaxDuration < 1h ==> Dur = MaxDuration
|
||||
if (asprintf (&TTDur,"%u:%02u",
|
||||
(Dur / Gbl.TimeTable.Config.IntervalsPerHour), // Hours
|
||||
(Dur % Gbl.TimeTable.Config.IntervalsPerHour) *
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval) < 0) // Minutes
|
||||
(Dur / Gbl.Timetable.Config.IntervalsPerHour), // Hours
|
||||
(Dur % Gbl.Timetable.Config.IntervalsPerHour) *
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval) < 0) // Minutes
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
Par_PutHiddenParamString (NULL,"TTDur",TTDur);
|
||||
free (TTDur);
|
||||
|
@ -1662,7 +1661,7 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
HTM_SELECT_Begin (true,
|
||||
"name=\"TTDur\" class=\"TT_DUR\"");
|
||||
for (i = Interval + TT_TimeTable[Weekday][Interval].Columns[Column].DurationIntervals;
|
||||
i < Gbl.TimeTable.Config.IntervalsPerDay;
|
||||
i < Gbl.Timetable.Config.IntervalsPerDay;
|
||||
i++)
|
||||
if (TT_TimeTable[Weekday][i].NumColumns == TT_MAX_COLUMNS_PER_CELL)
|
||||
break;
|
||||
|
@ -1674,9 +1673,9 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
Dur++)
|
||||
{
|
||||
if (asprintf (&TTDur,"%u:%02u",
|
||||
(Dur / Gbl.TimeTable.Config.IntervalsPerHour), // Hours
|
||||
(Dur % Gbl.TimeTable.Config.IntervalsPerHour) *
|
||||
Gbl.TimeTable.Config.Range.MinutesPerInterval) < 0) // Minutes
|
||||
(Dur / Gbl.Timetable.Config.IntervalsPerHour), // Hours
|
||||
(Dur % Gbl.Timetable.Config.IntervalsPerHour) *
|
||||
Gbl.Timetable.Config.Range.MinutesPerInterval) < 0) // Minutes
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
HTM_OPTION (HTM_Type_STRING,TTDur,
|
||||
Dur == DurationNumIntervals,false,
|
||||
|
@ -1685,7 +1684,7 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
}
|
||||
HTM_SELECT_End ();
|
||||
|
||||
if (Gbl.TimeTable.View == TT_CRS_EDIT)
|
||||
if (Gbl.Timetable.View == TT_CRS_EDIT)
|
||||
{
|
||||
/***** Group *****/
|
||||
HTM_BR ();
|
||||
|
@ -1758,8 +1757,8 @@ static void TT_TimeTableDrawCell (unsigned Weekday,unsigned Interval,unsigned Co
|
|||
}
|
||||
|
||||
/***** End form *****/
|
||||
if (Gbl.TimeTable.View == TT_CRS_EDIT ||
|
||||
Gbl.TimeTable.View == TT_TUT_EDIT)
|
||||
if (Gbl.Timetable.View == TT_CRS_EDIT ||
|
||||
Gbl.Timetable.View == TT_TUT_EDIT)
|
||||
Frm_EndForm ();
|
||||
|
||||
/***** End cell *****/
|
||||
|
|
|
@ -78,6 +78,34 @@ struct TT_Range
|
|||
unsigned MinutesPerInterval; // 5, 15 or 30 minutes
|
||||
};
|
||||
|
||||
struct TT_Timetable
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct TT_Range Range;
|
||||
unsigned HoursPerDay; // From start hour to end hour
|
||||
unsigned SecondsPerInterval;
|
||||
unsigned IntervalsPerHour;
|
||||
unsigned IntervalsPerDay;
|
||||
unsigned IntervalsBeforeStartHour;
|
||||
} Config;
|
||||
TT_TimeTableType_t Type;
|
||||
TT_TimeTableView_t View;
|
||||
unsigned Weekday;
|
||||
unsigned Interval;
|
||||
unsigned Column;
|
||||
TT_ClassType_t ClassType;
|
||||
unsigned DurationIntervals;
|
||||
char Info[TT_MAX_BYTES_INFO + 1];
|
||||
long GrpCod; // Group code (-1 if no group selected)
|
||||
struct
|
||||
{
|
||||
bool PutIconEditCrsTT;
|
||||
bool PutIconEditOfficeHours;
|
||||
bool PutIconPrint;
|
||||
} ContextualIcons;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
|
131
swad_user.c
131
swad_user.c
|
@ -155,7 +155,7 @@ extern struct Globals Gbl;
|
|||
/****************************** Private variables ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void (*Usr_FuncParamsBigList) (); // Used to pass pointer to function
|
||||
static void (*Usr_FuncParamsBigList) (void *Args); // Used to pass pointer to function
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private prototypes ****************************/
|
||||
|
@ -179,7 +179,7 @@ static void Usr_ShowAlertThereAreMoreThanOneUsr (void);
|
|||
|
||||
static void Usr_SetMyPrefsAndRoles (void);
|
||||
|
||||
static void Usr_PutLinkToLogOut (void *Args);
|
||||
static void Usr_PutLinkToLogOut (__attribute__((unused)) void *Args);
|
||||
|
||||
static void Usr_InsertMyLastData (void);
|
||||
|
||||
|
@ -257,9 +257,9 @@ static void Usr_ShowOneListUsrsOption (Usr_ListUsrsOption_t ListUsrsAction,
|
|||
const char *Label);
|
||||
static Usr_ListUsrsOption_t Usr_GetListUsrsOption (Usr_ListUsrsOption_t DefaultAction);
|
||||
|
||||
static void Usr_PutIconsListGsts (void *Args);
|
||||
static void Usr_PutIconsListStds (void *Args);
|
||||
static void Usr_PutIconsListTchs (void *Args);
|
||||
static void Usr_PutIconsListGsts (__attribute__((unused)) void *Args);
|
||||
static void Usr_PutIconsListStds (__attribute__((unused)) void *Args);
|
||||
static void Usr_PutIconsListTchs (__attribute__((unused)) void *Args);
|
||||
|
||||
static void Usr_PutIconToPrintGsts (void);
|
||||
static void Usr_PutIconToPrintStds (void);
|
||||
|
@ -267,9 +267,9 @@ static void Usr_PutIconToPrintTchs (void);
|
|||
static void Usr_PutIconToShowGstsAllData (void);
|
||||
static void Usr_PutIconToShowStdsAllData (void);
|
||||
static void Usr_PutIconToShowTchsAllData (void);
|
||||
static void Usr_ShowGstsAllDataParams (void *Args);
|
||||
static void Usr_ShowStdsAllDataParams (void *Args);
|
||||
static void Usr_ShowTchsAllDataParams (void *Args);
|
||||
static void Usr_ShowGstsAllDataParams (__attribute__((unused)) void *Args);
|
||||
static void Usr_ShowStdsAllDataParams (__attribute__((unused)) void *Args);
|
||||
static void Usr_ShowTchsAllDataParams (__attribute__((unused)) void *Args);
|
||||
|
||||
static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
|
||||
Rol_Role_t Role,
|
||||
|
@ -3527,7 +3527,7 @@ void Usr_ShowFormsLogoutAndRole (void)
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_Session,
|
||||
Usr_PutLinkToLogOut,&Gbl,
|
||||
Usr_PutLinkToLogOut,NULL,
|
||||
Hlp_PROFILE_Session_role,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Put a form to change my role *****/
|
||||
|
@ -3557,16 +3557,15 @@ void Usr_ShowFormsLogoutAndRole (void)
|
|||
/************** Put an icon (form) to close the current session **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_PutLinkToLogOut (void *Args)
|
||||
static void Usr_PutLinkToLogOut (__attribute__((unused)) void *Args)
|
||||
{
|
||||
extern const char *Txt_Log_out;
|
||||
|
||||
if (Args)
|
||||
/***** Put form to log out *****/
|
||||
Lay_PutContextualLinkOnlyIcon (ActLogOut,NULL,
|
||||
NULL,NULL,
|
||||
"sign-out-alt-red.svg",
|
||||
Txt_Log_out);
|
||||
/***** Put form to log out *****/
|
||||
Lay_PutContextualLinkOnlyIcon (ActLogOut,NULL,
|
||||
NULL,NULL,
|
||||
"sign-out-alt-red.svg",
|
||||
Txt_Log_out);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -5686,7 +5685,7 @@ static void Usr_PutParamsConfirmIWantToSeeBigList (void *Args)
|
|||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamsPrefsAboutUsrList ();
|
||||
if (Usr_FuncParamsBigList)
|
||||
Usr_FuncParamsBigList ();
|
||||
Usr_FuncParamsBigList (Args);
|
||||
Par_PutHiddenParamChar ("ShowBigList",'Y');
|
||||
}
|
||||
}
|
||||
|
@ -7568,7 +7567,7 @@ void Usr_ListDataAdms (void)
|
|||
HTM_DIV_Begin ("class=\"PREF_CONT\"");
|
||||
HTM_DIV_Begin ("class=\"PREF_OFF\"");
|
||||
Frm_StartForm (ActLstOth);
|
||||
Sco_PutParamCurrentScope (&Gbl);
|
||||
Sco_PutParamCurrentScope (&Gbl.Scope.Current);
|
||||
Usr_PutCheckboxListWithPhotos ();
|
||||
Frm_EndForm ();
|
||||
HTM_DIV_End ();
|
||||
|
@ -8016,7 +8015,7 @@ void Usr_SeeGuests (void)
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_ROLES_PLURAL_Abc[Rol_GST][Usr_SEX_UNKNOWN],
|
||||
Usr_PutIconsListGsts,&Gbl,
|
||||
Usr_PutIconsListGsts,NULL,
|
||||
Hlp_USERS_Guests,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Form to select scope *****/
|
||||
|
@ -8039,11 +8038,11 @@ void Usr_SeeGuests (void)
|
|||
if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs,
|
||||
Sco_PutParamCurrentScope,&Gbl,
|
||||
Sco_PutParamCurrentScope,&Gbl.Scope.Current,
|
||||
NULL))
|
||||
{
|
||||
/***** Form to select type of list of users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (Sco_PutParamCurrentScope,&Gbl);
|
||||
Usr_ShowFormsToSelectUsrListType (Sco_PutParamCurrentScope,&Gbl.Scope.Current);
|
||||
|
||||
/***** Draw a class photo with guests *****/
|
||||
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
|
||||
|
@ -8159,7 +8158,7 @@ void Usr_SeeStudents (void)
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_ROLES_PLURAL_Abc[Rol_STD][Usr_SEX_UNKNOWN],
|
||||
Usr_PutIconsListStds,&Gbl,
|
||||
Usr_PutIconsListStds,NULL,
|
||||
Hlp_USERS_Students,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Form to select scope *****/
|
||||
|
@ -8185,7 +8184,7 @@ void Usr_SeeStudents (void)
|
|||
|
||||
/***** Form to select groups *****/
|
||||
if (Gbl.Scope.Current == Hie_CRS)
|
||||
Grp_ShowFormToSelectSeveralGroups (Sco_PutParamCurrentScope,&Gbl,
|
||||
Grp_ShowFormToSelectSeveralGroups (Sco_PutParamCurrentScope,&Gbl.Scope.Current,
|
||||
Grp_MY_GROUPS);
|
||||
|
||||
/***** Start section with user list *****/
|
||||
|
@ -8194,11 +8193,11 @@ void Usr_SeeStudents (void)
|
|||
if (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STD].NumUsrs,
|
||||
Sco_PutParamCurrentScope,&Gbl,
|
||||
Sco_PutParamCurrentScope,&Gbl.Scope.Current,
|
||||
NULL))
|
||||
{
|
||||
/***** Form to select type of list of users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (Sco_PutParamCurrentScope,&Gbl);
|
||||
Usr_ShowFormsToSelectUsrListType (Sco_PutParamCurrentScope,&Gbl.Scope.Current);
|
||||
|
||||
/***** Draw a class photo with students of the course *****/
|
||||
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
|
||||
|
@ -8346,7 +8345,7 @@ void Usr_SeeTeachers (void)
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_ROLES_PLURAL_Abc[Rol_TCH][Usr_SEX_UNKNOWN],
|
||||
Usr_PutIconsListTchs,&Gbl,
|
||||
Usr_PutIconsListTchs,NULL,
|
||||
Hlp_USERS_Teachers,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Form to select scope *****/
|
||||
|
@ -8362,7 +8361,7 @@ void Usr_SeeTeachers (void)
|
|||
|
||||
/***** Form to select groups *****/
|
||||
if (Gbl.Scope.Current == Hie_CRS)
|
||||
Grp_ShowFormToSelectSeveralGroups (Sco_PutParamCurrentScope,&Gbl,
|
||||
Grp_ShowFormToSelectSeveralGroups (Sco_PutParamCurrentScope,&Gbl.Scope.Current,
|
||||
Grp_MY_GROUPS);
|
||||
|
||||
/***** Start section with user list *****/
|
||||
|
@ -8371,11 +8370,11 @@ void Usr_SeeTeachers (void)
|
|||
if (NumUsrs)
|
||||
{
|
||||
if (Usr_GetIfShowBigList (NumUsrs,
|
||||
Sco_PutParamCurrentScope,&Gbl,
|
||||
Sco_PutParamCurrentScope,&Gbl.Scope.Current,
|
||||
NULL))
|
||||
{
|
||||
/***** Form to select type of list of users *****/
|
||||
Usr_ShowFormsToSelectUsrListType (Sco_PutParamCurrentScope,&Gbl);
|
||||
Usr_ShowFormsToSelectUsrListType (Sco_PutParamCurrentScope,&Gbl.Scope.Current);
|
||||
|
||||
/***** Draw a class photo with teachers of the course *****/
|
||||
if (Gbl.Usrs.Me.ListType == Usr_LIST_AS_CLASS_PHOTO)
|
||||
|
@ -8763,35 +8762,32 @@ static Usr_ListUsrsOption_t Usr_GetListUsrsOption (Usr_ListUsrsOption_t DefaultA
|
|||
/***************** Put contextual icons in list of guests ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_PutIconsListGsts (void *Args)
|
||||
static void Usr_PutIconsListGsts (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
switch (Gbl.Usrs.Me.ListType)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.ListType)
|
||||
{
|
||||
case Usr_LIST_AS_CLASS_PHOTO:
|
||||
if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs)
|
||||
/***** Put icon to print guests *****/
|
||||
Usr_PutIconToPrintGsts ();
|
||||
break;
|
||||
case Usr_LIST_AS_LISTING:
|
||||
/***** Put icon to show all data of guests *****/
|
||||
Usr_PutIconToShowGstsAllData ();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/***** Put icon to show a figure *****/
|
||||
Fig_PutIconToShowFigure (Fig_USERS);
|
||||
case Usr_LIST_AS_CLASS_PHOTO:
|
||||
if (Gbl.Usrs.LstUsrs[Rol_GST].NumUsrs)
|
||||
/***** Put icon to print guests *****/
|
||||
Usr_PutIconToPrintGsts ();
|
||||
break;
|
||||
case Usr_LIST_AS_LISTING:
|
||||
/***** Put icon to show all data of guests *****/
|
||||
Usr_PutIconToShowGstsAllData ();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/***** Put icon to show a figure *****/
|
||||
Fig_PutIconToShowFigure (Fig_USERS);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Put contextual icons in list of students *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_PutIconsListStds (void *Args)
|
||||
static void Usr_PutIconsListStds (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
{
|
||||
|
@ -8819,7 +8815,7 @@ static void Usr_PutIconsListStds (void *Args)
|
|||
/**************** Put contextual icons in list of teachers *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Usr_PutIconsListTchs (void *Args)
|
||||
static void Usr_PutIconsListTchs (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
{
|
||||
|
@ -8850,19 +8846,19 @@ static void Usr_PutIconsListTchs (void *Args)
|
|||
static void Usr_PutIconToPrintGsts (void)
|
||||
{
|
||||
Ico_PutContextualIconToPrint (ActPrnGstPho,
|
||||
Usr_ShowGstsAllDataParams,&Gbl);
|
||||
Usr_ShowGstsAllDataParams,NULL);
|
||||
}
|
||||
|
||||
static void Usr_PutIconToPrintStds (void)
|
||||
{
|
||||
Ico_PutContextualIconToPrint (ActPrnStdPho,
|
||||
Usr_ShowStdsAllDataParams,&Gbl);
|
||||
Usr_ShowStdsAllDataParams,NULL);
|
||||
}
|
||||
|
||||
static void Usr_PutIconToPrintTchs (void)
|
||||
{
|
||||
Ico_PutContextualIconToPrint (ActPrnTchPho,
|
||||
Usr_ShowTchsAllDataParams,&Gbl);
|
||||
Usr_ShowTchsAllDataParams,NULL);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -8874,7 +8870,7 @@ static void Usr_PutIconToShowGstsAllData (void)
|
|||
extern const char *Txt_Show_all_data_in_a_table;
|
||||
|
||||
Lay_PutContextualLinkOnlyIcon (ActLstGstAll,NULL,
|
||||
Usr_ShowGstsAllDataParams,&Gbl,
|
||||
Usr_ShowGstsAllDataParams,NULL,
|
||||
"table.svg",
|
||||
Txt_Show_all_data_in_a_table);
|
||||
}
|
||||
|
@ -8884,7 +8880,7 @@ static void Usr_PutIconToShowStdsAllData (void)
|
|||
extern const char *Txt_Show_all_data_in_a_table;
|
||||
|
||||
Lay_PutContextualLinkOnlyIcon (ActLstStdAll,NULL,
|
||||
Usr_ShowStdsAllDataParams,&Gbl,
|
||||
Usr_ShowStdsAllDataParams,NULL,
|
||||
"table.svg",
|
||||
Txt_Show_all_data_in_a_table);
|
||||
}
|
||||
|
@ -8894,33 +8890,26 @@ static void Usr_PutIconToShowTchsAllData (void)
|
|||
extern const char *Txt_Show_all_data_in_a_table;
|
||||
|
||||
Lay_PutContextualLinkOnlyIcon (ActLstTchAll,NULL,
|
||||
Usr_ShowTchsAllDataParams,&Gbl,
|
||||
Usr_ShowTchsAllDataParams,NULL,
|
||||
"table.svg",
|
||||
Txt_Show_all_data_in_a_table);
|
||||
}
|
||||
|
||||
static void Usr_ShowGstsAllDataParams (void *Args)
|
||||
static void Usr_ShowGstsAllDataParams (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
Usr_PutParamListWithPhotos ();
|
||||
Usr_PutParamListWithPhotos ();
|
||||
}
|
||||
|
||||
static void Usr_ShowStdsAllDataParams (void *Args)
|
||||
static void Usr_ShowStdsAllDataParams (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
{
|
||||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamListWithPhotos ();
|
||||
}
|
||||
Grp_PutParamsCodGrps ();
|
||||
Usr_PutParamListWithPhotos ();
|
||||
}
|
||||
|
||||
static void Usr_ShowTchsAllDataParams (void *Args)
|
||||
static void Usr_ShowTchsAllDataParams (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
{
|
||||
Sco_PutParamCurrentScope (&Gbl);
|
||||
Usr_PutParamListWithPhotos ();
|
||||
}
|
||||
Sco_PutParamCurrentScope (&Gbl.Scope.Current);
|
||||
Usr_PutParamListWithPhotos ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
15
swad_zip.c
15
swad_zip.c
|
@ -74,7 +74,7 @@ extern struct Globals Gbl;
|
|||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void ZIP_PutLinkToCreateZIPAsgWrkParams (void *Args);
|
||||
static void ZIP_PutLinkToCreateZIPAsgWrkParams (__attribute__((unused)) void *Args);
|
||||
|
||||
static void ZIP_CreateTmpDirForCompression (void);
|
||||
static void ZIP_CreateDirCompressionUsr (struct UsrData *UsrDat);
|
||||
|
@ -93,19 +93,16 @@ void ZIP_PutLinkToCreateZIPAsgWrk (void)
|
|||
extern const char *Txt_Create_ZIP_file;
|
||||
|
||||
Lay_PutContextualLinkIconText (ActAdmAsgWrkCrs,NULL,
|
||||
ZIP_PutLinkToCreateZIPAsgWrkParams,&Gbl,
|
||||
ZIP_PutLinkToCreateZIPAsgWrkParams,NULL,
|
||||
"download.svg",
|
||||
Txt_Create_ZIP_file);
|
||||
}
|
||||
|
||||
static void ZIP_PutLinkToCreateZIPAsgWrkParams (void *Args)
|
||||
static void ZIP_PutLinkToCreateZIPAsgWrkParams (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Args)
|
||||
{
|
||||
Usr_PutHiddenParSelectedUsrsCods (&Gbl.Usrs.Selected);
|
||||
Brw_PutHiddenParamFullTreeIfSelected (&Gbl.FileBrowser.FullTree);
|
||||
Par_PutHiddenParamChar ("CreateZIP",'Y');
|
||||
}
|
||||
Usr_PutHiddenParSelectedUsrsCods (&Gbl.Usrs.Selected);
|
||||
Brw_PutHiddenParamFullTreeIfSelected (&Gbl.FileBrowser.FullTree);
|
||||
Par_PutHiddenParamChar ("CreateZIP",'Y');
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue