mirror of https://github.com/acanas/swad-core.git
Version 23.60: Jan 26, 2024 Code refactoring in my courses.
This commit is contained in:
parent
ac47c5985e
commit
740f317010
|
@ -1957,6 +1957,12 @@ void HTM_TxtColonNBSP (const char *Txt)
|
|||
HTM_NBSP ();
|
||||
}
|
||||
|
||||
void HTM_NBSPTxt (const char *Txt)
|
||||
{
|
||||
HTM_NBSP ();
|
||||
HTM_Txt (Txt);
|
||||
}
|
||||
|
||||
void HTM_NBSP (void)
|
||||
{
|
||||
HTM_Txt (" ");
|
||||
|
|
|
@ -228,6 +228,7 @@ void HTM_Txt (const char *Txt);
|
|||
void HTM_TxtColon (const char *Txt);
|
||||
void HTM_TxtSemicolon (const char *Txt);
|
||||
void HTM_TxtColonNBSP (const char *Txt);
|
||||
void HTM_NBSPTxt (const char *Txt);
|
||||
void HTM_NBSP (void);
|
||||
void HTM_Colon (void);
|
||||
void HTM_Semicolon (void);
|
||||
|
|
|
@ -326,7 +326,7 @@ static void MFU_PutIconAndText (Act_Action_t Action,
|
|||
"class=\"ICO_%s_%s\"",
|
||||
Ico_GetPreffix (Color[Gbl.Prefs.IconSet]),
|
||||
The_GetSuffix ());
|
||||
HTM_TxtF (" %s",MenuStr);
|
||||
HTM_NBSPTxt (MenuStr);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -299,7 +299,8 @@ static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct Usr_
|
|||
HTM_TD_Begin ("class=\"LT DAT_STRONG_%s %s\"",
|
||||
The_GetSuffix (),
|
||||
The_GetColorRows ());
|
||||
HTM_TxtF ("%s: %s",Txt_ID,ID);
|
||||
HTM_TxtColon (Txt_ID);
|
||||
HTM_NBSPTxt (ID);
|
||||
HTM_BR ();
|
||||
HTM_TxtColonNBSP (Txt_Name);
|
||||
if (UsrDat->FullName[0])
|
||||
|
|
|
@ -1812,7 +1812,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
|||
// TabPrf ******************************************************************
|
||||
// Actions in menu:
|
||||
[ActFrmRolSes ] = { 843, 0,TabPrf,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WriteFormLogout ,"power-off" },
|
||||
[ActMyCrs ] = { 987, 1,TabPrf,ActMyCrs ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_ReqSelectOneOfMyCourses ,"sitemap" },
|
||||
[ActMyCrs ] = { 987, 1,TabPrf,ActMyCrs ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Hie_ReqSelectOneNodeFromMyHierarchy ,"sitemap" },
|
||||
[ActSeeMyTT ] = { 408, 2,TabPrf,ActSeeMyTT ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tmt_ShowClassTimeTable ,"clock" },
|
||||
[ActSeeMyAgd ] = {1602, 3,TabPrf,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_GetParsAndShowMyAgenda ,"calendar" },
|
||||
[ActFrmMyAcc ] = { 36, 4,TabPrf,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_ShowFormMyAccount ,"at" },
|
||||
|
|
|
@ -1333,7 +1333,8 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
|||
"AsgCod",
|
||||
AsgCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -1598,7 +1599,7 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Write group type name and group name */
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
|
||||
if (NumGrps >= 2)
|
||||
{
|
||||
|
@ -1610,8 +1611,8 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
|
|||
}
|
||||
}
|
||||
else
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
|
|
@ -1108,7 +1108,8 @@ static void Att_ShowLstGrpsToEditEvent (long AttCod)
|
|||
"AttCod",
|
||||
AttCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -1314,7 +1315,7 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToEvent (struct Att_Event *Event
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Write group type name (row[0]) and group name (row[1]) */
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
|
||||
/* Write the name of the room (row[2]) */
|
||||
if (row[2]) // May be NULL because of LEFT JOIN
|
||||
|
@ -1333,8 +1334,8 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToEvent (struct Att_Event *Event
|
|||
}
|
||||
}
|
||||
else
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_TxtF ("% %s",
|
||||
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
|
||||
/***** End container *****/
|
||||
HTM_DIV_End ();
|
||||
|
@ -1755,7 +1756,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
The_GetColorRows ());
|
||||
HTM_Txt (UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -2929,7 +2930,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
|||
The_GetColorRows ());
|
||||
HTM_Txt (UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -3108,7 +3109,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
|
|||
The_GetSuffix ());
|
||||
HTM_Txt (UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -199,7 +199,7 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action
|
|||
|
||||
/***** Center logo and name *****/
|
||||
Lgo_DrawLogo (Hie_CTR,Ctr,IconClass);
|
||||
HTM_TxtF (" %s",Ctr->FullName);
|
||||
HTM_NBSPTxt (Ctr->FullName);
|
||||
|
||||
/***** End link *****/
|
||||
HTM_BUTTON_End ();
|
||||
|
|
|
@ -633,11 +633,12 @@ Me sale este error, no s
|
|||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.59.5 (2024-01-26)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.60 (2024-01-26)"
|
||||
#define CSS_FILE "swad23.58.1.css"
|
||||
#define JS_FILE "swad23.53.6.js"
|
||||
/*
|
||||
Version 23.59.5: Jan 26, 2024 Responsive design in forums and messages. (? lines)
|
||||
Version 23.60: Jan 26, 2024 Code refactoring in my courses. (335725 lines)
|
||||
Version 23.59.5: Jan 26, 2024 Responsive design in forums and messages. (335698 lines)
|
||||
Version 23.59.4: Jan 24, 2024 Responsive design in list of users. (335701 lines)
|
||||
Version 23.59.3: Jan 24, 2024 Responsive design in course hits. (335698 lines)
|
||||
Version 23.59.2: Jan 24, 2024 Responsive design in global hits. (335672 lines)
|
||||
|
|
|
@ -324,7 +324,7 @@ static void Cht_WriteLinkToChat2 (const char *RoomCode,const char *RoomFullName)
|
|||
HTM_STRONG_Begin ();
|
||||
|
||||
/* Room name and users */
|
||||
HTM_TxtF (" %s",RoomFullName);
|
||||
HTM_NBSPTxt (RoomFullName);
|
||||
if (NumUsrsInRoom > 1)
|
||||
HTM_TxtF (" [%d %s]",NumUsrsInRoom,Txt_connected_PLURAL);
|
||||
else if (NumUsrsInRoom == 1)
|
||||
|
|
|
@ -498,8 +498,6 @@ void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action
|
|||
const char *ClassContainer,
|
||||
const char *ClassMap)
|
||||
{
|
||||
char CountryName[Cty_MAX_BYTES_NAME + 1];
|
||||
|
||||
/***** Begin form *****/
|
||||
Frm_BeginFormGoTo (Action);
|
||||
ParCod_PutPar (ParCod_Cty,Cty->HieCod);
|
||||
|
@ -516,9 +514,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action
|
|||
Cty_DrawCountryMap (Cty,ClassMap);
|
||||
|
||||
/***** Write country name *****/
|
||||
Str_Copy (CountryName,Cty->FullName,sizeof (CountryName) - 1);
|
||||
HTM_TxtF (" %s ",CountryName);
|
||||
HTM_TxtF ("(%s)",Cty->ShrtName);
|
||||
HTM_TxtF (" %s (%s)",Cty->FullName,Cty->ShrtName);
|
||||
|
||||
/***** End link *****/
|
||||
HTM_BUTTON_End ();
|
||||
|
|
202
swad_course.c
202
swad_course.c
|
@ -90,15 +90,6 @@ static struct Hie_Node *Crs_EditingCrs = NULL; // Static variable to keep the co
|
|||
/**************************** Private prototypes *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Crs_WriteListMyCoursesToSelectOne (void);
|
||||
static void Crs_WriteNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6],
|
||||
Hie_Level_t Level);
|
||||
static void Crs_WriteRowMyCourses (Hie_Level_t Level,
|
||||
const struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_Highlight_t Highlight,
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6]);
|
||||
|
||||
static void Crs_GetListCrssInCurrentDeg (void);
|
||||
static void Crs_ListCourses (void);
|
||||
static void Crs_PutIconsListCourses (__attribute__((unused)) void *Args);
|
||||
|
@ -124,8 +115,6 @@ static void Crs_EmptyCourseCompletely (long CrsCod);
|
|||
static void Crs_PutButtonToGoToCrs (void);
|
||||
static void Crs_PutButtonToRegisterInCrs (void);
|
||||
|
||||
static void Crs_PutIconToSearchCourses (__attribute__((unused)) void *Args);
|
||||
|
||||
static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnAccepted);
|
||||
|
||||
static void Crs_EditingCourseConstructor (void);
|
||||
|
@ -149,132 +138,6 @@ void Crs_ShowIntroduction (void)
|
|||
Hlp_ShowHelpWhatWouldYouLikeToDo ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Write menu with my courses *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Crs_WriteListMyCoursesToSelectOne (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Courses;
|
||||
extern const char *Txt_My_courses;
|
||||
struct Hie_Node Hie[Hie_NUM_LEVELS];
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6];
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_My_courses,
|
||||
Crs_PutIconToSearchCourses,NULL,
|
||||
Hlp_PROFILE_Courses,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Begin list *****/
|
||||
HTM_UL_Begin ("class=\"LIST_TREE\"");
|
||||
|
||||
/***** Write nodes recursively *****/
|
||||
Crs_WriteNodes (Hie,IsLastItemInLevel,Hie_SYS);
|
||||
|
||||
/***** End list *****/
|
||||
HTM_UL_End ();
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
||||
static void Crs_WriteNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6],
|
||||
Hie_Level_t Level)
|
||||
{
|
||||
extern unsigned (*Hie_GetMyNodesFromDB[Hie_NUM_LEVELS]) (MYSQL_RES **mysql_res,
|
||||
long PrtCod);
|
||||
extern bool (*Hie_GetDataByCod[Hie_NUM_LEVELS]) (struct Hie_Node *Node);
|
||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||
Lay_Highlight_t Highlight; // Highlight because degree, course, etc. is selected
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumNode;
|
||||
unsigned NumNodes;
|
||||
|
||||
if (Level > Hie_SYS)
|
||||
NumNodes = Hie_GetMyNodesFromDB[Level] (&mysql_res,Hie[Level - 1].HieCod);
|
||||
else
|
||||
NumNodes = 1;
|
||||
|
||||
for (NumNode = 0;
|
||||
NumNode < NumNodes;
|
||||
NumNode++)
|
||||
{
|
||||
if (Level > Hie_SYS)
|
||||
{
|
||||
/***** Get next node *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Hie[Level].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
|
||||
/***** Get data of this node *****/
|
||||
if (!Hie_GetDataByCod[Level] (&Hie[Level]))
|
||||
Err_WrongCountrExit ();
|
||||
}
|
||||
else
|
||||
{
|
||||
Hie[Level].HieCod = -1L;
|
||||
Str_Copy (Hie[Level].ShrtName,Txt_HIERARCHY_SINGUL_Abc[Level],
|
||||
sizeof (Hie[Level].ShrtName) - 1);
|
||||
}
|
||||
|
||||
/***** Write link to node *****/
|
||||
if (Level < Hie_CRS)
|
||||
Highlight = (Gbl.Hierarchy.Node[Level + 1].HieCod <= 0 &&
|
||||
Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
else
|
||||
Highlight = (Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
|
||||
IsLastItemInLevel[Level] = (NumNode == NumNodes - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
Crs_WriteRowMyCourses (Level,Hie,Highlight,IsLastItemInLevel);
|
||||
|
||||
/***** Write subnodes recursively ******/
|
||||
if (Level < Hie_CRS)
|
||||
Crs_WriteNodes (Hie,IsLastItemInLevel,Level + 1);
|
||||
}
|
||||
|
||||
if (Level > Hie_SYS)
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
static void Crs_WriteRowMyCourses (Hie_Level_t Level,
|
||||
const struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_Highlight_t Highlight,
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6])
|
||||
{
|
||||
extern ParCod_Param_t Hie_ParCod[Hie_NUM_LEVELS];
|
||||
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
|
||||
static Act_Action_t Actions[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_SYS] = ActSeeSysInf,
|
||||
[Hie_CTY] = ActSeeCtyInf,
|
||||
[Hie_INS] = ActSeeInsInf,
|
||||
[Hie_CTR] = ActSeeCtrInf,
|
||||
[Hie_DEG] = ActSeeDegInf,
|
||||
[Hie_CRS] = ActSeeCrsInf,
|
||||
};
|
||||
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
Lay_IndentDependingOnLevel (Level,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Level],Hie[Level].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Act_GetActionText (Actions[Level]),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Lgo_DrawLogo (Level,&Hie[Level],"ICO16x16");
|
||||
HTM_DIV_Begin ("class=\"MY_CRS_TXT\"");
|
||||
HTM_TxtF (" %s",Hie[Level].ShrtName);
|
||||
HTM_DIV_End ();
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Get number of courses with users **********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1754,71 +1617,6 @@ static void Crs_PutButtonToRegisterInCrs (void)
|
|||
Frm_EndForm ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Select one of my courses **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_ReqSelectOneOfMyCourses (void)
|
||||
{
|
||||
/***** Fill the list with the courses I belong to, if not filled *****/
|
||||
Hie_GetMyHierarchy (Hie_CRS);
|
||||
|
||||
/***** Select one of my courses *****/
|
||||
if (Gbl.Usrs.Me.Hierarchy[Hie_CRS].Num)
|
||||
/* Show my courses */
|
||||
Crs_WriteListMyCoursesToSelectOne ();
|
||||
else // I am not enroled in any course
|
||||
/* Show help to enrol me */
|
||||
Hlp_ShowHelpWhatWouldYouLikeToDo ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Put an icon (form) to search courses ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Crs_PutIconToSearchCourses (__attribute__((unused)) void *Args)
|
||||
{
|
||||
Lay_PutContextualLinkOnlyIcon (ActReqSch,NULL,
|
||||
Sch_PutLinkToSearchCoursesPars,NULL,
|
||||
"search.svg",Ico_BLACK);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********** Put an icon (form) to select my courses in breadcrumb ************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_PutIconToSelectMyCoursesInBreadcrumb (void)
|
||||
{
|
||||
extern const char *Hie_Icons[Hie_NUM_LEVELS];
|
||||
extern const char *Txt_My_courses;
|
||||
|
||||
if (Gbl.Usrs.Me.Logged) // I am logged
|
||||
{
|
||||
/***** Begin form *****/
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
|
||||
/***** Put icon with link *****/
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Hie_Icons[Hie_SYS],Txt_My_courses,
|
||||
"class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"",
|
||||
The_GetSuffix ());
|
||||
|
||||
/***** End form *****/
|
||||
Frm_EndForm ();
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Put an icon (form) to select my courses ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_PutIconToSelectMyCourses (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Gbl.Usrs.Me.Logged) // I am logged
|
||||
Lay_PutContextualLinkOnlyIcon (ActMyCrs,NULL,
|
||||
NULL,NULL,
|
||||
"sitemap.svg",Ico_BLACK);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Write courses of a user **************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -79,11 +79,6 @@ void Crs_RenameCourse (struct Hie_Node *Crs,Nam_ShrtOrFullName_t ShrtOrFull);
|
|||
void Crs_ChangeCrsStatus (void);
|
||||
void Crs_ContEditAfterChgCrs (void);
|
||||
|
||||
void Crs_PutIconToSelectMyCoursesInBreadcrumb (void);
|
||||
void Crs_PutIconToSelectMyCourses (__attribute__((unused)) void *Args);
|
||||
|
||||
void Crs_ReqSelectOneOfMyCourses (void);
|
||||
|
||||
void Crs_GetAndWriteCrssOfAUsr (const struct Usr_Data *UsrDat,Rol_Role_t Role);
|
||||
|
||||
void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss);
|
||||
|
|
|
@ -205,7 +205,7 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action
|
|||
|
||||
/***** Degree logo and name *****/
|
||||
Lgo_DrawLogo (Hie_DEG,Deg,IconClass);
|
||||
HTM_TxtF (" %s",Deg->FullName);
|
||||
HTM_NBSPTxt (Deg->FullName);
|
||||
|
||||
/***** End link *****/
|
||||
HTM_BUTTON_End ();
|
||||
|
|
|
@ -1527,11 +1527,14 @@ void ExaRes_ShowExamResultUser (struct Usr_Data *UsrDat)
|
|||
/***** User's data *****/
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
HTM_TxtF (" %s",UsrDat->Surname1);
|
||||
HTM_NBSPTxt (UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
if (UsrDat->FrstName[0])
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
{
|
||||
HTM_Comma ();
|
||||
HTM_SPTxt (UsrDat->FrstName);
|
||||
}
|
||||
HTM_BR ();
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
|
||||
|
|
|
@ -574,7 +574,7 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Write group type name (row[0]) and group name (row[1]) */
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
|
||||
if (NumGrps >= 2)
|
||||
{
|
||||
|
@ -587,8 +587,8 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
|
|||
}
|
||||
}
|
||||
else
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
@ -1016,7 +1016,8 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
|||
"SesCod",
|
||||
SesCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -1825,7 +1825,7 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
HTM_TxtF (" %s",ForumName);
|
||||
HTM_NBSPTxt (ForumName);
|
||||
|
||||
/***** Write total number of threads and posts in this forum *****/
|
||||
if (NumThrs)
|
||||
|
|
|
@ -169,7 +169,7 @@ void Grp_WriteNamesOfSelectedGrps (void)
|
|||
{
|
||||
GrpDat.GrpCod = GrpCod;
|
||||
Grp_GetGroupDataByCod (&GrpDat);
|
||||
HTM_TxtF ("%s %s",GrpDat.GrpTypName,GrpDat.GrpName);
|
||||
HTM_TxtF ("%s %s",GrpDat.GrpTypName,GrpDat.GrpName);
|
||||
}
|
||||
else // GrpCod < 0 ==> students not belonging to any group of type (-GrpCod)
|
||||
{
|
||||
|
@ -433,7 +433,7 @@ static void Grp_PutCheckboxAllGrps (Grp_WhichGroups_t GroupsSelectableByStdsOrNE
|
|||
" onclick=\"togglecheckChildren(this,'GrpCods')\"" :
|
||||
" onclick=\"togglecheckChildren(this,'GrpCods')\"") :
|
||||
" disabled=\"disabled\"");
|
||||
HTM_TxtF (" %s",Txt_All_groups);
|
||||
HTM_NBSPTxt (Txt_All_groups);
|
||||
HTM_LABEL_End ();
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
|
214
swad_hierarchy.c
214
swad_hierarchy.c
|
@ -43,6 +43,7 @@
|
|||
#include "swad_form.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_group_database.h"
|
||||
#include "swad_help.h"
|
||||
#include "swad_hierarchy.h"
|
||||
#include "swad_hierarchy_database.h"
|
||||
#include "swad_hierarchy_type.h"
|
||||
|
@ -130,6 +131,17 @@ static void Hie_ShowHierarchyRow (const char *Text1,const char *Text2,
|
|||
int NumNodes[Hie_NUM_LEVELS]);
|
||||
static void Hie_ShowHierarchyCell (const char *ClassTxt,int Num);
|
||||
|
||||
//--------------------------- My hierarchy ------------------------------------
|
||||
static void Hie_WriteListMyHierarchyToSelectNode (void);
|
||||
static void Hie_PutIconToSearchCourses (__attribute__((unused)) void *Args);
|
||||
static void Hie_WriteMyHierarchyNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6],
|
||||
Hie_Level_t Level);
|
||||
static void Hie_WriteRowMyHierarchy (Hie_Level_t Level,
|
||||
const struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_Highlight_t Highlight,
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6]);
|
||||
|
||||
/*****************************************************************************/
|
||||
/********** List pending institutions, centers, degrees and courses **********/
|
||||
/*****************************************************************************/
|
||||
|
@ -1157,7 +1169,8 @@ static void Hie_GetAndShowHierarchyWithNodes (Hie_Level_t HavingNodesOfLevel)
|
|||
HavingNodesOfLevel);// Grand child
|
||||
|
||||
/***** Write number of elements with courses *****/
|
||||
Hie_ShowHierarchyRow (Txt_With_,Txt_HIERARCHY_PLURAL_abc[HavingNodesOfLevel],"DAT",NumNodes);
|
||||
Hie_ShowHierarchyRow (Txt_With_,Txt_HIERARCHY_PLURAL_abc[HavingNodesOfLevel],
|
||||
"DAT",NumNodes);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1457,3 +1470,202 @@ static void Hie_ShowHierarchyCell (const char *ClassTxt,int Num)
|
|||
HTM_Hyphen ();
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********** Put an icon (form) to select my courses in breadcrumb ************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Hie_PutIconToSelectMyHierarchyInBreadcrumb (void)
|
||||
{
|
||||
extern const char *Txt_My_courses;
|
||||
|
||||
if (Gbl.Usrs.Me.Logged) // I am logged
|
||||
{
|
||||
/***** Begin form *****/
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
|
||||
/***** Put icon with link *****/
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Hie_Icons[Hie_SYS],Txt_My_courses,
|
||||
"class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"",
|
||||
The_GetSuffix ());
|
||||
|
||||
/***** End form *****/
|
||||
Frm_EndForm ();
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Put an icon (form) to select my hierarchy *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Hie_PutIconToSelectMyHierarchy (__attribute__((unused)) void *Args)
|
||||
{
|
||||
if (Gbl.Usrs.Me.Logged) // I am logged
|
||||
Lay_PutContextualLinkOnlyIcon (ActMyCrs,NULL,
|
||||
NULL,NULL,
|
||||
"sitemap.svg",Ico_BLACK);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Select one node from my hierarchy ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Hie_ReqSelectOneNodeFromMyHierarchy (void)
|
||||
{
|
||||
/***** Fill the list with the courses I belong to, if not filled *****/
|
||||
Hie_GetMyHierarchy (Hie_CRS);
|
||||
|
||||
/***** Select one of my courses *****/
|
||||
if (Gbl.Usrs.Me.Hierarchy[Hie_CRS].Num)
|
||||
/* Show my courses */
|
||||
Hie_WriteListMyHierarchyToSelectNode ();
|
||||
else // I am not enroled in any course
|
||||
/* Show help to enrol me */
|
||||
Hlp_ShowHelpWhatWouldYouLikeToDo ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Write menu with my courses *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Hie_WriteListMyHierarchyToSelectNode (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Courses;
|
||||
extern const char *Txt_My_courses;
|
||||
struct Hie_Node Hie[Hie_NUM_LEVELS];
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6];
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_My_courses,
|
||||
Hie_PutIconToSearchCourses,NULL,
|
||||
Hlp_PROFILE_Courses,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Begin list *****/
|
||||
HTM_UL_Begin ("class=\"LIST_TREE\"");
|
||||
|
||||
/***** Write nodes recursively *****/
|
||||
Hie_WriteMyHierarchyNodes (Hie,IsLastItemInLevel,Hie_SYS);
|
||||
|
||||
/***** End list *****/
|
||||
HTM_UL_End ();
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Put an icon (form) to search courses ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Hie_PutIconToSearchCourses (__attribute__((unused)) void *Args)
|
||||
{
|
||||
Lay_PutContextualLinkOnlyIcon (ActReqSch,NULL,
|
||||
Sch_PutLinkToSearchCoursesPars,NULL,
|
||||
"search.svg",Ico_BLACK);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Write my hierarchy nodes recursively *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Hie_WriteMyHierarchyNodes (struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6],
|
||||
Hie_Level_t Level)
|
||||
{
|
||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||
Lay_Highlight_t Highlight; // Highlight because degree, course, etc. is selected
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumNode;
|
||||
unsigned NumNodes;
|
||||
|
||||
if (Level > Hie_SYS)
|
||||
NumNodes = Hie_GetMyNodesFromDB[Level] (&mysql_res,Hie[Level - 1].HieCod);
|
||||
else
|
||||
NumNodes = 1;
|
||||
|
||||
for (NumNode = 0;
|
||||
NumNode < NumNodes;
|
||||
NumNode++)
|
||||
{
|
||||
if (Level > Hie_SYS)
|
||||
{
|
||||
/***** Get next node *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Hie[Level].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
|
||||
/***** Get data of this node *****/
|
||||
if (!Hie_GetDataByCod[Level] (&Hie[Level]))
|
||||
Err_WrongCountrExit ();
|
||||
}
|
||||
else
|
||||
{
|
||||
Hie[Level].HieCod = -1L;
|
||||
Str_Copy (Hie[Level].ShrtName,Txt_HIERARCHY_SINGUL_Abc[Level],
|
||||
sizeof (Hie[Level].ShrtName) - 1);
|
||||
}
|
||||
|
||||
/***** Write link to node *****/
|
||||
if (Level < Hie_CRS)
|
||||
Highlight = (Gbl.Hierarchy.Node[Level + 1].HieCod <= 0 &&
|
||||
Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
else
|
||||
Highlight = (Gbl.Hierarchy.Node[Level].HieCod == Hie[Level].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
|
||||
IsLastItemInLevel[Level] = (NumNode == NumNodes - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
Hie_WriteRowMyHierarchy (Level,Hie,Highlight,IsLastItemInLevel);
|
||||
|
||||
/***** Write subnodes recursively ******/
|
||||
if (Level < Hie_CRS)
|
||||
Hie_WriteMyHierarchyNodes (Hie,IsLastItemInLevel,Level + 1);
|
||||
}
|
||||
|
||||
if (Level > Hie_SYS)
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Write a row in my hierarchy ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Hie_WriteRowMyHierarchy (Hie_Level_t Level,
|
||||
const struct Hie_Node Hie[Hie_NUM_LEVELS],
|
||||
Lay_Highlight_t Highlight,
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6])
|
||||
{
|
||||
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
|
||||
static Act_Action_t Actions[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_SYS] = ActSeeSysInf,
|
||||
[Hie_CTY] = ActSeeCtyInf,
|
||||
[Hie_INS] = ActSeeInsInf,
|
||||
[Hie_CTR] = ActSeeCtrInf,
|
||||
[Hie_DEG] = ActSeeDegInf,
|
||||
[Hie_CRS] = ActSeeCrsInf,
|
||||
};
|
||||
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
Lay_IndentDependingOnLevel (Level,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Level],Hie[Level].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Act_GetActionText (Actions[Level]),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
|
||||
/* Node logo */
|
||||
Lgo_DrawLogo (Level,&Hie[Level],"ICO16x16");
|
||||
|
||||
/* Node name */
|
||||
HTM_DIV_Begin ("class=\"MY_CRS_TXT\"");
|
||||
HTM_NBSPTxt (Hie[Level].ShrtName);
|
||||
HTM_DIV_End ();
|
||||
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
}
|
||||
|
|
|
@ -93,4 +93,10 @@ unsigned Hie_GetCachedNumUsrsWhoClaimToBelongTo (Hie_Level_t Level,
|
|||
unsigned Hie_GetNumUsrsWhoClaimToBelongTo (Hie_Level_t Level,
|
||||
struct Hie_Node *Node);
|
||||
|
||||
//--------------------------- My hierarchy ------------------------------------
|
||||
void Hie_PutIconToSelectMyHierarchyInBreadcrumb (void);
|
||||
void Hie_PutIconToSelectMyHierarchy (__attribute__((unused)) void *Args);
|
||||
|
||||
void Hie_ReqSelectOneNodeFromMyHierarchy (void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -163,9 +163,7 @@ void Hld_SeeAllHolidays (void)
|
|||
Frm_EndForm ();
|
||||
HTM_TH_End ();
|
||||
}
|
||||
HTM_TH_Begin (HTM_HEAD_LEFT);
|
||||
HTM_TxtF (" %s ",Txt_End_date);
|
||||
HTM_TH_End ();
|
||||
HTM_TH (Txt_End_date,HTM_HEAD_LEFT);
|
||||
HTM_TH (Txt_Holiday,HTM_HEAD_LEFT);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -184,12 +182,10 @@ void Hld_SeeAllHolidays (void)
|
|||
Dat_ConvDateToDateStr (&Holidays.Lst[NumHld].StartDate,StrDate);
|
||||
|
||||
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_NBSP ();
|
||||
HTM_Txt (StrDate);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_NBSP ();
|
||||
switch (Holidays.Lst[NumHld].HldTyp)
|
||||
{
|
||||
case Hld_HOLIDAY:
|
||||
|
@ -202,7 +198,7 @@ void Hld_SeeAllHolidays (void)
|
|||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_TxtF (" %s",Holidays.Lst[NumHld].Name);
|
||||
HTM_Txt (Holidays.Lst[NumHld].Name);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
|
@ -459,7 +459,7 @@ void Ico_PutIconTextLink (const char *Icon,Ico_Color_t Color,const char *Text)
|
|||
/***** Print icon and optional text *****/
|
||||
HTM_DIV_Begin ("class=\"CONTEXT_OPT ICO_HIGHLIGHT\"");
|
||||
Ico_PutIcon (Icon,Color,Text,"CONTEXT_ICOx16");
|
||||
HTM_TxtF (" %s",Text);
|
||||
HTM_NBSPTxt (Text);
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
|
|
|
@ -244,7 +244,7 @@ void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action
|
|||
|
||||
/***** Institution logo and name *****/
|
||||
Lgo_DrawLogo (Hie_INS,Ins,IconClass);
|
||||
HTM_TxtF (" %s",Ins->FullName);
|
||||
HTM_NBSPTxt (Ins->FullName);
|
||||
|
||||
/***** End link *****/
|
||||
HTM_BUTTON_End ();
|
||||
|
|
|
@ -1112,7 +1112,7 @@ static void Lay_WritePageTopHeading (void)
|
|||
static void Lay_WriteBreadcrumb (void)
|
||||
{
|
||||
HTM_Txt ("<nav id=\"breadcrumb\">");
|
||||
Crs_PutIconToSelectMyCoursesInBreadcrumb ();
|
||||
Hie_PutIconToSelectMyHierarchyInBreadcrumb ();
|
||||
Hie_WriteHierarchyInBreadcrumb ();
|
||||
Crs_WriteSelectorMyCoursesInBreadcrumb ();
|
||||
HTM_Txt ("</nav>");
|
||||
|
@ -1303,7 +1303,7 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
|
|||
/***** Text *****/
|
||||
if (Text)
|
||||
if (Text[0])
|
||||
HTM_TxtF (" %s",Text);
|
||||
HTM_NBSPTxt (Text);
|
||||
|
||||
/***** End label *****/
|
||||
HTM_LABEL_End ();
|
||||
|
|
|
@ -106,7 +106,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
|
|||
ActChgNumRowHeaCrs); // Course zone
|
||||
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
|
||||
HTM_LABEL_Begin (NULL);
|
||||
HTM_TxtF (" %s: ",Txt_TABLE_Header);
|
||||
// HTM_TxtF (" %s: ",Txt_TABLE_Header);
|
||||
HTM_TxtColon (Txt_TABLE_Header);
|
||||
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),"%u",Marks.Header);
|
||||
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
|
||||
HTM_SUBMIT_ON_CHANGE,
|
||||
|
@ -124,7 +125,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
|
|||
ActChgNumRowFooCrs); // Course zone
|
||||
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
|
||||
HTM_LABEL_Begin (NULL);
|
||||
HTM_TxtF (" %s: ",Txt_TABLE_Footer);
|
||||
// HTM_TxtF (" %s: ",Txt_TABLE_Footer);
|
||||
HTM_TxtColon (Txt_TABLE_Footer);
|
||||
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),"%u",Marks.Footer);
|
||||
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
|
||||
HTM_SUBMIT_ON_CHANGE,
|
||||
|
|
17
swad_match.c
17
swad_match.c
|
@ -703,7 +703,7 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Gam_Games
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Write group type name and group name */
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
|
||||
if (NumGrps >= 2)
|
||||
{
|
||||
|
@ -716,8 +716,8 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Gam_Games
|
|||
}
|
||||
}
|
||||
else
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
@ -1270,7 +1270,8 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
|||
"MchCod",
|
||||
MchCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
@ -2613,7 +2614,7 @@ static void Mch_PutCheckboxResult (const struct Mch_Match *Match)
|
|||
HTM_TxtF ("<i class=\"%s\"></i>",
|
||||
Match->Status.ShowQstResults ? "fas fa-toggle-on" :
|
||||
"fas fa-toggle-off");
|
||||
HTM_TxtF (" %s",Txt_View_results);
|
||||
HTM_NBSPTxt (Txt_View_results);
|
||||
HTM_BUTTON_End ();
|
||||
|
||||
/***** End form *****/
|
||||
|
@ -2650,7 +2651,7 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
|
|||
" onmousedown=\"this.form.submit();return false;\"",
|
||||
The_GetSuffix ());
|
||||
HTM_TxtF ("<i class=\"%s\"></i>","fas fa-check-circle");
|
||||
HTM_TxtF (" %s",Txt_MATCH_QUESTION_Answered);
|
||||
HTM_NBSPTxt (Txt_MATCH_QUESTION_Answered);
|
||||
HTM_BUTTON_End ();
|
||||
|
||||
/* End form */
|
||||
|
@ -2666,8 +2667,8 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
|
|||
"fas fa-exclamation-circle",
|
||||
Answered ? Txt_MATCH_QUESTION_Answered :
|
||||
Txt_MATCH_QUESTION_Unanswered);
|
||||
HTM_TxtF (" %s",Answered ? Txt_MATCH_QUESTION_Answered :
|
||||
Txt_MATCH_QUESTION_Unanswered);
|
||||
HTM_NBSPTxt (Answered ? Txt_MATCH_QUESTION_Answered :
|
||||
Txt_MATCH_QUESTION_Unanswered);
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
||||
|
|
|
@ -1125,11 +1125,14 @@ void MchRes_ShowOneMchResult (void)
|
|||
HTM_TD_Begin ("class=\"LB DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
ID_WriteUsrIDs (UsrDat,NULL);
|
||||
HTM_TxtF (" %s",UsrDat->Surname1);
|
||||
HTM_SPTxt (UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
if (UsrDat->FrstName[0])
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
{
|
||||
HTM_Comma ();
|
||||
HTM_SPTxt (UsrDat->FrstName);
|
||||
}
|
||||
HTM_BR ();
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
|
||||
|
|
|
@ -381,7 +381,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
|
|||
The_GetSuffix ());
|
||||
Ico_PutIcon (Net_WebsAndSocialNetworksIcons[Web],Ico_BLACK,
|
||||
Net_WebsAndSocialNetworksTitle[Web],"ICOx16");
|
||||
HTM_TxtF (" %s",Net_WebsAndSocialNetworksTitle[Web]);
|
||||
HTM_NBSPTxt (Net_WebsAndSocialNetworksTitle[Web]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Unsigned (NumUsrs);
|
||||
|
|
|
@ -1778,8 +1778,8 @@ void Ntf_WriteNumberOfNewNtfs (void)
|
|||
"class=\"ICO16x16 NOTIF_ICO_%s\"",The_GetSuffix ());
|
||||
HTM_TxtF (" %u",NumNewNtfs);
|
||||
HTM_SPAN_Begin ("id=\"notif_new\"");
|
||||
HTM_TxtF (" %s",NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :
|
||||
Txt_NOTIF_new_PLURAL);
|
||||
HTM_NBSPTxt (NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :
|
||||
Txt_NOTIF_new_PLURAL);
|
||||
HTM_SPAN_End ();
|
||||
}
|
||||
|
||||
|
|
|
@ -2719,8 +2719,9 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *
|
|||
HTM_LI_Begin (NULL);
|
||||
HTM_Txt (Gbl.Usrs.Other.UsrDat.Surname1);
|
||||
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
|
||||
HTM_TxtF (" %s",Gbl.Usrs.Other.UsrDat.Surname2);
|
||||
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
|
||||
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname2);
|
||||
HTM_Comma ();
|
||||
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.FrstName);
|
||||
HTM_LI_End ();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -237,7 +237,7 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
|||
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'AnswerType');\"",
|
||||
AnswerTypes->All ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TxtF (" %s",Txt_All_types_of_answers);
|
||||
HTM_NBSPTxt (Txt_All_types_of_answers);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -262,14 +262,14 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
|||
}
|
||||
}
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
HTM_LABEL_Begin ("class=\"DAT_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_LABEL_Begin ("class=\"DAT_%s\"",The_GetSuffix ());
|
||||
HTM_INPUT_CHECKBOX ("AnswerType",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"%u\"%s onclick=\"checkParent(this,'AllAnsTypes');\"",
|
||||
"value=\"%u\"%s"
|
||||
" onclick=\"checkParent(this,'AllAnsTypes');\"",
|
||||
(unsigned) AnsType,
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TxtF (" %s",Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||
HTM_NBSPTxt (Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -1220,18 +1220,17 @@ void Qst_ListOneOrMoreQstsForSelectionForGame (struct Gam_Games *Games,
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Select all questions to add them to set/game *****************/
|
||||
/********* Checkbox to select all questions to add them to set/game **********/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Qst_PutCheckboxToSelectAllQuestions (void)
|
||||
{
|
||||
extern const char *Txt_All_questions;
|
||||
|
||||
/***** Checkbox to select all listed questions *****/
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
||||
HTM_INPUT_CHECKBOX ("AllQsts",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||
"value=\"Y\" onclick=\"togglecheckChildren(this,'QstCods');\"");
|
||||
HTM_TxtF (" %s",Txt_All_questions);
|
||||
HTM_NBSPTxt (Txt_All_questions);
|
||||
HTM_LABEL_End ();
|
||||
}
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Hie_Level_t DefaultScop
|
|||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_Search,
|
||||
Crs_PutIconToSelectMyCourses,NULL,
|
||||
Hie_PutIconToSelectMyHierarchy,NULL,
|
||||
Hlp_START_Search,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Begin form *****/
|
||||
|
|
|
@ -365,7 +365,8 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
|
|||
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_TxtF (" %s ",Txt_distributed_by);
|
||||
HTM_Txt (Txt_distributed_by);
|
||||
HTM_NBSP ();
|
||||
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
|
||||
"id=\"GroupedBy\" name=\"GroupedBy\""
|
||||
" class=\"INPUT_%s\"",
|
||||
|
@ -573,7 +574,8 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
|
|||
/***** Type of statistic *****/
|
||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
HTM_TxtF (" %s ",Txt_distributed_by);
|
||||
HTM_Txt (Txt_distributed_by);
|
||||
HTM_NBSP ();
|
||||
|
||||
if (Stats->ClicksGroupedBy < Sta_CLICKS_GBL_PER_DAY ||
|
||||
Stats->ClicksGroupedBy > Sta_CLICKS_GBL_PER_COURSE)
|
||||
|
|
|
@ -594,7 +594,8 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
|
|||
HidVis_GroupClass[Surveys->Svy.Status.HiddenOrVisible],
|
||||
The_GetSuffix ());
|
||||
HTM_TxtColonNBSP (Txt_Scope);
|
||||
HTM_TxtF ("%s %s",Txt_HIERARCHY_SINGUL_Abc[Surveys->Svy.Level],
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_HIERARCHY_SINGUL_Abc[Surveys->Svy.Level],
|
||||
Gbl.Hierarchy.Node[Surveys->Svy.Level].ShrtName);
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
@ -1846,7 +1847,9 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
"SvyCod",
|
||||
SvyCod) ? "" :
|
||||
" checked=\"checked\"");
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -2096,7 +2099,7 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Write group type name and group name */
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
HTM_TxtF ("%s %s",row[0],row[1]);
|
||||
|
||||
if (NumGrps >= 2)
|
||||
{
|
||||
|
@ -2109,8 +2112,8 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
|
|||
}
|
||||
}
|
||||
else
|
||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||
|
||||
HTM_DIV_End ();
|
||||
|
||||
|
@ -3030,7 +3033,7 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
|
|||
"class=\"LT\" style=\"width:%upx; height:20px;\"",BarWidth);
|
||||
|
||||
/***** Write the number of users *****/
|
||||
HTM_TxtF (" %s",Title);
|
||||
HTM_NBSPTxt (Title);
|
||||
|
||||
/***** Free string with the number of users *****/
|
||||
free (Title);
|
||||
|
|
|
@ -313,7 +313,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'ChkTag');\"",
|
||||
Tags->All ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TxtF (" %s",Txt_All_tags);
|
||||
HTM_NBSPTxt (Txt_All_tags);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -361,7 +361,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
|||
row[1],
|
||||
Checked ? " checked=\"checked\"" :
|
||||
"");
|
||||
HTM_TxtF (" %s",row[1]);
|
||||
HTM_NBSPTxt (row[1]);
|
||||
HTM_LABEL_End ();
|
||||
HTM_TD_End ();
|
||||
|
||||
|
|
|
@ -529,7 +529,7 @@ static void TstPrn_PutCheckBoxAllowTeachers (bool AllowTeachers)
|
|||
"value=\"Y\"%s",
|
||||
AllowTeachers ? " checked=\"checked\"" : // Teachers can see test exam
|
||||
"");
|
||||
HTM_TxtF (" %s",Txt_Allow_teachers_to_consult_this_test);
|
||||
HTM_NBSPTxt (Txt_Allow_teachers_to_consult_this_test);
|
||||
HTM_LABEL_End ();
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
|
@ -2260,9 +2260,9 @@ void TstPrn_ShowOnePrint (void)
|
|||
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
|
||||
HTM_TxtF (" %s",Gbl.Usrs.Other.UsrDat.Surname1);
|
||||
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname1);
|
||||
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
|
||||
HTM_TxtF (" %s",Gbl.Usrs.Other.UsrDat.Surname2);
|
||||
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname2);
|
||||
if (Gbl.Usrs.Other.UsrDat.FrstName[0])
|
||||
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
|
||||
HTM_BR ();
|
||||
|
|
|
@ -498,19 +498,19 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
|
|||
case TmlNot_INS_DOC_PUB_FILE:
|
||||
case TmlNot_INS_SHA_PUB_FILE:
|
||||
/* Write location (institution) in hierarchy */
|
||||
HTM_TxtF ("%s: %s",
|
||||
HTM_TxtF ("%s: %s",
|
||||
Txt_HIERARCHY_SINGUL_Abc[Hie_INS],Hie[Hie_INS].ShrtName);
|
||||
break;
|
||||
case TmlNot_CTR_DOC_PUB_FILE:
|
||||
case TmlNot_CTR_SHA_PUB_FILE:
|
||||
/* Write location (center) in hierarchy */
|
||||
HTM_TxtF ("%s: %s",
|
||||
HTM_TxtF ("%s: %s",
|
||||
Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],Hie[Hie_CTR].ShrtName);
|
||||
break;
|
||||
case TmlNot_DEG_DOC_PUB_FILE:
|
||||
case TmlNot_DEG_SHA_PUB_FILE:
|
||||
/* Write location (degree) in hierarchy */
|
||||
HTM_TxtF ("%s: %s",
|
||||
HTM_TxtF ("%s: %s",
|
||||
Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Hie[Hie_DEG].ShrtName);
|
||||
break;
|
||||
case TmlNot_CRS_DOC_PUB_FILE:
|
||||
|
@ -518,12 +518,12 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
|
|||
case TmlNot_CALL_FOR_EXAM:
|
||||
case TmlNot_NOTICE:
|
||||
/* Write location (course) in hierarchy */
|
||||
HTM_TxtF ("%s: %s",
|
||||
HTM_TxtF ("%s: %s",
|
||||
Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
|
||||
break;
|
||||
case TmlNot_FORUM_POST:
|
||||
/* Write forum name */
|
||||
HTM_TxtF ("%s: %s",Txt_Forum,ForumName);
|
||||
HTM_TxtF ("%s: %s",Txt_Forum,ForumName);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -692,7 +692,7 @@ static void TmlNot_PutFormGoToAction (const struct TmlNot_Note *Not,
|
|||
/* Icon and text */
|
||||
Ico_PutIcon (Tml_Icons[Not->Type],Ico_BLACK,
|
||||
Txt_TIMELINE_NOTE[Not->Type],"CONTEXT_ICOx16");
|
||||
HTM_TxtF (" %s",Txt_TIMELINE_NOTE[Not->Type]);
|
||||
HTM_NBSPTxt (Txt_TIMELINE_NOTE[Not->Type]);
|
||||
|
||||
/* End button */
|
||||
HTM_BUTTON_End ();
|
||||
|
|
|
@ -715,7 +715,7 @@ void Usr_WriteFirstNameBRSurnames (const struct Usr_Data *UsrDat)
|
|||
|
||||
/***** Write surname2 if exists *****/
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3671,7 +3671,7 @@ static void Set_FormToSelectUsrListType (void (*FuncPars) (void *Args),void *Arg
|
|||
"");
|
||||
Ico_PutIcon (Usr_IconsClassPhotoOrList[ListType],Ico_BLACK,
|
||||
Txt_USR_LIST_TYPES[ListType],"ICO20x20");
|
||||
HTM_TxtF (" %s",Txt_USR_LIST_TYPES[ListType]);
|
||||
HTM_NBSPTxt (Txt_USR_LIST_TYPES[ListType]);
|
||||
HTM_BUTTON_End ();
|
||||
|
||||
/***** End form *****/
|
||||
|
@ -4450,7 +4450,7 @@ void Usr_ListAllDataStds (void)
|
|||
if (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) // If current course tiene groups of este type
|
||||
{
|
||||
HTM_TH_Span_Begin (HTM_HEAD_LEFT,1,1,"BG_HIGHLIGHT");
|
||||
HTM_TxtF ("%s %s",
|
||||
HTM_TxtF ("%s %s",
|
||||
Txt_Group,
|
||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName);
|
||||
HTM_TH_End ();
|
||||
|
@ -6453,7 +6453,7 @@ void Usr_ShowTableCellWithUsrData (struct Usr_Data *UsrDat,unsigned NumRows)
|
|||
HTM_BR ();
|
||||
HTM_Txt (UsrDat->Surname1);
|
||||
if (UsrDat->Surname2[0])
|
||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
||||
HTM_SPTxt (UsrDat->Surname2);
|
||||
if (UsrDat->FrstName[0])
|
||||
{
|
||||
HTM_Comma ();
|
||||
|
|
|
@ -540,7 +540,9 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
|||
URL,FileName);
|
||||
HTM_IMG (CfG_URL_ICON_FILEXT_PUBLIC "32x32","zip32x32.gif",Txt_ZIP_file,
|
||||
"class=\"ICO40x40\"");
|
||||
HTM_TxtF (" %s ",FileName);
|
||||
HTM_NBSP ();
|
||||
HTM_Txt (FileName);
|
||||
HTM_NBSP ();
|
||||
Ico_PutIcon ("download.svg",Ico_BLACK,Txt_Download,"ICO40x40");
|
||||
HTM_A_End ();
|
||||
HTM_TD_End ();
|
||||
|
|
Loading…
Reference in New Issue