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 ();
|
HTM_NBSP ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HTM_NBSPTxt (const char *Txt)
|
||||||
|
{
|
||||||
|
HTM_NBSP ();
|
||||||
|
HTM_Txt (Txt);
|
||||||
|
}
|
||||||
|
|
||||||
void HTM_NBSP (void)
|
void HTM_NBSP (void)
|
||||||
{
|
{
|
||||||
HTM_Txt (" ");
|
HTM_Txt (" ");
|
||||||
|
|
|
@ -228,6 +228,7 @@ void HTM_Txt (const char *Txt);
|
||||||
void HTM_TxtColon (const char *Txt);
|
void HTM_TxtColon (const char *Txt);
|
||||||
void HTM_TxtSemicolon (const char *Txt);
|
void HTM_TxtSemicolon (const char *Txt);
|
||||||
void HTM_TxtColonNBSP (const char *Txt);
|
void HTM_TxtColonNBSP (const char *Txt);
|
||||||
|
void HTM_NBSPTxt (const char *Txt);
|
||||||
void HTM_NBSP (void);
|
void HTM_NBSP (void);
|
||||||
void HTM_Colon (void);
|
void HTM_Colon (void);
|
||||||
void HTM_Semicolon (void);
|
void HTM_Semicolon (void);
|
||||||
|
|
|
@ -326,7 +326,7 @@ static void MFU_PutIconAndText (Act_Action_t Action,
|
||||||
"class=\"ICO_%s_%s\"",
|
"class=\"ICO_%s_%s\"",
|
||||||
Ico_GetPreffix (Color[Gbl.Prefs.IconSet]),
|
Ico_GetPreffix (Color[Gbl.Prefs.IconSet]),
|
||||||
The_GetSuffix ());
|
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\"",
|
HTM_TD_Begin ("class=\"LT DAT_STRONG_%s %s\"",
|
||||||
The_GetSuffix (),
|
The_GetSuffix (),
|
||||||
The_GetColorRows ());
|
The_GetColorRows ());
|
||||||
HTM_TxtF ("%s: %s",Txt_ID,ID);
|
HTM_TxtColon (Txt_ID);
|
||||||
|
HTM_NBSPTxt (ID);
|
||||||
HTM_BR ();
|
HTM_BR ();
|
||||||
HTM_TxtColonNBSP (Txt_Name);
|
HTM_TxtColonNBSP (Txt_Name);
|
||||||
if (UsrDat->FullName[0])
|
if (UsrDat->FullName[0])
|
||||||
|
|
|
@ -1812,7 +1812,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
||||||
// TabPrf ******************************************************************
|
// TabPrf ******************************************************************
|
||||||
// Actions in menu:
|
// 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" },
|
[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" },
|
[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" },
|
[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" },
|
[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",
|
||||||
AsgCod) ? "" :
|
AsgCod) ? "" :
|
||||||
" checked=\"checked\"");
|
" checked=\"checked\"");
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
|
Txt_The_whole_course,
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
@ -1598,7 +1599,7 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Write group type name and group name */
|
/* 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)
|
if (NumGrps >= 2)
|
||||||
{
|
{
|
||||||
|
@ -1610,8 +1611,8 @@ static void Asg_GetAndWriteNamesOfGrpsAssociatedToAsg (struct Asg_Assignment *As
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
|
|
@ -1108,7 +1108,8 @@ static void Att_ShowLstGrpsToEditEvent (long AttCod)
|
||||||
"AttCod",
|
"AttCod",
|
||||||
AttCod) ? "" :
|
AttCod) ? "" :
|
||||||
" checked=\"checked\"");
|
" checked=\"checked\"");
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
|
Txt_The_whole_course,
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
@ -1314,7 +1315,7 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToEvent (struct Att_Event *Event
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Write group type name (row[0]) and group name (row[1]) */
|
/* 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]) */
|
/* Write the name of the room (row[2]) */
|
||||||
if (row[2]) // May be NULL because of LEFT JOIN
|
if (row[2]) // May be NULL because of LEFT JOIN
|
||||||
|
@ -1333,8 +1334,8 @@ static void Att_GetAndWriteNamesOfGrpsAssociatedToEvent (struct Att_Event *Event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("% %s",
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
|
|
||||||
/***** End container *****/
|
/***** End container *****/
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
@ -1755,7 +1756,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
||||||
The_GetColorRows ());
|
The_GetColorRows ());
|
||||||
HTM_Txt (UsrDat->Surname1);
|
HTM_Txt (UsrDat->Surname1);
|
||||||
if (UsrDat->Surname2[0])
|
if (UsrDat->Surname2[0])
|
||||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
HTM_SPTxt (UsrDat->Surname2);
|
||||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -2929,7 +2930,7 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
||||||
The_GetColorRows ());
|
The_GetColorRows ());
|
||||||
HTM_Txt (UsrDat->Surname1);
|
HTM_Txt (UsrDat->Surname1);
|
||||||
if (UsrDat->Surname2[0])
|
if (UsrDat->Surname2[0])
|
||||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
HTM_SPTxt (UsrDat->Surname2);
|
||||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -3108,7 +3109,7 @@ static void Att_ListAttEventsForAStd (struct Att_Events *Events,
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
HTM_Txt (UsrDat->Surname1);
|
HTM_Txt (UsrDat->Surname1);
|
||||||
if (UsrDat->Surname2[0])
|
if (UsrDat->Surname2[0])
|
||||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
HTM_SPTxt (UsrDat->Surname2);
|
||||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action
|
||||||
|
|
||||||
/***** Center logo and name *****/
|
/***** Center logo and name *****/
|
||||||
Lgo_DrawLogo (Hie_CTR,Ctr,IconClass);
|
Lgo_DrawLogo (Hie_CTR,Ctr,IconClass);
|
||||||
HTM_TxtF (" %s",Ctr->FullName);
|
HTM_NBSPTxt (Ctr->FullName);
|
||||||
|
|
||||||
/***** End link *****/
|
/***** End link *****/
|
||||||
HTM_BUTTON_End ();
|
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')
|
"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 CSS_FILE "swad23.58.1.css"
|
||||||
#define JS_FILE "swad23.53.6.js"
|
#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.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.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)
|
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 ();
|
HTM_STRONG_Begin ();
|
||||||
|
|
||||||
/* Room name and users */
|
/* Room name and users */
|
||||||
HTM_TxtF (" %s",RoomFullName);
|
HTM_NBSPTxt (RoomFullName);
|
||||||
if (NumUsrsInRoom > 1)
|
if (NumUsrsInRoom > 1)
|
||||||
HTM_TxtF (" [%d %s]",NumUsrsInRoom,Txt_connected_PLURAL);
|
HTM_TxtF (" [%d %s]",NumUsrsInRoom,Txt_connected_PLURAL);
|
||||||
else if (NumUsrsInRoom == 1)
|
else if (NumUsrsInRoom == 1)
|
||||||
|
|
|
@ -498,8 +498,6 @@ void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action
|
||||||
const char *ClassContainer,
|
const char *ClassContainer,
|
||||||
const char *ClassMap)
|
const char *ClassMap)
|
||||||
{
|
{
|
||||||
char CountryName[Cty_MAX_BYTES_NAME + 1];
|
|
||||||
|
|
||||||
/***** Begin form *****/
|
/***** Begin form *****/
|
||||||
Frm_BeginFormGoTo (Action);
|
Frm_BeginFormGoTo (Action);
|
||||||
ParCod_PutPar (ParCod_Cty,Cty->HieCod);
|
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);
|
Cty_DrawCountryMap (Cty,ClassMap);
|
||||||
|
|
||||||
/***** Write country name *****/
|
/***** Write country name *****/
|
||||||
Str_Copy (CountryName,Cty->FullName,sizeof (CountryName) - 1);
|
HTM_TxtF (" %s (%s)",Cty->FullName,Cty->ShrtName);
|
||||||
HTM_TxtF (" %s ",CountryName);
|
|
||||||
HTM_TxtF ("(%s)",Cty->ShrtName);
|
|
||||||
|
|
||||||
/***** End link *****/
|
/***** End link *****/
|
||||||
HTM_BUTTON_End ();
|
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 *****************************/
|
/**************************** 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_GetListCrssInCurrentDeg (void);
|
||||||
static void Crs_ListCourses (void);
|
static void Crs_ListCourses (void);
|
||||||
static void Crs_PutIconsListCourses (__attribute__((unused)) void *Args);
|
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_PutButtonToGoToCrs (void);
|
||||||
static void Crs_PutButtonToRegisterInCrs (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_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnAccepted);
|
||||||
|
|
||||||
static void Crs_EditingCourseConstructor (void);
|
static void Crs_EditingCourseConstructor (void);
|
||||||
|
@ -149,132 +138,6 @@ void Crs_ShowIntroduction (void)
|
||||||
Hlp_ShowHelpWhatWouldYouLikeToDo ();
|
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 **********************/
|
/********************* Get number of courses with users **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1754,71 +1617,6 @@ static void Crs_PutButtonToRegisterInCrs (void)
|
||||||
Frm_EndForm ();
|
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 **************************/
|
/************************** 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_ChangeCrsStatus (void);
|
||||||
void Crs_ContEditAfterChgCrs (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_GetAndWriteCrssOfAUsr (const struct Usr_Data *UsrDat,Rol_Role_t Role);
|
||||||
|
|
||||||
void Crs_ListCrssFound (MYSQL_RES **mysql_res,unsigned NumCrss);
|
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 *****/
|
/***** Degree logo and name *****/
|
||||||
Lgo_DrawLogo (Hie_DEG,Deg,IconClass);
|
Lgo_DrawLogo (Hie_DEG,Deg,IconClass);
|
||||||
HTM_TxtF (" %s",Deg->FullName);
|
HTM_NBSPTxt (Deg->FullName);
|
||||||
|
|
||||||
/***** End link *****/
|
/***** End link *****/
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
|
|
|
@ -1527,11 +1527,14 @@ void ExaRes_ShowExamResultUser (struct Usr_Data *UsrDat)
|
||||||
/***** User's data *****/
|
/***** User's data *****/
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
ID_WriteUsrIDs (UsrDat,NULL);
|
ID_WriteUsrIDs (UsrDat,NULL);
|
||||||
HTM_TxtF (" %s",UsrDat->Surname1);
|
HTM_NBSPTxt (UsrDat->Surname1);
|
||||||
if (UsrDat->Surname2[0])
|
if (UsrDat->Surname2[0])
|
||||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
HTM_SPTxt (UsrDat->Surname2);
|
||||||
if (UsrDat->FrstName[0])
|
if (UsrDat->FrstName[0])
|
||||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
{
|
||||||
|
HTM_Comma ();
|
||||||
|
HTM_SPTxt (UsrDat->FrstName);
|
||||||
|
}
|
||||||
HTM_BR ();
|
HTM_BR ();
|
||||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||||
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
|
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
|
||||||
|
|
|
@ -574,7 +574,7 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Write group type name (row[0]) and group name (row[1]) */
|
/* 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)
|
if (NumGrps >= 2)
|
||||||
{
|
{
|
||||||
|
@ -587,8 +587,8 @@ static void ExaSes_GetAndWriteNamesOfGrpsAssociatedToSession (const struct ExaSe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
@ -1016,7 +1016,8 @@ static void ExaSes_ShowLstGrpsToCreateSession (long SesCod)
|
||||||
"SesCod",
|
"SesCod",
|
||||||
SesCod) ? "" :
|
SesCod) ? "" :
|
||||||
" checked=\"checked\"");
|
" checked=\"checked\"");
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
|
Txt_The_whole_course,
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
|
@ -1825,7 +1825,7 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
HTM_TxtF (" %s",ForumName);
|
HTM_NBSPTxt (ForumName);
|
||||||
|
|
||||||
/***** Write total number of threads and posts in this forum *****/
|
/***** Write total number of threads and posts in this forum *****/
|
||||||
if (NumThrs)
|
if (NumThrs)
|
||||||
|
|
|
@ -169,7 +169,7 @@ void Grp_WriteNamesOfSelectedGrps (void)
|
||||||
{
|
{
|
||||||
GrpDat.GrpCod = GrpCod;
|
GrpDat.GrpCod = GrpCod;
|
||||||
Grp_GetGroupDataByCod (&GrpDat);
|
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)
|
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')\"" :
|
||||||
" onclick=\"togglecheckChildren(this,'GrpCods')\"") :
|
" onclick=\"togglecheckChildren(this,'GrpCods')\"") :
|
||||||
" disabled=\"disabled\"");
|
" disabled=\"disabled\"");
|
||||||
HTM_TxtF (" %s",Txt_All_groups);
|
HTM_NBSPTxt (Txt_All_groups);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
214
swad_hierarchy.c
214
swad_hierarchy.c
|
@ -43,6 +43,7 @@
|
||||||
#include "swad_form.h"
|
#include "swad_form.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
#include "swad_group_database.h"
|
#include "swad_group_database.h"
|
||||||
|
#include "swad_help.h"
|
||||||
#include "swad_hierarchy.h"
|
#include "swad_hierarchy.h"
|
||||||
#include "swad_hierarchy_database.h"
|
#include "swad_hierarchy_database.h"
|
||||||
#include "swad_hierarchy_type.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]);
|
int NumNodes[Hie_NUM_LEVELS]);
|
||||||
static void Hie_ShowHierarchyCell (const char *ClassTxt,int Num);
|
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 **********/
|
/********** List pending institutions, centers, degrees and courses **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1157,7 +1169,8 @@ static void Hie_GetAndShowHierarchyWithNodes (Hie_Level_t HavingNodesOfLevel)
|
||||||
HavingNodesOfLevel);// Grand child
|
HavingNodesOfLevel);// Grand child
|
||||||
|
|
||||||
/***** Write number of elements with courses *****/
|
/***** 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_Hyphen ();
|
||||||
HTM_TD_End ();
|
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,
|
unsigned Hie_GetNumUsrsWhoClaimToBelongTo (Hie_Level_t Level,
|
||||||
struct Hie_Node *Node);
|
struct Hie_Node *Node);
|
||||||
|
|
||||||
|
//--------------------------- My hierarchy ------------------------------------
|
||||||
|
void Hie_PutIconToSelectMyHierarchyInBreadcrumb (void);
|
||||||
|
void Hie_PutIconToSelectMyHierarchy (__attribute__((unused)) void *Args);
|
||||||
|
|
||||||
|
void Hie_ReqSelectOneNodeFromMyHierarchy (void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -163,9 +163,7 @@ void Hld_SeeAllHolidays (void)
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
HTM_TH_End ();
|
HTM_TH_End ();
|
||||||
}
|
}
|
||||||
HTM_TH_Begin (HTM_HEAD_LEFT);
|
HTM_TH (Txt_End_date,HTM_HEAD_LEFT);
|
||||||
HTM_TxtF (" %s ",Txt_End_date);
|
|
||||||
HTM_TH_End ();
|
|
||||||
HTM_TH (Txt_Holiday,HTM_HEAD_LEFT);
|
HTM_TH (Txt_Holiday,HTM_HEAD_LEFT);
|
||||||
|
|
||||||
HTM_TR_End ();
|
HTM_TR_End ();
|
||||||
|
@ -184,12 +182,10 @@ void Hld_SeeAllHolidays (void)
|
||||||
Dat_ConvDateToDateStr (&Holidays.Lst[NumHld].StartDate,StrDate);
|
Dat_ConvDateToDateStr (&Holidays.Lst[NumHld].StartDate,StrDate);
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_NBSP ();
|
|
||||||
HTM_Txt (StrDate);
|
HTM_Txt (StrDate);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_NBSP ();
|
|
||||||
switch (Holidays.Lst[NumHld].HldTyp)
|
switch (Holidays.Lst[NumHld].HldTyp)
|
||||||
{
|
{
|
||||||
case Hld_HOLIDAY:
|
case Hld_HOLIDAY:
|
||||||
|
@ -202,7 +198,7 @@ void Hld_SeeAllHolidays (void)
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"LM DAT_%s\"",The_GetSuffix ());
|
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_TD_End ();
|
||||||
|
|
||||||
HTM_TR_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 *****/
|
/***** Print icon and optional text *****/
|
||||||
HTM_DIV_Begin ("class=\"CONTEXT_OPT ICO_HIGHLIGHT\"");
|
HTM_DIV_Begin ("class=\"CONTEXT_OPT ICO_HIGHLIGHT\"");
|
||||||
Ico_PutIcon (Icon,Color,Text,"CONTEXT_ICOx16");
|
Ico_PutIcon (Icon,Color,Text,"CONTEXT_ICOx16");
|
||||||
HTM_TxtF (" %s",Text);
|
HTM_NBSPTxt (Text);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -244,7 +244,7 @@ void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action
|
||||||
|
|
||||||
/***** Institution logo and name *****/
|
/***** Institution logo and name *****/
|
||||||
Lgo_DrawLogo (Hie_INS,Ins,IconClass);
|
Lgo_DrawLogo (Hie_INS,Ins,IconClass);
|
||||||
HTM_TxtF (" %s",Ins->FullName);
|
HTM_NBSPTxt (Ins->FullName);
|
||||||
|
|
||||||
/***** End link *****/
|
/***** End link *****/
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
|
|
|
@ -1112,7 +1112,7 @@ static void Lay_WritePageTopHeading (void)
|
||||||
static void Lay_WriteBreadcrumb (void)
|
static void Lay_WriteBreadcrumb (void)
|
||||||
{
|
{
|
||||||
HTM_Txt ("<nav id=\"breadcrumb\">");
|
HTM_Txt ("<nav id=\"breadcrumb\">");
|
||||||
Crs_PutIconToSelectMyCoursesInBreadcrumb ();
|
Hie_PutIconToSelectMyHierarchyInBreadcrumb ();
|
||||||
Hie_WriteHierarchyInBreadcrumb ();
|
Hie_WriteHierarchyInBreadcrumb ();
|
||||||
Crs_WriteSelectorMyCoursesInBreadcrumb ();
|
Crs_WriteSelectorMyCoursesInBreadcrumb ();
|
||||||
HTM_Txt ("</nav>");
|
HTM_Txt ("</nav>");
|
||||||
|
@ -1303,7 +1303,7 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
|
||||||
/***** Text *****/
|
/***** Text *****/
|
||||||
if (Text)
|
if (Text)
|
||||||
if (Text[0])
|
if (Text[0])
|
||||||
HTM_TxtF (" %s",Text);
|
HTM_NBSPTxt (Text);
|
||||||
|
|
||||||
/***** End label *****/
|
/***** End label *****/
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
|
|
|
@ -106,7 +106,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
|
||||||
ActChgNumRowHeaCrs); // Course zone
|
ActChgNumRowHeaCrs); // Course zone
|
||||||
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
|
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
|
||||||
HTM_LABEL_Begin (NULL);
|
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);
|
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),"%u",Marks.Header);
|
||||||
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
|
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
|
||||||
HTM_SUBMIT_ON_CHANGE,
|
HTM_SUBMIT_ON_CHANGE,
|
||||||
|
@ -124,7 +125,8 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
|
||||||
ActChgNumRowFooCrs); // Course zone
|
ActChgNumRowFooCrs); // Course zone
|
||||||
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
|
Brw_PutImplicitParsFileBrowser (&Gbl.FileBrowser.FilFolLnk);
|
||||||
HTM_LABEL_Begin (NULL);
|
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);
|
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),"%u",Marks.Footer);
|
||||||
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
|
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,
|
||||||
HTM_SUBMIT_ON_CHANGE,
|
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);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Write group type name and group name */
|
/* 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)
|
if (NumGrps >= 2)
|
||||||
{
|
{
|
||||||
|
@ -716,8 +716,8 @@ static void Mch_GetAndWriteNamesOfGrpsAssociatedToMatch (const struct Gam_Games
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
@ -1270,7 +1270,8 @@ static void Mch_ShowLstGrpsToEditMatch (long MchCod)
|
||||||
"MchCod",
|
"MchCod",
|
||||||
MchCod) ? "" :
|
MchCod) ? "" :
|
||||||
" checked=\"checked\"");
|
" checked=\"checked\"");
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
|
Txt_The_whole_course,
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
@ -2613,7 +2614,7 @@ static void Mch_PutCheckboxResult (const struct Mch_Match *Match)
|
||||||
HTM_TxtF ("<i class=\"%s\"></i>",
|
HTM_TxtF ("<i class=\"%s\"></i>",
|
||||||
Match->Status.ShowQstResults ? "fas fa-toggle-on" :
|
Match->Status.ShowQstResults ? "fas fa-toggle-on" :
|
||||||
"fas fa-toggle-off");
|
"fas fa-toggle-off");
|
||||||
HTM_TxtF (" %s",Txt_View_results);
|
HTM_NBSPTxt (Txt_View_results);
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
|
@ -2650,7 +2651,7 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
|
||||||
" onmousedown=\"this.form.submit();return false;\"",
|
" onmousedown=\"this.form.submit();return false;\"",
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
HTM_TxtF ("<i class=\"%s\"></i>","fas fa-check-circle");
|
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 ();
|
HTM_BUTTON_End ();
|
||||||
|
|
||||||
/* End form */
|
/* End form */
|
||||||
|
@ -2666,8 +2667,8 @@ static void Mch_PutIfAnswered (const struct Mch_Match *Match,bool Answered)
|
||||||
"fas fa-exclamation-circle",
|
"fas fa-exclamation-circle",
|
||||||
Answered ? Txt_MATCH_QUESTION_Answered :
|
Answered ? Txt_MATCH_QUESTION_Answered :
|
||||||
Txt_MATCH_QUESTION_Unanswered);
|
Txt_MATCH_QUESTION_Unanswered);
|
||||||
HTM_TxtF (" %s",Answered ? Txt_MATCH_QUESTION_Answered :
|
HTM_NBSPTxt (Answered ? Txt_MATCH_QUESTION_Answered :
|
||||||
Txt_MATCH_QUESTION_Unanswered);
|
Txt_MATCH_QUESTION_Unanswered);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1125,11 +1125,14 @@ void MchRes_ShowOneMchResult (void)
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
ID_WriteUsrIDs (UsrDat,NULL);
|
ID_WriteUsrIDs (UsrDat,NULL);
|
||||||
HTM_TxtF (" %s",UsrDat->Surname1);
|
HTM_SPTxt (UsrDat->Surname1);
|
||||||
if (UsrDat->Surname2[0])
|
if (UsrDat->Surname2[0])
|
||||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
HTM_SPTxt (UsrDat->Surname2);
|
||||||
if (UsrDat->FrstName[0])
|
if (UsrDat->FrstName[0])
|
||||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
{
|
||||||
|
HTM_Comma ();
|
||||||
|
HTM_SPTxt (UsrDat->FrstName);
|
||||||
|
}
|
||||||
HTM_BR ();
|
HTM_BR ();
|
||||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||||
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
|
ClassPhoto[Gbl.Prefs.PhotoShape],Pho_ZOOM);
|
||||||
|
|
|
@ -381,7 +381,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
Ico_PutIcon (Net_WebsAndSocialNetworksIcons[Web],Ico_BLACK,
|
Ico_PutIcon (Net_WebsAndSocialNetworksIcons[Web],Ico_BLACK,
|
||||||
Net_WebsAndSocialNetworksTitle[Web],"ICOx16");
|
Net_WebsAndSocialNetworksTitle[Web],"ICOx16");
|
||||||
HTM_TxtF (" %s",Net_WebsAndSocialNetworksTitle[Web]);
|
HTM_NBSPTxt (Net_WebsAndSocialNetworksTitle[Web]);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
HTM_TD_Unsigned (NumUsrs);
|
HTM_TD_Unsigned (NumUsrs);
|
||||||
|
|
|
@ -1778,8 +1778,8 @@ void Ntf_WriteNumberOfNewNtfs (void)
|
||||||
"class=\"ICO16x16 NOTIF_ICO_%s\"",The_GetSuffix ());
|
"class=\"ICO16x16 NOTIF_ICO_%s\"",The_GetSuffix ());
|
||||||
HTM_TxtF (" %u",NumNewNtfs);
|
HTM_TxtF (" %u",NumNewNtfs);
|
||||||
HTM_SPAN_Begin ("id=\"notif_new\"");
|
HTM_SPAN_Begin ("id=\"notif_new\"");
|
||||||
HTM_TxtF (" %s",NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :
|
HTM_NBSPTxt (NumNewNtfs == 1 ? Txt_NOTIF_new_SINGULAR :
|
||||||
Txt_NOTIF_new_PLURAL);
|
Txt_NOTIF_new_PLURAL);
|
||||||
HTM_SPAN_End ();
|
HTM_SPAN_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2719,8 +2719,9 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *
|
||||||
HTM_LI_Begin (NULL);
|
HTM_LI_Begin (NULL);
|
||||||
HTM_Txt (Gbl.Usrs.Other.UsrDat.Surname1);
|
HTM_Txt (Gbl.Usrs.Other.UsrDat.Surname1);
|
||||||
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
|
if (Gbl.Usrs.Other.UsrDat.Surname2[0])
|
||||||
HTM_TxtF (" %s",Gbl.Usrs.Other.UsrDat.Surname2);
|
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.Surname2);
|
||||||
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
|
HTM_Comma ();
|
||||||
|
HTM_SPTxt (Gbl.Usrs.Other.UsrDat.FrstName);
|
||||||
HTM_LI_End ();
|
HTM_LI_End ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -237,7 +237,7 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
||||||
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'AnswerType');\"",
|
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'AnswerType');\"",
|
||||||
AnswerTypes->All ? " checked=\"checked\"" :
|
AnswerTypes->All ? " checked=\"checked\"" :
|
||||||
"");
|
"");
|
||||||
HTM_TxtF (" %s",Txt_All_types_of_answers);
|
HTM_NBSPTxt (Txt_All_types_of_answers);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -262,14 +262,14 @@ void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HTM_TD_Begin ("class=\"LM\"");
|
HTM_TD_Begin ("class=\"LM\"");
|
||||||
HTM_LABEL_Begin ("class=\"DAT_%s\"",
|
HTM_LABEL_Begin ("class=\"DAT_%s\"",The_GetSuffix ());
|
||||||
The_GetSuffix ());
|
|
||||||
HTM_INPUT_CHECKBOX ("AnswerType",HTM_DONT_SUBMIT_ON_CHANGE,
|
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,
|
(unsigned) AnsType,
|
||||||
Checked ? " checked=\"checked\"" :
|
Checked ? " checked=\"checked\"" :
|
||||||
"");
|
"");
|
||||||
HTM_TxtF (" %s",Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
HTM_NBSPTxt (Txt_TST_STR_ANSWER_TYPES[AnsType]);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_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)
|
void Qst_PutCheckboxToSelectAllQuestions (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_All_questions;
|
extern const char *Txt_All_questions;
|
||||||
|
|
||||||
/***** Checkbox to select all listed questions *****/
|
|
||||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",The_GetSuffix ());
|
||||||
HTM_INPUT_CHECKBOX ("AllQsts",HTM_DONT_SUBMIT_ON_CHANGE,
|
HTM_INPUT_CHECKBOX ("AllQsts",HTM_DONT_SUBMIT_ON_CHANGE,
|
||||||
"value=\"Y\" onclick=\"togglecheckChildren(this,'QstCods');\"");
|
"value=\"Y\" onclick=\"togglecheckChildren(this,'QstCods');\"");
|
||||||
HTM_TxtF (" %s",Txt_All_questions);
|
HTM_NBSPTxt (Txt_All_questions);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,7 @@ static void Sch_PutFormToSearchWithWhatToSearchAndScope (Hie_Level_t DefaultScop
|
||||||
|
|
||||||
/***** Begin box *****/
|
/***** Begin box *****/
|
||||||
Box_BoxBegin (NULL,Txt_Search,
|
Box_BoxBegin (NULL,Txt_Search,
|
||||||
Crs_PutIconToSelectMyCourses,NULL,
|
Hie_PutIconToSelectMyHierarchy,NULL,
|
||||||
Hlp_START_Search,Box_NOT_CLOSABLE);
|
Hlp_START_Search,Box_NOT_CLOSABLE);
|
||||||
|
|
||||||
/***** Begin form *****/
|
/***** Begin form *****/
|
||||||
|
|
|
@ -365,7 +365,8 @@ static void Sta_PutFormCrsHits (struct Sta_Stats *Stats)
|
||||||
|
|
||||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
HTM_TxtF (" %s ",Txt_distributed_by);
|
HTM_Txt (Txt_distributed_by);
|
||||||
|
HTM_NBSP ();
|
||||||
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
|
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
|
||||||
"id=\"GroupedBy\" name=\"GroupedBy\""
|
"id=\"GroupedBy\" name=\"GroupedBy\""
|
||||||
" class=\"INPUT_%s\"",
|
" class=\"INPUT_%s\"",
|
||||||
|
@ -573,7 +574,8 @@ static void Sta_PutFormGblHits (struct Sta_Stats *Stats)
|
||||||
/***** Type of statistic *****/
|
/***** Type of statistic *****/
|
||||||
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
HTM_LABEL_Begin ("class=\"FORM_IN_%s\"",
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
HTM_TxtF (" %s ",Txt_distributed_by);
|
HTM_Txt (Txt_distributed_by);
|
||||||
|
HTM_NBSP ();
|
||||||
|
|
||||||
if (Stats->ClicksGroupedBy < Sta_CLICKS_GBL_PER_DAY ||
|
if (Stats->ClicksGroupedBy < Sta_CLICKS_GBL_PER_DAY ||
|
||||||
Stats->ClicksGroupedBy > Sta_CLICKS_GBL_PER_COURSE)
|
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],
|
HidVis_GroupClass[Surveys->Svy.Status.HiddenOrVisible],
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
HTM_TxtColonNBSP (Txt_Scope);
|
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);
|
Gbl.Hierarchy.Node[Surveys->Svy.Level].ShrtName);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
@ -1846,7 +1847,9 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
||||||
"SvyCod",
|
"SvyCod",
|
||||||
SvyCod) ? "" :
|
SvyCod) ? "" :
|
||||||
" checked=\"checked\"");
|
" 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_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -2096,7 +2099,7 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Write group type name and group name */
|
/* 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)
|
if (NumGrps >= 2)
|
||||||
{
|
{
|
||||||
|
@ -2109,8 +2112,8 @@ static void Svy_GetAndWriteNamesOfGrpsAssociatedToSvy (struct Svy_Survey *Svy)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
HTM_TxtF ("%s %s",Txt_The_whole_course,
|
HTM_TxtF ("%s %s",
|
||||||
Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
Txt_The_whole_course,Gbl.Hierarchy.Node[Hie_CRS].ShrtName);
|
||||||
|
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
@ -3030,7 +3033,7 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
|
||||||
"class=\"LT\" style=\"width:%upx; height:20px;\"",BarWidth);
|
"class=\"LT\" style=\"width:%upx; height:20px;\"",BarWidth);
|
||||||
|
|
||||||
/***** Write the number of users *****/
|
/***** Write the number of users *****/
|
||||||
HTM_TxtF (" %s",Title);
|
HTM_NBSPTxt (Title);
|
||||||
|
|
||||||
/***** Free string with the number of users *****/
|
/***** Free string with the number of users *****/
|
||||||
free (Title);
|
free (Title);
|
||||||
|
|
|
@ -313,7 +313,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
||||||
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'ChkTag');\"",
|
"value=\"Y\"%s onclick=\"togglecheckChildren(this,'ChkTag');\"",
|
||||||
Tags->All ? " checked=\"checked\"" :
|
Tags->All ? " checked=\"checked\"" :
|
||||||
"");
|
"");
|
||||||
HTM_TxtF (" %s",Txt_All_tags);
|
HTM_NBSPTxt (Txt_All_tags);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -361,7 +361,7 @@ void Tag_ShowFormSelTags (const struct Tag_Tags *Tags,
|
||||||
row[1],
|
row[1],
|
||||||
Checked ? " checked=\"checked\"" :
|
Checked ? " checked=\"checked\"" :
|
||||||
"");
|
"");
|
||||||
HTM_TxtF (" %s",row[1]);
|
HTM_NBSPTxt (row[1]);
|
||||||
HTM_LABEL_End ();
|
HTM_LABEL_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
|
|
@ -529,7 +529,7 @@ static void TstPrn_PutCheckBoxAllowTeachers (bool AllowTeachers)
|
||||||
"value=\"Y\"%s",
|
"value=\"Y\"%s",
|
||||||
AllowTeachers ? " checked=\"checked\"" : // Teachers can see test exam
|
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_LABEL_End ();
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
@ -2260,9 +2260,9 @@ void TstPrn_ShowOnePrint (void)
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,NULL);
|
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])
|
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])
|
if (Gbl.Usrs.Other.UsrDat.FrstName[0])
|
||||||
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
|
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
|
||||||
HTM_BR ();
|
HTM_BR ();
|
||||||
|
|
|
@ -498,19 +498,19 @@ static void TmlNot_WriteLocationInHierarchy (const struct TmlNot_Note *Not,
|
||||||
case TmlNot_INS_DOC_PUB_FILE:
|
case TmlNot_INS_DOC_PUB_FILE:
|
||||||
case TmlNot_INS_SHA_PUB_FILE:
|
case TmlNot_INS_SHA_PUB_FILE:
|
||||||
/* Write location (institution) in hierarchy */
|
/* Write location (institution) in hierarchy */
|
||||||
HTM_TxtF ("%s: %s",
|
HTM_TxtF ("%s: %s",
|
||||||
Txt_HIERARCHY_SINGUL_Abc[Hie_INS],Hie[Hie_INS].ShrtName);
|
Txt_HIERARCHY_SINGUL_Abc[Hie_INS],Hie[Hie_INS].ShrtName);
|
||||||
break;
|
break;
|
||||||
case TmlNot_CTR_DOC_PUB_FILE:
|
case TmlNot_CTR_DOC_PUB_FILE:
|
||||||
case TmlNot_CTR_SHA_PUB_FILE:
|
case TmlNot_CTR_SHA_PUB_FILE:
|
||||||
/* Write location (center) in hierarchy */
|
/* Write location (center) in hierarchy */
|
||||||
HTM_TxtF ("%s: %s",
|
HTM_TxtF ("%s: %s",
|
||||||
Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],Hie[Hie_CTR].ShrtName);
|
Txt_HIERARCHY_SINGUL_Abc[Hie_CTR],Hie[Hie_CTR].ShrtName);
|
||||||
break;
|
break;
|
||||||
case TmlNot_DEG_DOC_PUB_FILE:
|
case TmlNot_DEG_DOC_PUB_FILE:
|
||||||
case TmlNot_DEG_SHA_PUB_FILE:
|
case TmlNot_DEG_SHA_PUB_FILE:
|
||||||
/* Write location (degree) in hierarchy */
|
/* Write location (degree) in hierarchy */
|
||||||
HTM_TxtF ("%s: %s",
|
HTM_TxtF ("%s: %s",
|
||||||
Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Hie[Hie_DEG].ShrtName);
|
Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Hie[Hie_DEG].ShrtName);
|
||||||
break;
|
break;
|
||||||
case TmlNot_CRS_DOC_PUB_FILE:
|
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_CALL_FOR_EXAM:
|
||||||
case TmlNot_NOTICE:
|
case TmlNot_NOTICE:
|
||||||
/* Write location (course) in hierarchy */
|
/* Write location (course) in hierarchy */
|
||||||
HTM_TxtF ("%s: %s",
|
HTM_TxtF ("%s: %s",
|
||||||
Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
|
Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Hie[Hie_CRS].ShrtName);
|
||||||
break;
|
break;
|
||||||
case TmlNot_FORUM_POST:
|
case TmlNot_FORUM_POST:
|
||||||
/* Write forum name */
|
/* Write forum name */
|
||||||
HTM_TxtF ("%s: %s",Txt_Forum,ForumName);
|
HTM_TxtF ("%s: %s",Txt_Forum,ForumName);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -692,7 +692,7 @@ static void TmlNot_PutFormGoToAction (const struct TmlNot_Note *Not,
|
||||||
/* Icon and text */
|
/* Icon and text */
|
||||||
Ico_PutIcon (Tml_Icons[Not->Type],Ico_BLACK,
|
Ico_PutIcon (Tml_Icons[Not->Type],Ico_BLACK,
|
||||||
Txt_TIMELINE_NOTE[Not->Type],"CONTEXT_ICOx16");
|
Txt_TIMELINE_NOTE[Not->Type],"CONTEXT_ICOx16");
|
||||||
HTM_TxtF (" %s",Txt_TIMELINE_NOTE[Not->Type]);
|
HTM_NBSPTxt (Txt_TIMELINE_NOTE[Not->Type]);
|
||||||
|
|
||||||
/* End button */
|
/* End button */
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
|
|
|
@ -715,7 +715,7 @@ void Usr_WriteFirstNameBRSurnames (const struct Usr_Data *UsrDat)
|
||||||
|
|
||||||
/***** Write surname2 if exists *****/
|
/***** Write surname2 if exists *****/
|
||||||
if (UsrDat->Surname2[0])
|
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,
|
Ico_PutIcon (Usr_IconsClassPhotoOrList[ListType],Ico_BLACK,
|
||||||
Txt_USR_LIST_TYPES[ListType],"ICO20x20");
|
Txt_USR_LIST_TYPES[ListType],"ICO20x20");
|
||||||
HTM_TxtF (" %s",Txt_USR_LIST_TYPES[ListType]);
|
HTM_NBSPTxt (Txt_USR_LIST_TYPES[ListType]);
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
|
|
||||||
/***** End form *****/
|
/***** 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
|
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_TH_Span_Begin (HTM_HEAD_LEFT,1,1,"BG_HIGHLIGHT");
|
||||||
HTM_TxtF ("%s %s",
|
HTM_TxtF ("%s %s",
|
||||||
Txt_Group,
|
Txt_Group,
|
||||||
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName);
|
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName);
|
||||||
HTM_TH_End ();
|
HTM_TH_End ();
|
||||||
|
@ -6453,7 +6453,7 @@ void Usr_ShowTableCellWithUsrData (struct Usr_Data *UsrDat,unsigned NumRows)
|
||||||
HTM_BR ();
|
HTM_BR ();
|
||||||
HTM_Txt (UsrDat->Surname1);
|
HTM_Txt (UsrDat->Surname1);
|
||||||
if (UsrDat->Surname2[0])
|
if (UsrDat->Surname2[0])
|
||||||
HTM_TxtF (" %s",UsrDat->Surname2);
|
HTM_SPTxt (UsrDat->Surname2);
|
||||||
if (UsrDat->FrstName[0])
|
if (UsrDat->FrstName[0])
|
||||||
{
|
{
|
||||||
HTM_Comma ();
|
HTM_Comma ();
|
||||||
|
|
|
@ -540,7 +540,9 @@ static void ZIP_ShowLinkToDownloadZIP (const char *FileName,const char *URL,
|
||||||
URL,FileName);
|
URL,FileName);
|
||||||
HTM_IMG (CfG_URL_ICON_FILEXT_PUBLIC "32x32","zip32x32.gif",Txt_ZIP_file,
|
HTM_IMG (CfG_URL_ICON_FILEXT_PUBLIC "32x32","zip32x32.gif",Txt_ZIP_file,
|
||||||
"class=\"ICO40x40\"");
|
"class=\"ICO40x40\"");
|
||||||
HTM_TxtF (" %s ",FileName);
|
HTM_NBSP ();
|
||||||
|
HTM_Txt (FileName);
|
||||||
|
HTM_NBSP ();
|
||||||
Ico_PutIcon ("download.svg",Ico_BLACK,Txt_Download,"ICO40x40");
|
Ico_PutIcon ("download.svg",Ico_BLACK,Txt_Download,"ICO40x40");
|
||||||
HTM_A_End ();
|
HTM_A_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
Loading…
Reference in New Issue