mirror of https://github.com/acanas/swad-core.git
Version 23.50: Nov 28, 2023 Code refactoring in hierarchy.
This commit is contained in:
parent
3039405c8d
commit
33cd1e8bfe
|
@ -9258,16 +9258,21 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
extern const char *Txt_Folder;
|
||||
extern const char *Txt_Link;
|
||||
struct Brw_FileMetadata FileMetadata;
|
||||
struct Hie_Node Hie[Hie_NUM_LEVELS];
|
||||
/*
|
||||
long InsCod;
|
||||
long CtrCod;
|
||||
long DegCod;
|
||||
long CrsCod;
|
||||
*/
|
||||
long GrpCod;
|
||||
Act_Action_t Action;
|
||||
/*
|
||||
const char *InsShortName;
|
||||
const char *CtrShortName;
|
||||
const char *DegShortName;
|
||||
const char *CrsShortName;
|
||||
*/
|
||||
const char *BgColor;
|
||||
const char *Title;
|
||||
char FileNameToShow[NAME_MAX + 1];
|
||||
|
@ -9291,28 +9296,28 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
if (!Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingMetadata (&FileMetadata))
|
||||
{
|
||||
/***** Get institution code (row[2]) *****/
|
||||
InsCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||
InsShortName = row[3];
|
||||
Hie[Hie_INS].HieCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||
Str_Copy (Hie[Hie_INS].ShrtName,row[3],sizeof (Hie[Hie_INS].ShrtName) - 1);
|
||||
|
||||
/***** Get center code (row[4]) *****/
|
||||
CtrCod = Str_ConvertStrCodToLongCod (row[4]);
|
||||
CtrShortName = row[5];
|
||||
Hie[Hie_CTR].HieCod = Str_ConvertStrCodToLongCod (row[4]);
|
||||
Str_Copy (Hie[Hie_CTR].ShrtName,row[5],sizeof (Hie[Hie_CTR].ShrtName) - 1);
|
||||
|
||||
/***** Get degree code (row[6]) *****/
|
||||
DegCod = Str_ConvertStrCodToLongCod (row[6]);
|
||||
DegShortName = row[7];
|
||||
Hie[Hie_DEG].HieCod = Str_ConvertStrCodToLongCod (row[6]);
|
||||
Str_Copy (Hie[Hie_DEG].ShrtName,row[7],sizeof (Hie[Hie_DEG].ShrtName) - 1);
|
||||
|
||||
/***** Get course code (row[8]) *****/
|
||||
CrsCod = Str_ConvertStrCodToLongCod (row[8]);
|
||||
CrsShortName = row[9];
|
||||
Hie[Hie_CRS].HieCod = Str_ConvertStrCodToLongCod (row[8]);
|
||||
Str_Copy (Hie[Hie_CRS].ShrtName,row[9],sizeof (Hie[Hie_CRS].ShrtName) - 1);
|
||||
|
||||
/***** Get group code (row[8]) *****/
|
||||
GrpCod = Str_ConvertStrCodToLongCod (row[10]);
|
||||
|
||||
/***** Set row color *****/
|
||||
BgColor = (CrsCod > 0 &&
|
||||
CrsCod == Gbl.Hierarchy.Node[Hie_CRS].HieCod) ? "BG_HIGHLIGHT" :
|
||||
The_GetColorRows ();
|
||||
BgColor = (Hie[Hie_CRS].HieCod > 0 &&
|
||||
Hie[Hie_CRS].HieCod == Gbl.Hierarchy.Node[Hie_CRS].HieCod) ? "BG_HIGHLIGHT" :
|
||||
The_GetColorRows ();
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
|
@ -9325,16 +9330,15 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
/***** Write institution logo, institution short name *****/
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
if (InsCod > 0)
|
||||
if (Hie[Hie_INS].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (ActSeeInsInf);
|
||||
ParCod_PutPar (ParCod_Ins,InsCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (InsShortName),
|
||||
ParCod_PutPar (ParCod_Ins,Hie[Hie_INS].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[Hie_INS].ShrtName),
|
||||
"class=\"LT BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
Lgo_DrawLogo (Hie_INS,InsCod,InsShortName,
|
||||
"ICO20x20","LT BT_LINK");
|
||||
HTM_TxtF (" %s",InsShortName);
|
||||
Lgo_DrawLogo (Hie_INS,&Hie[Hie_INS],"LT BT_LINK ICO20x20");
|
||||
HTM_TxtF (" %s",Hie[Hie_INS].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -9343,16 +9347,15 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
/***** Write center logo, center short name *****/
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
if (CtrCod > 0)
|
||||
if (Hie[Hie_CTR].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (ActSeeCtrInf);
|
||||
ParCod_PutPar (ParCod_Ctr,CtrCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (CtrShortName),
|
||||
ParCod_PutPar (ParCod_Ctr,Hie[Hie_CTR].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[Hie_CTR].ShrtName),
|
||||
"class=\"LT BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
Lgo_DrawLogo (Hie_CTR,CtrCod,CtrShortName,
|
||||
"ICO20x20","LT");
|
||||
HTM_TxtF (" %s",CtrShortName);
|
||||
Lgo_DrawLogo (Hie_CTR,&Hie[Hie_CTR],"LT ICO20x20");
|
||||
HTM_TxtF (" %s",Hie[Hie_CTR].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -9361,16 +9364,15 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
/***** Write degree logo, degree short name *****/
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
if (DegCod > 0)
|
||||
if (Hie[Hie_DEG].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (ActSeeDegInf);
|
||||
ParCod_PutPar (ParCod_Deg,DegCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (DegShortName),
|
||||
ParCod_PutPar (ParCod_Deg,Hie[Hie_DEG].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[Hie_DEG].ShrtName),
|
||||
"class=\"LT BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
Lgo_DrawLogo (Hie_DEG,DegCod,DegShortName,
|
||||
"ICO20x20","LT");
|
||||
HTM_TxtF (" %s",DegShortName);
|
||||
Lgo_DrawLogo (Hie_DEG,&Hie[Hie_DEG],"LT ICO20x20");
|
||||
HTM_TxtF (" %s",Hie[Hie_DEG].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -9379,14 +9381,14 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
/***** Write course short name *****/
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
if (CrsCod > 0)
|
||||
if (Hie[Hie_CRS].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (ActSeeCrsInf);
|
||||
ParCod_PutPar (ParCod_Crs,CrsCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (CrsShortName),
|
||||
ParCod_PutPar (ParCod_Crs,Hie[Hie_CRS].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[Hie_CRS].ShrtName),
|
||||
"class=\"LT BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
HTM_Txt (CrsShortName);
|
||||
HTM_Txt (Hie[Hie_CRS].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
@ -9454,27 +9456,27 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
|||
/* Begin form */
|
||||
Action = Brw_ActReqDatFile[Brw_FileBrowserForFoundDocs[FileMetadata.FileBrowser]];
|
||||
|
||||
if (CrsCod > 0)
|
||||
if (Hie[Hie_CRS].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (Action);
|
||||
ParCod_PutPar (ParCod_Crs,CrsCod); // Go to course
|
||||
ParCod_PutPar (ParCod_Crs,Hie[Hie_CRS].HieCod); // Go to course
|
||||
if (GrpCod > 0)
|
||||
ParCod_PutPar (ParCod_Grp,GrpCod);
|
||||
}
|
||||
else if (DegCod > 0)
|
||||
else if (Hie[Hie_DEG].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (Action);
|
||||
ParCod_PutPar (ParCod_Deg,DegCod); // Go to degree
|
||||
ParCod_PutPar (ParCod_Deg,Hie[Hie_DEG].HieCod); // Go to degree
|
||||
}
|
||||
else if (CtrCod > 0)
|
||||
else if (Hie[Hie_CTR].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (Action);
|
||||
ParCod_PutPar (ParCod_Ctr,CtrCod); // Go to center
|
||||
ParCod_PutPar (ParCod_Ctr,Hie[Hie_CTR].HieCod); // Go to center
|
||||
}
|
||||
else if (InsCod > 0)
|
||||
else if (Hie[Hie_INS].HieCod > 0)
|
||||
{
|
||||
Frm_BeginFormGoTo (Action);
|
||||
ParCod_PutPar (ParCod_Ins,InsCod); // Go to institution
|
||||
ParCod_PutPar (ParCod_Ins,Hie[Hie_INS].HieCod); // Go to institution
|
||||
}
|
||||
else
|
||||
Frm_BeginForm (Action);
|
||||
|
|
|
@ -952,10 +952,7 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
|
|||
if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
|
||||
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"EXAM_TIT_%s\"",
|
||||
Gbl.Hierarchy.Node[Hie_INS].WWW,The_GetSuffix ());
|
||||
Lgo_DrawLogo (Hie_INS,
|
||||
Gbl.Hierarchy.Node[Hie_INS].HieCod,
|
||||
Gbl.Hierarchy.Node[Hie_INS].FullName,
|
||||
"ICO64x64",NULL);
|
||||
Lgo_DrawLogo (Hie_INS,&Gbl.Hierarchy.Node[Hie_INS],"ICO64x64");
|
||||
HTM_BR ();
|
||||
HTM_Txt (Gbl.Hierarchy.Node[Hie_INS].FullName);
|
||||
if (TypeViewCallForExam == Cfe_NORMAL_VIEW)
|
||||
|
|
|
@ -158,7 +158,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
|
|||
|
||||
HTM_TD_Begin ("class=\"LM DAT_%s NOWRAP %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeDeg,"CM");
|
||||
Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeDeg,"CM ICO16x16");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of pending degrees (row[1]) */
|
||||
|
@ -185,7 +185,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
|
|||
/*****************************************************************************/
|
||||
|
||||
void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action,
|
||||
const char *ClassLogo)
|
||||
const char *IconClass)
|
||||
{
|
||||
/***** Begin form *****/
|
||||
Frm_BeginFormGoTo (Action);
|
||||
|
@ -197,7 +197,7 @@ void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action
|
|||
Str_FreeGoToTitle ();
|
||||
|
||||
/***** Center logo and name *****/
|
||||
Lgo_DrawLogo (Hie_CTR,Ctr->HieCod,Ctr->ShrtName,"ICO16x16",ClassLogo);
|
||||
Lgo_DrawLogo (Hie_CTR,Ctr,IconClass);
|
||||
HTM_TxtF (" %s",Ctr->FullName);
|
||||
|
||||
/***** End link *****/
|
||||
|
@ -342,7 +342,7 @@ static void Ctr_ListOneCenterForSeeing (struct Hie_Node *Ctr,unsigned NumCtr)
|
|||
/***** Center logo and name *****/
|
||||
HTM_TD_Begin ("class=\"LM %s_%s %s\"",
|
||||
TxtClassStrong,The_GetSuffix (),BgColor);
|
||||
Ctr_DrawCenterLogoAndNameWithLink (Ctr,ActSeeDeg,"CM");
|
||||
Ctr_DrawCenterLogoAndNameWithLink (Ctr,ActSeeDeg,"CM ICO16x16");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of users who claim to belong to this center *****/
|
||||
|
@ -537,40 +537,40 @@ void Ctr_GetFullListOfCenters (long InsCod,Hie_Order_t SelectedOrder)
|
|||
/************************ Get data of center by code *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Ctr_GetCenterDataByCod (struct Hie_Node *Ctr)
|
||||
bool Ctr_GetCenterDataByCod (struct Hie_Node *Node)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
bool CtrFound = false;
|
||||
bool Found = false;
|
||||
|
||||
/***** Clear data *****/
|
||||
Ctr->PrtCod = -1L;
|
||||
Ctr->Specific.PlcCod = -1L;
|
||||
Ctr->Status = (Hie_Status_t) 0;
|
||||
Ctr->RequesterUsrCod = -1L;
|
||||
Ctr->ShrtName[0] = '\0';
|
||||
Ctr->FullName[0] = '\0';
|
||||
Ctr->WWW[0] = '\0';
|
||||
Ctr->NumUsrsWhoClaimToBelong.Valid = false;
|
||||
Node->PrtCod = -1L;
|
||||
Node->Specific.PlcCod = -1L;
|
||||
Node->Status = (Hie_Status_t) 0;
|
||||
Node->RequesterUsrCod = -1L;
|
||||
Node->ShrtName[0] = '\0';
|
||||
Node->FullName[0] = '\0';
|
||||
Node->WWW[0] = '\0';
|
||||
Node->NumUsrsWhoClaimToBelong.Valid = false;
|
||||
|
||||
/***** Check if center code is correct *****/
|
||||
if (Ctr->HieCod > 0)
|
||||
if (Node->HieCod > 0)
|
||||
{
|
||||
/***** Get data of a center from database *****/
|
||||
if (Ctr_DB_GetCenterDataByCod (&mysql_res,Ctr->HieCod)) // Center found...
|
||||
if (Ctr_DB_GetCenterDataByCod (&mysql_res,Node->HieCod)) // Center found...
|
||||
{
|
||||
/* Get center data */
|
||||
Ctr_GetCenterDataFromRow (mysql_res,Ctr,
|
||||
Ctr_GetCenterDataFromRow (mysql_res,Node,
|
||||
false); // Don't get number of users who claim to belong to this center
|
||||
|
||||
/* Set return value */
|
||||
CtrFound = true;
|
||||
Found = true;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
return CtrFound;
|
||||
return Found;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -791,7 +791,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
|
|||
|
||||
/* Center logo */
|
||||
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr->FullName);
|
||||
Lgo_DrawLogo (Hie_CTR,Ctr->HieCod,Ctr->ShrtName,"ICO20x20",NULL);
|
||||
Lgo_DrawLogo (Hie_CTR,Ctr,"ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Place */
|
||||
|
@ -1220,6 +1220,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places)
|
|||
{
|
||||
extern const char *Txt_Another_place;
|
||||
Act_Action_t NextAction = ActUnk;
|
||||
struct Hie_Node Ctr;
|
||||
unsigned NumPlc;
|
||||
const struct Plc_Place *Plc;
|
||||
const char *Names[Nam_NUM_SHRT_FULL_NAMES];
|
||||
|
@ -1250,7 +1251,9 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places)
|
|||
|
||||
/***** Center logo *****/
|
||||
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr_EditingCtr->FullName);
|
||||
Lgo_DrawLogo (Hie_CTR,-1L,"","ICO20x20",NULL);
|
||||
Ctr.HieCod = -1L;
|
||||
Ctr.ShrtName[0] = '\0';
|
||||
Lgo_DrawLogo (Hie_CTR,&Ctr,"ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Place *****/
|
||||
|
|
|
@ -44,14 +44,14 @@
|
|||
void Ctr_SeeCtrWithPendingDegs (void);
|
||||
|
||||
void Ctr_DrawCenterLogoAndNameWithLink (struct Hie_Node *Ctr,Act_Action_t Action,
|
||||
const char *ClassLogo);
|
||||
const char *IconClass);
|
||||
|
||||
void Ctr_ShowCtrsOfCurrentIns (void);
|
||||
void Ctr_EditCenters (void);
|
||||
|
||||
void Ctr_GetBasicListOfCenters (long InsCod);
|
||||
void Ctr_GetFullListOfCenters (long InsCod,Hie_Order_t SelectedOrder);
|
||||
bool Ctr_GetCenterDataByCod (struct Hie_Node *Ctr);
|
||||
bool Ctr_GetCenterDataByCod (struct Hie_Node *Node);
|
||||
void Ctr_GetCoordByCod (long CtrCod,struct Map_Coordinates *Coord);
|
||||
void Ctr_WriteSelectorOfCenter (void);
|
||||
void Ctr_RemoveCenter (void);
|
||||
|
|
|
@ -580,10 +580,7 @@ static void CtrCfg_Institution (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
|||
Str_FreeGoToTitle ();
|
||||
}
|
||||
|
||||
Lgo_DrawLogo (Hie_INS,
|
||||
Gbl.Hierarchy.Node[Hie_INS].HieCod,
|
||||
Gbl.Hierarchy.Node[Hie_INS].ShrtName,
|
||||
"ICO20x20","LM");
|
||||
Lgo_DrawLogo (Hie_INS,&Gbl.Hierarchy.Node[Hie_INS],"LM ICO20x20");
|
||||
HTM_NBSP ();
|
||||
HTM_Txt (Gbl.Hierarchy.Node[Hie_INS].FullName);
|
||||
|
||||
|
|
|
@ -633,10 +633,11 @@ Me sale este error, no s
|
|||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.49 (2023-11-27)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.50 (2023-11-28)"
|
||||
#define CSS_FILE "swad23.48.2.css"
|
||||
#define JS_FILE "swad23.47.3.js"
|
||||
/*
|
||||
Version 23.50: Nov 28, 2023 Code refactoring in hierarchy. (335634 lines)
|
||||
Version 23.49: Nov 27, 2023 Code refactoring in highlighting. (335774 lines)
|
||||
Version 23.48.3: Nov 27, 2023 Code refactoring in notices. (335746 lines)
|
||||
Version 23.48.2: Nov 26, 2023 Responsive design in program. (335738 lines)
|
||||
|
|
|
@ -191,7 +191,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
Txt_HIERARCHY_SINGUL_Abc[Hie_DEG],Deg.ShrtName);
|
||||
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,
|
||||
ThisRoomFullName,1,IsLastItemInLevel);
|
||||
Lgo_DrawLogo (Hie_DEG,Deg.HieCod,Deg.ShrtName,"ICO16x16",NULL);
|
||||
Lgo_DrawLogo (Hie_DEG,&Deg,"ICO16x16");
|
||||
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
|
||||
|
||||
/* Get my courses in this degree from database */
|
||||
|
@ -222,7 +222,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
Txt_HIERARCHY_SINGUL_Abc[Hie_CRS],Crs.ShrtName);
|
||||
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,
|
||||
ThisRoomFullName,2,IsLastItemInLevel);
|
||||
Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,ThisRoomFullName,"ICO16x16");
|
||||
Lgo_DrawLogo (Hie_CRS,&Crs,"ICO16x16");
|
||||
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -534,7 +534,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action
|
|||
/***************************** Draw country map ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Cty_DrawCountryMap (struct Hie_Node *Cty,const char *Class)
|
||||
void Cty_DrawCountryMap (const struct Hie_Node *Cty,const char *Class)
|
||||
{
|
||||
char *URL;
|
||||
char *Icon;
|
||||
|
@ -559,7 +559,7 @@ void Cty_DrawCountryMap (struct Hie_Node *Cty,const char *Class)
|
|||
/*********************** Check if country map exists *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Cty_CheckIfCountryPhotoExists (struct Hie_Node *Cty)
|
||||
bool Cty_CheckIfCountryPhotoExists (const struct Hie_Node *Cty)
|
||||
{
|
||||
char PathMap[PATH_MAX + 1];
|
||||
|
||||
|
@ -897,51 +897,50 @@ void Cty_WriteCountryName (long CtyCod)
|
|||
/***************** Get basic data of country given its code ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Cty_GetBasicCountryDataByCod (struct Hie_Node *Cty)
|
||||
bool Cty_GetBasicCountryDataByCod (struct Hie_Node *Node)
|
||||
{
|
||||
extern const char *Txt_Another_country;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
bool CtyFound;
|
||||
bool Found;
|
||||
|
||||
if (Cty->HieCod < 0)
|
||||
if (Node->HieCod < 0)
|
||||
return false;
|
||||
|
||||
/***** Clear data *****/
|
||||
Cty->ShrtName[0] = '\0';
|
||||
Cty->FullName[0] = '\0';
|
||||
Cty->WWW[0] = '\0';
|
||||
Cty->NumUsrsWhoClaimToBelong.Valid = false;
|
||||
Node->ShrtName[0] = '\0';
|
||||
Node->FullName[0] = '\0';
|
||||
Node->WWW[0] = '\0';
|
||||
Node->NumUsrsWhoClaimToBelong.Valid = false;
|
||||
|
||||
/***** If another country *****/
|
||||
if (Cty->HieCod == 0)
|
||||
if (Node->HieCod == 0)
|
||||
{
|
||||
Str_Copy (Cty->FullName,Txt_Another_country,
|
||||
sizeof (Cty->FullName) - 1);
|
||||
Str_Copy (Node->FullName,Txt_Another_country,sizeof (Node->FullName) - 1);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Here Cty->CtyCod > 0
|
||||
|
||||
/***** Get data of a country from database *****/
|
||||
CtyFound = (Cty_DB_GetBasicCountryDataByCod (&mysql_res,Cty->HieCod) != 0);
|
||||
if (CtyFound) // Country found...
|
||||
Found = (Cty_DB_GetBasicCountryDataByCod (&mysql_res,Node->HieCod) != 0);
|
||||
if (Found) // Country found...
|
||||
{
|
||||
/* Get row */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Get Alpha-2 country code (row[0]) */
|
||||
Str_Copy (Cty->ShrtName,row[0],sizeof (Cty->ShrtName) - 1);
|
||||
Str_Copy (Node->ShrtName,row[0],sizeof (Node->ShrtName) - 1);
|
||||
|
||||
/* Get name and WWW of the country in current language */
|
||||
Str_Copy (Cty->FullName,row[1],sizeof (Cty->FullName) - 1);
|
||||
Str_Copy (Cty->WWW ,row[2],sizeof (Cty->WWW ) - 1);
|
||||
Str_Copy (Node->FullName,row[1],sizeof (Node->FullName) - 1);
|
||||
Str_Copy (Node->WWW ,row[2],sizeof (Node->WWW ) - 1);
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
return CtyFound;
|
||||
return Found;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -58,8 +58,8 @@ bool Cty_CheckIfICanEditCountries (void);
|
|||
void Cty_DrawCountryMapAndNameWithLink (struct Hie_Node *Cty,Act_Action_t Action,
|
||||
const char *ClassContainer,
|
||||
const char *ClassMap);
|
||||
void Cty_DrawCountryMap (struct Hie_Node *Cty,const char *Class);
|
||||
bool Cty_CheckIfCountryPhotoExists (struct Hie_Node *Cty);
|
||||
void Cty_DrawCountryMap (const struct Hie_Node *Cty,const char *Class);
|
||||
bool Cty_CheckIfCountryPhotoExists (const struct Hie_Node *Cty);
|
||||
|
||||
void Cty_WriteScriptGoogleGeochart (void);
|
||||
void Cty_PutParCtyOrder (void);
|
||||
|
@ -67,7 +67,7 @@ void Cty_EditCountries (void);
|
|||
void Cty_GetBasicListOfCountries (void);
|
||||
void Cty_WriteSelectorOfCountry (void);
|
||||
void Cty_WriteCountryName (long CtyCod);
|
||||
bool Cty_GetBasicCountryDataByCod (struct Hie_Node *Cty);
|
||||
bool Cty_GetBasicCountryDataByCod (struct Hie_Node *Node);
|
||||
void Cty_GetNamesAndWWWsByCod (struct Hie_Node *Cty,
|
||||
char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1],
|
||||
char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]);
|
||||
|
|
397
swad_course.c
397
swad_course.c
|
@ -91,6 +91,13 @@ static struct Hie_Node *Crs_EditingCrs = NULL; // Static variable to keep the co
|
|||
/*****************************************************************************/
|
||||
|
||||
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);
|
||||
|
@ -151,30 +158,9 @@ void Crs_ShowIntroduction (void)
|
|||
static void Crs_WriteListMyCoursesToSelectOne (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Courses;
|
||||
extern const char *Lay_HighlightClass[Lay_NUM_HIGHLIGHT];
|
||||
extern const char *Par_CodeStr[];
|
||||
extern ParCod_Param_t Hie_ParCod[Hie_NUM_LEVELS];
|
||||
extern const char *Txt_My_courses;
|
||||
extern const char *Txt_HIERARCHY_SINGUL_Abc[Hie_NUM_LEVELS];
|
||||
struct Hie_Node Hie[Hie_NUM_LEVELS];
|
||||
Lay_LastItem_t IsLastItemInLevel[1 + 6];
|
||||
Lay_Highlight_t Highlight; // Highlight because degree, course, etc. is selected
|
||||
MYSQL_RES *mysql_resCty;
|
||||
MYSQL_RES *mysql_resIns;
|
||||
MYSQL_RES *mysql_resCtr;
|
||||
MYSQL_RES *mysql_resDeg;
|
||||
MYSQL_RES *mysql_resCrs;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumCty;
|
||||
unsigned NumCtys;
|
||||
unsigned NumIns;
|
||||
unsigned NumInss;
|
||||
unsigned NumCtr;
|
||||
unsigned NumCtrs;
|
||||
unsigned NumDeg;
|
||||
unsigned NumDegs;
|
||||
unsigned NumCrs;
|
||||
unsigned NumCrss;
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin (NULL,Txt_My_courses,
|
||||
|
@ -184,237 +170,8 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
|||
/***** Begin list *****/
|
||||
HTM_UL_Begin ("class=\"LIST_TREE\"");
|
||||
|
||||
/***** Write link to platform *****/
|
||||
Highlight = (Gbl.Hierarchy.Node[Hie_CTY].HieCod <= 0) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
IsLastItemInLevel[1] = Lay_LAST_ITEM;
|
||||
Lay_IndentDependingOnLevel (1,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
Par_PutParLong (NULL,Par_CodeStr[Hie_ParCod[Hie_CTY]],-1L);
|
||||
HTM_BUTTON_Submit_Begin (Txt_HIERARCHY_SINGUL_Abc[Hie_SYS],
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Ico_PutIcon ("sitemap.svg",Ico_BLACK,Txt_HIERARCHY_SINGUL_Abc[Hie_SYS],"ICO16x16");
|
||||
HTM_TxtF (" %s",Txt_HIERARCHY_SINGUL_Abc[Hie_SYS]);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
|
||||
/***** Get my countries *****/
|
||||
NumCtys = Cty_DB_GetMyCtys (&mysql_resCty,-1L);
|
||||
for (NumCty = 0;
|
||||
NumCty < NumCtys;
|
||||
NumCty++)
|
||||
{
|
||||
/***** Get next country *****/
|
||||
row = mysql_fetch_row (mysql_resCty);
|
||||
|
||||
/***** Get data of this country *****/
|
||||
Hie[Hie_CTY].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
if (!Cty_GetBasicCountryDataByCod (&Hie[Hie_CTY]))
|
||||
Err_WrongCountrExit ();
|
||||
|
||||
/***** Write link to country *****/
|
||||
Highlight = (Gbl.Hierarchy.Node[Hie_INS].HieCod <= 0 &&
|
||||
Gbl.Hierarchy.Node[Hie_CTY].HieCod == Hie[Hie_CTY].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
IsLastItemInLevel[2] = (NumCty == NumCtys - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
Lay_IndentDependingOnLevel (2,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Hie_CTY],Hie[Hie_CTY].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeCtyInf),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Cty_DrawCountryMap (&Hie[Hie_CTY],"ICO16x16");
|
||||
HTM_TxtF (" %s",Hie[Hie_CTY].FullName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
|
||||
/***** Get my institutions in this country *****/
|
||||
NumInss = Ins_DB_GetMyInss (&mysql_resIns,
|
||||
Hie[Hie_CTY].HieCod);
|
||||
for (NumIns = 0;
|
||||
NumIns < NumInss;
|
||||
NumIns++)
|
||||
{
|
||||
/***** Get next institution *****/
|
||||
row = mysql_fetch_row (mysql_resIns);
|
||||
|
||||
/***** Get data of this institution *****/
|
||||
Hie[Hie_INS].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
if (!Ins_GetInstitDataByCod (&Hie[Hie_INS]))
|
||||
Err_WrongInstitExit ();
|
||||
|
||||
/***** Write link to institution *****/
|
||||
Highlight = (Gbl.Hierarchy.Node[Hie_CTR].HieCod <= 0 &&
|
||||
Gbl.Hierarchy.Node[Hie_INS].HieCod == Hie[Hie_INS].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
IsLastItemInLevel[3] = (NumIns == NumInss - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
Lay_IndentDependingOnLevel (3,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Hie_INS],Hie[Hie_INS].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeInsInf),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Lgo_DrawLogo (Hie_INS,
|
||||
Hie[Hie_INS].HieCod,
|
||||
Hie[Hie_INS].ShrtName,
|
||||
"ICO16x16",NULL);
|
||||
HTM_TxtF (" %s",Hie[Hie_INS].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
|
||||
/***** Get my centers in this institution *****/
|
||||
NumCtrs = Ctr_DB_GetMyCtrs (&mysql_resCtr,Hie[Hie_INS].HieCod);
|
||||
for (NumCtr = 0;
|
||||
NumCtr < NumCtrs;
|
||||
NumCtr++)
|
||||
{
|
||||
/***** Get next center *****/
|
||||
row = mysql_fetch_row (mysql_resCtr);
|
||||
|
||||
/***** Get data of this center *****/
|
||||
Hie[Hie_CTR].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
if (!Ctr_GetCenterDataByCod (&Hie[Hie_CTR]))
|
||||
Err_WrongCenterExit ();
|
||||
|
||||
/***** Write link to center *****/
|
||||
Highlight = (Gbl.Hierarchy.Level == Hie_CTR &&
|
||||
Gbl.Hierarchy.Node[Hie_CTR].HieCod == Hie[Hie_CTR].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
IsLastItemInLevel[4] = (NumCtr == NumCtrs - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
Lay_IndentDependingOnLevel (4,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Hie_CTR],Hie[Hie_CTR].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeCtrInf),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Lgo_DrawLogo (Hie_CTR,
|
||||
Hie[Hie_CTR].HieCod,
|
||||
Hie[Hie_CTR].ShrtName,
|
||||
"ICO16x16",NULL);
|
||||
HTM_TxtF (" %s",Hie[Hie_CTR].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
|
||||
/***** Get my degrees in this center *****/
|
||||
NumDegs = Deg_DB_GetMyDegs (&mysql_resDeg,Hie[Hie_CTR].HieCod);
|
||||
for (NumDeg = 0;
|
||||
NumDeg < NumDegs;
|
||||
NumDeg++)
|
||||
{
|
||||
/***** Get next degree *****/
|
||||
row = mysql_fetch_row (mysql_resDeg);
|
||||
|
||||
/***** Get data of this degree *****/
|
||||
Hie[Hie_DEG].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
if (!Deg_GetDegreeDataByCod (&Hie[Hie_DEG]))
|
||||
Err_WrongDegreeExit ();
|
||||
|
||||
/***** Write link to degree *****/
|
||||
Highlight = (Gbl.Hierarchy.Level == Hie_DEG &&
|
||||
Gbl.Hierarchy.Node[Hie_DEG].HieCod == Hie[Hie_DEG].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
IsLastItemInLevel[5] = (NumDeg == NumDegs - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
Lay_IndentDependingOnLevel (5,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Hie_DEG],Hie[Hie_DEG].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Act_GetActionText (ActSeeDegInf),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Lgo_DrawLogo (Hie_DEG,
|
||||
Hie[Hie_DEG].HieCod,
|
||||
Hie[Hie_DEG].ShrtName,
|
||||
"ICO16x16",NULL);
|
||||
HTM_TxtF (" %s",Hie[Hie_DEG].ShrtName);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
|
||||
/***** Get my courses in this degree *****/
|
||||
NumCrss = Crs_DB_GetCrssFromUsr (&mysql_resCrs,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Hie[Hie_DEG].HieCod);
|
||||
for (NumCrs = 0;
|
||||
NumCrs < NumCrss;
|
||||
NumCrs++)
|
||||
{
|
||||
/***** Get next course *****/
|
||||
row = mysql_fetch_row (mysql_resCrs);
|
||||
|
||||
/***** Get data of this course *****/
|
||||
Hie[Hie_CRS].HieCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
if (!Crs_GetCourseDataByCod (&Hie[Hie_CRS]))
|
||||
Err_WrongCourseExit ();
|
||||
|
||||
/***** Write link to course *****/
|
||||
Highlight = (Gbl.Hierarchy.Level == Hie_CRS &&
|
||||
Gbl.Hierarchy.Node[Hie_CRS].HieCod == Hie[Hie_CRS].HieCod) ? Lay_HIGHLIGHT :
|
||||
Lay_NO_HIGHLIGHT;
|
||||
IsLastItemInLevel[6] = (NumCrs == NumCrss - 1) ? Lay_LAST_ITEM :
|
||||
Lay_NO_LAST_ITEM;
|
||||
HTM_LI_Begin (Lay_HighlightClass[Highlight]);
|
||||
Lay_IndentDependingOnLevel (6,IsLastItemInLevel,
|
||||
Lay_HORIZONTAL_LINE_AT_RIGHT);
|
||||
Frm_BeginForm (ActMyCrs);
|
||||
ParCod_PutPar (Hie_ParCod[Hie_CRS],Hie[Hie_CRS].HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Hie[Hie_CRS].ShrtName),
|
||||
"class=\"BT_LINK FORM_IN_%s\"",
|
||||
The_GetSuffix ());
|
||||
Str_FreeGoToTitle ();
|
||||
// Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,Hie[Hie_CRS].FullName,"ICO16x16");
|
||||
Lgo_DrawLogo (Hie_CRS,
|
||||
Hie[Hie_CRS].HieCod,
|
||||
Hie[Hie_CRS].ShrtName,
|
||||
"ICO16x16",NULL);
|
||||
HTM_DIV_Begin ("class=\"MY_CRS_TXT\"");
|
||||
HTM_TxtF (" %s",Hie[Hie_CRS].ShrtName);
|
||||
HTM_DIV_End ();
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_LI_End ();
|
||||
|
||||
/***** Put link to register students *****/
|
||||
Enr_PutButtonInlineToRegisterStds (Hie[Hie_CRS].HieCod,
|
||||
6,IsLastItemInLevel,
|
||||
Highlight);
|
||||
}
|
||||
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_resCrs);
|
||||
}
|
||||
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_resDeg);
|
||||
}
|
||||
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_resCtr);
|
||||
}
|
||||
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_resIns);
|
||||
}
|
||||
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_resCty);
|
||||
/***** Write nodes recursively *****/
|
||||
Crs_WriteNodes (Hie,IsLastItemInLevel,Hie_SYS);
|
||||
|
||||
/***** End list *****/
|
||||
HTM_UL_End ();
|
||||
|
@ -423,6 +180,110 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
|||
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 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;
|
||||
static bool (*GetDataByCod[Hie_NUM_LEVELS]) (struct Hie_Node *Node) =
|
||||
{
|
||||
[Hie_CTY] = Cty_GetBasicCountryDataByCod,
|
||||
[Hie_INS] = Ins_GetInstitDataByCod,
|
||||
[Hie_CTR] = Ctr_GetCenterDataByCod,
|
||||
[Hie_DEG] = Deg_GetDegreeDataByCod,
|
||||
[Hie_CRS] = Crs_GetCourseDataByCod,
|
||||
};
|
||||
|
||||
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 (!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 **********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1363,37 +1224,37 @@ void Crs_RemoveCourse (void)
|
|||
/********************* Get data of a course from its code ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Crs_GetCourseDataByCod (struct Hie_Node *Crs)
|
||||
bool Crs_GetCourseDataByCod (struct Hie_Node *Node)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
bool CrsFound = false;
|
||||
bool Found = false;
|
||||
|
||||
/***** Clear data *****/
|
||||
Crs->PrtCod = -1L;
|
||||
Crs->Specific.Year = 0;
|
||||
Crs->Status = (Hie_Status_t) 0;
|
||||
Crs->RequesterUsrCod = -1L;
|
||||
Crs->ShrtName[0] = '\0';
|
||||
Crs->FullName[0] = '\0';
|
||||
Node->PrtCod = -1L;
|
||||
Node->Specific.Year = 0;
|
||||
Node->Status = (Hie_Status_t) 0;
|
||||
Node->RequesterUsrCod = -1L;
|
||||
Node->ShrtName[0] = '\0';
|
||||
Node->FullName[0] = '\0';
|
||||
|
||||
/***** Check if course code is correct *****/
|
||||
if (Crs->HieCod > 0)
|
||||
if (Node->HieCod > 0)
|
||||
{
|
||||
/***** Get data of a course from database *****/
|
||||
if (Crs_DB_GetCourseDataByCod (&mysql_res,Crs->HieCod)) // Course found...
|
||||
if (Crs_DB_GetCourseDataByCod (&mysql_res,Node->HieCod)) // Course found...
|
||||
{
|
||||
/***** Get data of the course *****/
|
||||
Crs_GetCourseDataFromRow (mysql_res,Crs);
|
||||
Crs_GetCourseDataFromRow (mysql_res,Node);
|
||||
|
||||
/* Set return value */
|
||||
CrsFound = true;
|
||||
Found = true;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
return CrsFound;
|
||||
return Found;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1931,6 +1792,7 @@ static void Crs_PutIconToSearchCourses (__attribute__((unused)) void *Args)
|
|||
|
||||
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
|
||||
|
@ -1939,7 +1801,7 @@ void Crs_PutIconToSelectMyCoursesInBreadcrumb (void)
|
|||
Frm_BeginForm (ActMyCrs);
|
||||
|
||||
/***** Put icon with link *****/
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"sitemap.svg",Txt_My_courses,
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Hie_Icons[Hie_SYS],Txt_My_courses,
|
||||
"class=\"BC_ICO BC_ICO_%s ICO_HIGHLIGHT\"",
|
||||
The_GetSuffix ());
|
||||
|
||||
|
@ -2176,8 +2038,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (row[2]),
|
||||
"class=\"LT BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
Lgo_DrawLogo (Hie_DEG,Deg.HieCod,Deg.ShrtName,
|
||||
"ICO20x20","CT");
|
||||
Lgo_DrawLogo (Hie_DEG,&Deg,"CT ICO20x20");
|
||||
HTM_TxtF (" %s (%s)",row[2],row[6]);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
|
|
|
@ -235,10 +235,7 @@ static void CrsCfg_Degree (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
|||
"class=\"LT BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
}
|
||||
Lgo_DrawLogo (Hie_DEG,
|
||||
Gbl.Hierarchy.Node[Hie_DEG].HieCod,
|
||||
Gbl.Hierarchy.Node[Hie_DEG].ShrtName,
|
||||
"ICO20x20","LM");
|
||||
Lgo_DrawLogo (Hie_DEG,&Gbl.Hierarchy.Node[Hie_DEG],"LM ICO20x20");
|
||||
HTM_NBSP ();
|
||||
HTM_Txt (Gbl.Hierarchy.Node[Hie_DEG].FullName);
|
||||
if (ViewType == Vie_VIEW)
|
||||
|
|
|
@ -163,7 +163,7 @@ void Deg_SeeDegWithPendingCrss (void)
|
|||
/* Degree logo and full name */
|
||||
HTM_TD_Begin ("class=\"LM DAT_%s NOWRAP %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs,"CM");
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs,"CM ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of pending courses (row[1]) */
|
||||
|
@ -191,7 +191,7 @@ void Deg_SeeDegWithPendingCrss (void)
|
|||
/*****************************************************************************/
|
||||
|
||||
void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action,
|
||||
const char *ClassLogo)
|
||||
const char *IconClass)
|
||||
{
|
||||
/***** Begin form *****/
|
||||
Frm_BeginFormGoTo (Action);
|
||||
|
@ -203,7 +203,7 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action
|
|||
Str_FreeGoToTitle ();
|
||||
|
||||
/***** Degree logo and name *****/
|
||||
Lgo_DrawLogo (Hie_DEG,Deg->HieCod,Deg->ShrtName,"ICO20x20",ClassLogo);
|
||||
Lgo_DrawLogo (Hie_DEG,Deg,IconClass);
|
||||
HTM_TxtF (" %s",Deg->FullName);
|
||||
|
||||
/***** End link *****/
|
||||
|
@ -375,7 +375,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
|
|||
|
||||
/* Degree logo */
|
||||
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg->FullName);
|
||||
Lgo_DrawLogo (Hie_DEG,Deg->HieCod,Deg->ShrtName,"ICO20x20",NULL);
|
||||
Lgo_DrawLogo (Hie_DEG,Deg,"ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Degree short name and full name */
|
||||
|
@ -499,6 +499,7 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes)
|
|||
Act_Action_t NextAction = ActUnk;
|
||||
unsigned NumDegTyp;
|
||||
struct DegTyp_DegreeType *DegTyp;
|
||||
struct Hie_Node Deg;
|
||||
const char *Names[Nam_NUM_SHRT_FULL_NAMES];
|
||||
|
||||
/***** Set action depending on role *****/
|
||||
|
@ -527,7 +528,9 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes)
|
|||
|
||||
/***** Degree logo *****/
|
||||
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg_EditingDeg->FullName);
|
||||
Lgo_DrawLogo (Hie_DEG,-1L,"","ICO20x20",NULL);
|
||||
Deg.HieCod = -1L;
|
||||
Deg.ShrtName[0] = '\0';
|
||||
Lgo_DrawLogo (Hie_DEG,&Deg,"ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Degree short name and full name *****/
|
||||
|
@ -792,7 +795,7 @@ static void Deg_ListOneDegreeForSeeing (struct Hie_Node *Deg,unsigned NumDeg)
|
|||
/***** Degree logo and name *****/
|
||||
HTM_TD_Begin ("class=\"LM %s_%s %s\"",
|
||||
TxtClassStrong,The_GetSuffix (),BgColor);
|
||||
Deg_DrawDegreeLogoAndNameWithLink (Deg,ActSeeCrs,"CM");
|
||||
Deg_DrawDegreeLogoAndNameWithLink (Deg,ActSeeCrs,"CM ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Type of degree *****/
|
||||
|
@ -1109,38 +1112,38 @@ void Deg_RemoveDegree (void)
|
|||
/*****************************************************************************/
|
||||
// Returns true if degree found
|
||||
|
||||
bool Deg_GetDegreeDataByCod (struct Hie_Node *Deg)
|
||||
bool Deg_GetDegreeDataByCod (struct Hie_Node *Node)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
bool DegFound = false;
|
||||
bool Found = false;
|
||||
|
||||
/***** Clear data *****/
|
||||
Deg->PrtCod = -1L;
|
||||
Deg->Specific.TypCod = -1L;
|
||||
Deg->Status = (Hie_Status_t) 0;
|
||||
Deg->RequesterUsrCod = -1L;
|
||||
Deg->ShrtName[0] = '\0';
|
||||
Deg->FullName[0] = '\0';
|
||||
Deg->WWW[0] = '\0';
|
||||
Node->PrtCod = -1L;
|
||||
Node->Specific.TypCod = -1L;
|
||||
Node->Status = (Hie_Status_t) 0;
|
||||
Node->RequesterUsrCod = -1L;
|
||||
Node->ShrtName[0] = '\0';
|
||||
Node->FullName[0] = '\0';
|
||||
Node->WWW[0] = '\0';
|
||||
|
||||
/***** Check if degree code is correct *****/
|
||||
if (Deg->HieCod > 0)
|
||||
if (Node->HieCod > 0)
|
||||
{
|
||||
/***** Get data of a degree from database *****/
|
||||
if (Deg_DB_GetDegreeDataByCod (&mysql_res,Deg->HieCod)) // Degree found...
|
||||
if (Deg_DB_GetDegreeDataByCod (&mysql_res,Node->HieCod)) // Degree found...
|
||||
{
|
||||
/***** Get data of degree *****/
|
||||
Deg_GetDegreeDataFromRow (mysql_res,Deg);
|
||||
Deg_GetDegreeDataFromRow (mysql_res,Node);
|
||||
|
||||
/* Set return value */
|
||||
DegFound = true;
|
||||
Found = true;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
return DegFound;
|
||||
return Found;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
void Deg_SeeDegWithPendingCrss (void);
|
||||
|
||||
void Deg_DrawDegreeLogoAndNameWithLink (struct Hie_Node *Deg,Act_Action_t Action,
|
||||
const char *ClassLogo);
|
||||
const char *IconClass);
|
||||
|
||||
void Deg_WriteSelectorOfDegree (void);
|
||||
|
||||
|
@ -70,7 +70,7 @@ void Deg_ReceiveFormReqDeg (void);
|
|||
void Deg_ReceiveFormNewDeg (void);
|
||||
void Deg_RemoveDegree (void);
|
||||
|
||||
bool Deg_GetDegreeDataByCod (struct Hie_Node *Deg);
|
||||
bool Deg_GetDegreeDataByCod (struct Hie_Node *Node);
|
||||
void Deg_RemoveDegreeCompletely (long DegCod);
|
||||
void Deg_RenameDegreeShort (void);
|
||||
void Deg_RenameDegreeFull (void);
|
||||
|
|
|
@ -229,10 +229,7 @@ static void DegCfg_Center (Vie_ViewType_t ViewType,Frm_PutForm_t PutForm)
|
|||
"class=\"LB BT_LINK\"");
|
||||
Str_FreeGoToTitle ();
|
||||
}
|
||||
Lgo_DrawLogo (Hie_CTR,
|
||||
Gbl.Hierarchy.Node[Hie_CTR].HieCod,
|
||||
Gbl.Hierarchy.Node[Hie_CTR].ShrtName,
|
||||
"ICO20x20","LM");
|
||||
Lgo_DrawLogo (Hie_CTR,&Gbl.Hierarchy.Node[Hie_CTR],"LM ICO20x20");
|
||||
HTM_NBSP ();
|
||||
HTM_Txt (Gbl.Hierarchy.Node[Hie_CTR].FullName);
|
||||
if (ViewType == Vie_VIEW)
|
||||
|
|
|
@ -79,10 +79,12 @@ void Enr_DB_AcceptUsrInCrs (long UsrCod,long CrsCod)
|
|||
void Enr_DB_CreateTmpTableMyCourses (void)
|
||||
{
|
||||
DB_CreateTmpTable ("CREATE TEMPORARY TABLE IF NOT EXISTS my_courses_tmp"
|
||||
" (CrsCod INT NOT NULL,"
|
||||
"Role TINYINT NOT NULL,"
|
||||
"DegCod INT NOT NULL,"
|
||||
"UNIQUE INDEX(CrsCod,Role,DegCod)) ENGINE=MEMORY"
|
||||
"(CrsInd INT NOT NULL AUTO_INCREMENT,"
|
||||
"CrsCod INT NOT NULL,"
|
||||
"Role TINYINT NOT NULL,"
|
||||
"DegCod INT NOT NULL,"
|
||||
"UNIQUE INDEX(CrsInd),"
|
||||
"UNIQUE INDEX(CrsCod,Role,DegCod)) ENGINE=MEMORY"
|
||||
" SELECT crs_users.CrsCod,"
|
||||
"crs_users.Role,"
|
||||
"crs_courses.DegCod"
|
||||
|
@ -101,15 +103,26 @@ void Enr_DB_CreateTmpTableMyCourses (void)
|
|||
/************************* Get my courses from database **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Enr_DB_GetMyCrss (MYSQL_RES **mysql_res,
|
||||
__attribute__((unused)) long PrtCod)
|
||||
unsigned Enr_DB_GetMyCrss (MYSQL_RES **mysql_res,long PrtCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get which courses you belong to",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"Role," // row[1]
|
||||
"DegCod" // row[2]
|
||||
" FROM my_courses_tmp");
|
||||
if (PrtCod > 0)
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get which courses you belong to",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"Role," // row[1]
|
||||
"DegCod" // row[2]
|
||||
" FROM my_courses_tmp"
|
||||
" WHERE DegCod=%ld"
|
||||
" ORDER BY CrsInd",
|
||||
PrtCod);
|
||||
else
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get which courses you belong to",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"Role," // row[1]
|
||||
"DegCod" // row[2]
|
||||
" FROM my_courses_tmp"
|
||||
" ORDER BY CrsInd");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -40,8 +40,7 @@ void Enr_DB_InsertUsrInCurrentCrs (long UsrCod,long CrsCod,Rol_Role_t NewRole,
|
|||
void Enr_DB_AcceptUsrInCrs (long UsrCod,long CrsCod);
|
||||
|
||||
void Enr_DB_CreateTmpTableMyCourses (void);
|
||||
unsigned Enr_DB_GetMyCrss (MYSQL_RES **mysql_res,
|
||||
__attribute__((unused)) long PrtCod);
|
||||
unsigned Enr_DB_GetMyCrss (MYSQL_RES **mysql_res,long PrtCod);
|
||||
void Enr_DB_DropTmpTableMyCourses (void);
|
||||
unsigned Enr_DB_GetMyCoursesNames (MYSQL_RES **mysql_res);
|
||||
|
||||
|
|
32
swad_forum.c
32
swad_forum.c
|
@ -1730,6 +1730,22 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
|
|||
unsigned NumThrs;
|
||||
unsigned NumThrsWithNewPosts;
|
||||
char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
|
||||
Hie_Level_t Levels[For_NUM_TYPES_FORUM] =
|
||||
{
|
||||
[For_FORUM_GLOBAL_USRS] = Hie_SYS,
|
||||
[For_FORUM_GLOBAL_TCHS] = Hie_SYS,
|
||||
[For_FORUM__SWAD__USRS] = Hie_SYS,
|
||||
[For_FORUM__SWAD__TCHS] = Hie_SYS,
|
||||
[For_FORUM_INSTIT_USRS] = Hie_INS,
|
||||
[For_FORUM_INSTIT_TCHS] = Hie_INS,
|
||||
[For_FORUM_CENTER_USRS] = Hie_CTR,
|
||||
[For_FORUM_CENTER_TCHS] = Hie_CTR,
|
||||
[For_FORUM_DEGREE_USRS] = Hie_DEG,
|
||||
[For_FORUM_DEGREE_TCHS] = Hie_DEG,
|
||||
[For_FORUM_COURSE_USRS] = Hie_CRS,
|
||||
[For_FORUM_COURSE_TCHS] = Hie_CRS,
|
||||
};
|
||||
struct Hie_Node Node;
|
||||
|
||||
/***** Get number of threads and number of posts *****/
|
||||
NumThrs = For_DB_GetNumThrsInForum (Forum);
|
||||
|
@ -1786,27 +1802,25 @@ static void For_WriteLinkToForum (const struct For_Forums *Forums,
|
|||
{
|
||||
case For_FORUM_GLOBAL_USRS:
|
||||
case For_FORUM_GLOBAL_TCHS:
|
||||
Ico_PutIcon ("comments.svg",Ico_BLACK,ForumName,"ICO16x16");
|
||||
Ico_PutIcon ("comments.svg",Ico_BLACK,ForumName,
|
||||
"ICO16x16");
|
||||
break;
|
||||
case For_FORUM__SWAD__USRS:
|
||||
case For_FORUM__SWAD__TCHS:
|
||||
Ico_PutIcon ("swad64x64.png",Ico_UNCHANGED,ForumName,"ICO16x16");
|
||||
Ico_PutIcon ("swad64x64.png",Ico_UNCHANGED,ForumName,
|
||||
"ICO16x16");
|
||||
break;
|
||||
case For_FORUM_INSTIT_USRS:
|
||||
case For_FORUM_INSTIT_TCHS:
|
||||
Lgo_DrawLogo (Hie_INS,Forum->HieCod,ForumName,"ICO16x16",NULL);
|
||||
break;
|
||||
case For_FORUM_CENTER_USRS:
|
||||
case For_FORUM_CENTER_TCHS:
|
||||
Lgo_DrawLogo (Hie_CTR,Forum->HieCod,ForumName,"ICO16x16",NULL);
|
||||
break;
|
||||
case For_FORUM_DEGREE_USRS:
|
||||
case For_FORUM_DEGREE_TCHS:
|
||||
Lgo_DrawLogo (Hie_DEG,Forum->HieCod,ForumName,"ICO16x16",NULL);
|
||||
break;
|
||||
case For_FORUM_COURSE_USRS:
|
||||
case For_FORUM_COURSE_TCHS:
|
||||
Ico_PutIcon ("chalkboard-teacher.svg",Ico_BLACK,ForumName,"ICO16x16");
|
||||
Node.HieCod = Forum->HieCod;
|
||||
Str_Copy (Node.ShrtName,ForumName,sizeof (Node.ShrtName) - 1);
|
||||
Lgo_DrawLogo (Levels[Forum->Type],&Node,"ICO16x16");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
extern struct Globals Gbl;
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Public constants ******************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
ParCod_Param_t Hie_ParCod[Hie_NUM_LEVELS] =
|
||||
|
@ -70,6 +70,26 @@ ParCod_Param_t Hie_ParCod[Hie_NUM_LEVELS] =
|
|||
[Hie_CRS] = ParCod_Crs,
|
||||
};
|
||||
|
||||
const char *Hie_Icons[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_SYS] = "sitemap.svg",
|
||||
[Hie_CTY] = "globe-americas.svg",
|
||||
[Hie_INS] = "university.svg",
|
||||
[Hie_CTR] = "building.svg",
|
||||
[Hie_DEG] = "graduation-cap.svg",
|
||||
[Hie_CRS] = "chalkboard-teacher.svg",
|
||||
};
|
||||
|
||||
unsigned (*Hie_GetMyNodesFromDB[Hie_NUM_LEVELS]) (MYSQL_RES **mysql_res,
|
||||
long PrtCod) =
|
||||
{
|
||||
[Hie_CTY] = Cty_DB_GetMyCtys,
|
||||
[Hie_INS] = Ins_DB_GetMyInss,
|
||||
[Hie_CTR] = Ctr_DB_GetMyCtrs,
|
||||
[Hie_DEG] = Deg_DB_GetMyDegs,
|
||||
[Hie_CRS] = Enr_DB_GetMyCrss,
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Private constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -427,38 +447,9 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void)
|
|||
|
||||
static void Hie_DrawLogo (void)
|
||||
{
|
||||
static Hie_Level_t LogoScope[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_INS] = Hie_INS,
|
||||
[Hie_CTR] = Hie_CTR,
|
||||
[Hie_DEG] = Hie_DEG,
|
||||
[Hie_CRS] = Hie_DEG, // Draw logo of degree
|
||||
};
|
||||
static const long *LogoCode[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_INS] = &Gbl.Hierarchy.Node[Hie_INS].HieCod,
|
||||
[Hie_CTR] = &Gbl.Hierarchy.Node[Hie_CTR].HieCod,
|
||||
[Hie_DEG] = &Gbl.Hierarchy.Node[Hie_DEG].HieCod,
|
||||
[Hie_CRS] = &Gbl.Hierarchy.Node[Hie_DEG].HieCod, // Degree code
|
||||
};
|
||||
|
||||
/***** Logo *****/
|
||||
switch (Gbl.Hierarchy.Level)
|
||||
{
|
||||
case Hie_SYS: // System
|
||||
Ico_PutIcon ("swad64x64.png",Ico_UNCHANGED,
|
||||
Gbl.Hierarchy.Node[Gbl.Hierarchy.Level].ShrtName,"TOP_LOGO");
|
||||
break;
|
||||
case Hie_CTY: // Country
|
||||
Cty_DrawCountryMap (&Gbl.Hierarchy.Node[Hie_CTY],"TOP_LOGO");
|
||||
break;
|
||||
default:
|
||||
Lgo_DrawLogo (LogoScope[Gbl.Hierarchy.Level],
|
||||
*LogoCode[Gbl.Hierarchy.Level],
|
||||
Gbl.Hierarchy.Node[Gbl.Hierarchy.Level].ShrtName,
|
||||
"ICO40x40","TOP_LOGO");
|
||||
break;
|
||||
}
|
||||
Lgo_DrawLogo (Gbl.Hierarchy.Level,&Gbl.Hierarchy.Node[Gbl.Hierarchy.Level],
|
||||
"TOP_LOGO ICO40x40");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -650,7 +641,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
|||
Ins_GetInstitDataByCod (&Hie[Hie_INS]);
|
||||
|
||||
/* Write institution logo and name */
|
||||
Ins_DrawInstitLogoAndNameWithLink (&Hie[Hie_INS],ActSeeInsInf,"LT");
|
||||
Ins_DrawInstitLogoAndNameWithLink (&Hie[Hie_INS],ActSeeInsInf,"LT ICO16x16");
|
||||
}
|
||||
break;
|
||||
case Hie_CTR: // Center
|
||||
|
@ -660,7 +651,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
|||
Ctr_GetCenterDataByCod (&Hie[Hie_CTR]);
|
||||
|
||||
/* Write center logo and name */
|
||||
Ctr_DrawCenterLogoAndNameWithLink (&Hie[Hie_CTR],ActSeeCtrInf,"LT");
|
||||
Ctr_DrawCenterLogoAndNameWithLink (&Hie[Hie_CTR],ActSeeCtrInf,"LT ICO16x16");
|
||||
}
|
||||
break;
|
||||
case Hie_DEG: // Degree
|
||||
|
@ -670,7 +661,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
|
|||
Deg_GetDegreeDataByCod (&Hie[Hie_DEG]);
|
||||
|
||||
/* Write degree logo and name */
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Hie[Hie_DEG],ActSeeDegInf,"LT");
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Hie[Hie_DEG],ActSeeDegInf,"LT ICO20x20");
|
||||
}
|
||||
break;
|
||||
default: // There are no administrators in other scopes
|
||||
|
@ -930,15 +921,6 @@ void Hie_GetMyHierarchy (Hie_Level_t Level)
|
|||
unsigned NumNode;
|
||||
unsigned NumNodes;
|
||||
long HieCod;
|
||||
static unsigned (*GetNodesFromDB[Hie_NUM_LEVELS]) (MYSQL_RES **mysql_res,
|
||||
long PrtCod) =
|
||||
{
|
||||
[Hie_CTY] = Cty_DB_GetMyCtys,
|
||||
[Hie_INS] = Ins_DB_GetMyInss,
|
||||
[Hie_CTR] = Ctr_DB_GetMyCtrs,
|
||||
[Hie_DEG] = Deg_DB_GetMyDegs,
|
||||
[Hie_CRS] = Enr_DB_GetMyCrss,
|
||||
};
|
||||
|
||||
/***** Trivial check 1: if list of nodes is already filled, there's nothing to do *****/
|
||||
if (Gbl.Usrs.Me.Hierarchy[Level].Filled)
|
||||
|
@ -960,7 +942,7 @@ void Hie_GetMyHierarchy (Hie_Level_t Level)
|
|||
Gbl.Usrs.Me.Hierarchy[Level].Nodes = NULL;
|
||||
|
||||
/***** Get my courses/degrees/centers/institutions/countries from database *****/
|
||||
if ((NumNodes = GetNodesFromDB[Level] (&mysql_res,-1L)))
|
||||
if ((NumNodes = Hie_GetMyNodesFromDB[Level] (&mysql_res,-1L)))
|
||||
{
|
||||
if ((Gbl.Usrs.Me.Hierarchy[Level].Nodes = malloc (NumNodes *
|
||||
sizeof (*Gbl.Usrs.Me.Hierarchy[Level].Nodes))) == NULL)
|
||||
|
@ -982,7 +964,7 @@ void Hie_GetMyHierarchy (Hie_Level_t Level)
|
|||
|
||||
/* Get parent hierarchy code */
|
||||
if (Level == Hie_CRS)
|
||||
Gbl.Usrs.Me.Hierarchy[Level].Nodes[Gbl.Usrs.Me.Hierarchy[Level].Num].PrtCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||
Gbl.Usrs.Me.Hierarchy[Level].Nodes[Gbl.Usrs.Me.Hierarchy[Level].Num].PrtCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||
|
||||
Gbl.Usrs.Me.Hierarchy[Level].Num++;
|
||||
}
|
||||
|
@ -1113,14 +1095,6 @@ void Hie_GetAndShowHierarchyStats (void)
|
|||
static void Hie_WriteHeadHierarchy (void)
|
||||
{
|
||||
extern const char *Txt_HIERARCHY_PLURAL_Abc[Hie_NUM_LEVELS];
|
||||
static const char *Icons[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_CTY] = "globe-americas.svg",
|
||||
[Hie_INS] = "university.svg",
|
||||
[Hie_CTR] = "building.svg",
|
||||
[Hie_DEG] = "graduation-cap.svg",
|
||||
[Hie_CRS] = "chalkboard-teacher.svg",
|
||||
};
|
||||
Hie_Level_t Level;
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1132,7 +1106,8 @@ static void Hie_WriteHeadHierarchy (void)
|
|||
Level++)
|
||||
{
|
||||
HTM_TH_Begin (HTM_HEAD_RIGHT);
|
||||
Ico_PutIcon (Icons[Level],Ico_BLACK,Txt_HIERARCHY_PLURAL_Abc[Level],"ICOx16");
|
||||
Ico_PutIcon (Hie_Icons[Level],Ico_BLACK,
|
||||
Txt_HIERARCHY_PLURAL_Abc[Level],"ICOx16");
|
||||
HTM_BR ();
|
||||
HTM_Txt (Txt_HIERARCHY_PLURAL_Abc[Level]);
|
||||
HTM_TH_End ();
|
||||
|
|
|
@ -67,10 +67,7 @@ void HieCfg_Title (Hie_PutLink_t PutLink,Hie_Level_t Level)
|
|||
The_GetSuffix ());
|
||||
|
||||
/* Logo and name */
|
||||
Lgo_DrawLogo (LevelLogo,
|
||||
Gbl.Hierarchy.Node[LevelLogo].HieCod,
|
||||
Gbl.Hierarchy.Node[LevelLogo].ShrtName,
|
||||
"ICO64x64",NULL);
|
||||
Lgo_DrawLogo (LevelLogo,&Gbl.Hierarchy.Node[LevelLogo],"ICO64x64");
|
||||
HTM_BR ();
|
||||
HTM_Txt (Gbl.Hierarchy.Node[Level].FullName);
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ void Ins_SeeInsWithPendingCtrs (void)
|
|||
|
||||
HTM_TD_Begin ("class=\"LM DAT_%s NOWRAP %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
Ins_DrawInstitLogoAndNameWithLink (&Ins,ActSeeCtr,"CM");
|
||||
Ins_DrawInstitLogoAndNameWithLink (&Ins,ActSeeCtr,"CM ICO16x16");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of pending centers (row[1]) */
|
||||
|
@ -217,7 +217,7 @@ void Ins_DrawInstitutionLogoWithLink (struct Hie_Node *Ins,const char *IconClass
|
|||
ParCod_PutPar (ParCod_Ins,Ins->HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Ins->FullName,"class=\"BT_LINK\"");
|
||||
}
|
||||
Lgo_DrawLogo (Hie_INS,Ins->HieCod,Ins->FullName,IconClass,NULL);
|
||||
Lgo_DrawLogo (Hie_INS,Ins,IconClass);
|
||||
if (PutLink == Hie_PUT_LINK)
|
||||
{
|
||||
HTM_BUTTON_End ();
|
||||
|
@ -230,7 +230,7 @@ void Ins_DrawInstitutionLogoWithLink (struct Hie_Node *Ins,const char *IconClass
|
|||
/*****************************************************************************/
|
||||
|
||||
void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action,
|
||||
const char *ClassLogo)
|
||||
const char *IconClass)
|
||||
{
|
||||
/***** Begin form *****/
|
||||
Frm_BeginFormGoTo (Action);
|
||||
|
@ -242,7 +242,7 @@ void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action
|
|||
Str_FreeGoToTitle ();
|
||||
|
||||
/***** Institution logo and name *****/
|
||||
Lgo_DrawLogo (Hie_INS,Ins->HieCod,Ins->ShrtName,"ICO16x16",ClassLogo);
|
||||
Lgo_DrawLogo (Hie_INS,Ins,IconClass);
|
||||
HTM_TxtF (" %s",Ins->FullName);
|
||||
|
||||
/***** End link *****/
|
||||
|
@ -381,7 +381,7 @@ static void Ins_ListOneInstitutionForSeeing (struct Hie_Node *Ins,unsigned NumIn
|
|||
/***** Institution logo and name *****/
|
||||
HTM_TD_Begin ("class=\"LM %s_%s %s\"",
|
||||
TxtClassStrong,The_GetSuffix (),BgColor);
|
||||
Ins_DrawInstitLogoAndNameWithLink (Ins,ActSeeCtr,"CM");
|
||||
Ins_DrawInstitLogoAndNameWithLink (Ins,ActSeeCtr,"CM ICO16x16");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of users who claim to belong to this institution *****/
|
||||
|
@ -648,39 +648,39 @@ void Ins_WriteInstitutionNameAndCty (long InsCod)
|
|||
/************************* Get data of an institution ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
bool Ins_GetInstitDataByCod (struct Hie_Node *Ins)
|
||||
bool Ins_GetInstitDataByCod (struct Hie_Node *Node)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
bool InsFound = false;
|
||||
bool Found = false;
|
||||
|
||||
/***** Clear data *****/
|
||||
Ins->PrtCod = -1L;
|
||||
Ins->Status = (Hie_Status_t) 0;
|
||||
Ins->RequesterUsrCod = -1L;
|
||||
Ins->ShrtName[0] =
|
||||
Ins->FullName[0] =
|
||||
Ins->WWW[0] = '\0';
|
||||
Ins->NumUsrsWhoClaimToBelong.Valid = false;
|
||||
Node->PrtCod = -1L;
|
||||
Node->Status = (Hie_Status_t) 0;
|
||||
Node->RequesterUsrCod = -1L;
|
||||
Node->ShrtName[0] =
|
||||
Node->FullName[0] =
|
||||
Node->WWW[0] = '\0';
|
||||
Node->NumUsrsWhoClaimToBelong.Valid = false;
|
||||
|
||||
/***** Check if institution code is correct *****/
|
||||
if (Ins->HieCod > 0)
|
||||
if (Node->HieCod > 0)
|
||||
{
|
||||
/***** Get data of an institution from database *****/
|
||||
if (Ins_DB_GetInsDataByCod (&mysql_res,Ins->HieCod)) // Institution found...
|
||||
if (Ins_DB_GetInsDataByCod (&mysql_res,Node->HieCod)) // Institution found...
|
||||
{
|
||||
/* Get institution data */
|
||||
Ins_GetInstitDataFromRow (mysql_res,Ins,
|
||||
Ins_GetInstitDataFromRow (mysql_res,Node,
|
||||
false); // Don't get number of users who claim to belong to this institution
|
||||
|
||||
/* Set return value */
|
||||
InsFound = true;
|
||||
Found = true;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
return InsFound;
|
||||
return Found;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -936,7 +936,7 @@ static void Ins_ListInstitutionsForEdition (void)
|
|||
|
||||
/* Institution logo */
|
||||
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins->FullName);
|
||||
Lgo_DrawLogo (Hie_INS,Ins->HieCod,Ins->ShrtName,"ICO20x20",NULL);
|
||||
Lgo_DrawLogo (Hie_INS,Ins,"ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Institution short name and full name */
|
||||
|
@ -1317,6 +1317,7 @@ static void Ins_PutFormToCreateInstitution (void)
|
|||
{
|
||||
Act_Action_t NextAction = ActUnk;
|
||||
const char *Names[Nam_NUM_SHRT_FULL_NAMES];
|
||||
struct Hie_Node Node;
|
||||
|
||||
/***** Set action depending on role *****/
|
||||
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
|
||||
|
@ -1344,7 +1345,9 @@ static void Ins_PutFormToCreateInstitution (void)
|
|||
|
||||
/***** Institution logo *****/
|
||||
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins_EditingIns->FullName);
|
||||
Lgo_DrawLogo (Hie_INS,-1L,"","ICO20x20",NULL);
|
||||
Node.HieCod = -1L;
|
||||
Node.ShrtName[0] = '\0';
|
||||
Lgo_DrawLogo (Hie_INS,&Node,"ICO20x20");
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Institution short name and full name *****/
|
||||
|
@ -1867,8 +1870,8 @@ static void Ins_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
|
|||
/***** Draw institutions as a list *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
HTM_TH_Empty (1);
|
||||
HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_INS],HTM_HEAD_LEFT);
|
||||
HTM_TH (TxtFigure ,HTM_HEAD_RIGHT);
|
||||
HTM_TH (Txt_HIERARCHY_SINGUL_Abc[Hie_INS],HTM_HEAD_LEFT );
|
||||
HTM_TH (TxtFigure ,HTM_HEAD_RIGHT);
|
||||
HTM_TR_End ();
|
||||
|
||||
for (NumIns = 1, NumOrder = 1, NumberLastRow = 0;
|
||||
|
@ -1895,8 +1898,7 @@ static void Ins_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
|
|||
"class=\"LM BT_LINK\"");
|
||||
if (Gbl.Usrs.Listing.WithPhotos)
|
||||
{
|
||||
Lgo_DrawLogo (Hie_INS,Ins.HieCod,Ins.ShrtName,
|
||||
"ICO40x40",NULL);
|
||||
Lgo_DrawLogo (Hie_INS,&Ins,"ICO40x40");
|
||||
HTM_NBSP ();
|
||||
}
|
||||
HTM_Txt (Ins.FullName);
|
||||
|
|
|
@ -41,7 +41,7 @@ void Ins_SeeInsWithPendingCtrs (void);
|
|||
|
||||
void Ins_DrawInstitutionLogoWithLink (struct Hie_Node *Ins,const char *IconClass);
|
||||
void Ins_DrawInstitLogoAndNameWithLink (struct Hie_Node *Ins,Act_Action_t Action,
|
||||
const char *ClassLogo);
|
||||
const char *IconClass);
|
||||
|
||||
void Ins_ShowInssOfCurrentCty (void);
|
||||
void Ins_EditInstitutions (void);
|
||||
|
@ -49,7 +49,7 @@ void Ins_GetBasicListOfInstitutions (long CtyCod);
|
|||
void Ins_GetFullListOfInstitutions (long CtyCod);
|
||||
|
||||
void Ins_WriteInstitutionNameAndCty (long InsCod);
|
||||
bool Ins_GetInstitDataByCod (struct Hie_Node *Ins);
|
||||
bool Ins_GetInstitDataByCod (struct Hie_Node *Node);
|
||||
void Ins_FlushCacheFullNameAndCtyOfInstitution (void);
|
||||
void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins,
|
||||
char CtyName[Nam_MAX_BYTES_FULL_NAME + 1]);
|
||||
|
|
|
@ -1518,8 +1518,7 @@ void Lay_WriteHeaderClassPhoto (Vie_ViewType_t ViewType)
|
|||
{
|
||||
if (ViewType == Vie_VIEW)
|
||||
HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie[Hie_INS].WWW);
|
||||
Lgo_DrawLogo (Hie_INS,Hie[Hie_INS].HieCod,Hie[Hie_INS].ShrtName,
|
||||
"ICO40x40",NULL);
|
||||
Lgo_DrawLogo (Hie_INS,&Hie[Hie_INS],"ICO40x40");
|
||||
if (ViewType == Vie_VIEW)
|
||||
HTM_A_End ();
|
||||
}
|
||||
|
@ -1570,8 +1569,7 @@ void Lay_WriteHeaderClassPhoto (Vie_ViewType_t ViewType)
|
|||
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
|
||||
" class=\"CLASSPHOTO_TITLE CLASSPHOTO_%s\"",
|
||||
Hie[Hie_DEG].WWW,The_GetSuffix ());
|
||||
Lgo_DrawLogo (Hie_DEG,Hie[Hie_DEG].HieCod,Hie[Hie_DEG].ShrtName,
|
||||
"ICO40x40",NULL);
|
||||
Lgo_DrawLogo (Hie_DEG,&Hie[Hie_DEG],"ICO40x40");
|
||||
if (ViewType == Vie_VIEW)
|
||||
HTM_A_End ();
|
||||
}
|
||||
|
@ -1644,7 +1642,7 @@ void Lay_IndentDependingOnLevel (unsigned Level,
|
|||
if (Level <= 1)
|
||||
return;
|
||||
|
||||
/***** Indent (from 1 to Level-1) *****/
|
||||
/***** Indent (from 2 to Level-1) *****/
|
||||
for (L = 2;
|
||||
L < Level;
|
||||
L++)
|
||||
|
|
200
swad_logo.c
200
swad_logo.c
|
@ -74,120 +74,118 @@ static void Lgo_PutIconToRemoveLogo (Act_Action_t ActionRem);
|
|||
/***************** Draw institution, center or degree logo *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Lgo_DrawLogo (Hie_Level_t Level,long HieCod,const char *AltText,
|
||||
const char *IconClass,const char *Class)
|
||||
void Lgo_DrawLogo (Hie_Level_t Level,const struct Hie_Node *Node,
|
||||
const char *IconClass)
|
||||
{
|
||||
static const char *HieIcon[Hie_NUM_LEVELS] =
|
||||
{
|
||||
[Hie_INS] = "university.svg",
|
||||
[Hie_CTR] = "building.svg",
|
||||
[Hie_DEG] = "graduation-cap.svg",
|
||||
[Hie_CRS] = "chalkboard-teacher.svg",
|
||||
};
|
||||
extern const char *Hie_Icons[Hie_NUM_LEVELS];
|
||||
const char *Folder = NULL; // To avoid warning
|
||||
char PathLogo[PATH_MAX + 1];
|
||||
bool LogoFound = false;
|
||||
long InsCod = HieCod;
|
||||
long CtrCod = HieCod;
|
||||
long DegCod = HieCod;
|
||||
long CrsCod = HieCod;
|
||||
long HieCod;
|
||||
long InsCod;
|
||||
long CtrCod;
|
||||
long DegCod;
|
||||
long CrsCod;
|
||||
char *URL;
|
||||
char *Icon;
|
||||
bool ClassNotEmpty;
|
||||
|
||||
/***** Path to logo *****/
|
||||
if (HieIcon[Level]) // Scope is correct
|
||||
switch (Level)
|
||||
{
|
||||
if (HieCod > 0) // Institution, center or degree exists
|
||||
{
|
||||
/* Course */
|
||||
|
||||
/* Degree */
|
||||
if (!LogoFound && Level >= Hie_DEG)
|
||||
case Hie_SYS:
|
||||
Ico_PutIcon (Hie_Icons[Hie_SYS],Ico_BLACK,Node->ShrtName,IconClass);
|
||||
break;
|
||||
case Hie_CTY:
|
||||
Cty_DrawCountryMap (Node,IconClass);
|
||||
break;
|
||||
case Hie_INS:
|
||||
case Hie_CTR:
|
||||
case Hie_DEG:
|
||||
case Hie_CRS:
|
||||
if (Node->HieCod > 0) // Institution, center, degree or course exists
|
||||
{
|
||||
Folder = Cfg_FOLDER_DEG;
|
||||
if (Level >= Hie_CRS)
|
||||
DegCod = Crs_DB_GetDegCodOfCourseByCod (CrsCod);
|
||||
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_DEG_PUBLIC,
|
||||
(unsigned) (DegCod % 100),
|
||||
(unsigned) DegCod,
|
||||
(unsigned) DegCod);
|
||||
LogoFound = Fil_CheckIfPathExists (PathLogo);
|
||||
HieCod =
|
||||
InsCod =
|
||||
CtrCod =
|
||||
DegCod =
|
||||
CrsCod = Node->HieCod;
|
||||
|
||||
/* Course */
|
||||
|
||||
/* Degree */
|
||||
if (!LogoFound && Level >= Hie_DEG)
|
||||
{
|
||||
Folder = Cfg_FOLDER_DEG;
|
||||
if (Level >= Hie_CRS)
|
||||
DegCod = Crs_DB_GetDegCodOfCourseByCod (CrsCod);
|
||||
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_DEG_PUBLIC,
|
||||
(unsigned) (DegCod % 100),
|
||||
(unsigned) DegCod,
|
||||
(unsigned) DegCod);
|
||||
LogoFound = Fil_CheckIfPathExists (PathLogo);
|
||||
if (LogoFound)
|
||||
HieCod = DegCod;
|
||||
}
|
||||
|
||||
/* Center */
|
||||
if (!LogoFound && Level >= Hie_CTR)
|
||||
{
|
||||
Folder = Cfg_FOLDER_CTR;
|
||||
if (Level >= Hie_DEG)
|
||||
CtrCod = Deg_DB_GetCtrCodOfDegreeByCod (DegCod);
|
||||
else
|
||||
CtrCod = HieCod;
|
||||
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_CTR_PUBLIC,
|
||||
(unsigned) (CtrCod % 100),
|
||||
(unsigned) CtrCod,
|
||||
(unsigned) CtrCod);
|
||||
LogoFound = Fil_CheckIfPathExists (PathLogo);
|
||||
if (LogoFound)
|
||||
HieCod = CtrCod;
|
||||
}
|
||||
|
||||
/* Institution */
|
||||
if (!LogoFound)
|
||||
{
|
||||
Folder = Cfg_FOLDER_INS;
|
||||
if (Level >= Hie_CTR)
|
||||
InsCod = Ctr_DB_GetInsCodOfCenterByCod (CtrCod);
|
||||
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_INS_PUBLIC,
|
||||
(unsigned) (InsCod % 100),
|
||||
(unsigned) InsCod,
|
||||
(unsigned) InsCod);
|
||||
LogoFound = Fil_CheckIfPathExists (PathLogo);
|
||||
if (LogoFound)
|
||||
HieCod = InsCod;
|
||||
}
|
||||
|
||||
/***** Draw logo *****/
|
||||
if (LogoFound)
|
||||
HieCod = DegCod;
|
||||
}
|
||||
{
|
||||
if (asprintf (&URL,"%s/%s/%02u/%u/logo",
|
||||
Cfg_URL_SWAD_PUBLIC,Folder,
|
||||
(unsigned) (HieCod % 100),
|
||||
(unsigned) HieCod) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
if (asprintf (&Icon,"%u.png",(unsigned) HieCod) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/* Center */
|
||||
if (!LogoFound && Level >= Hie_CTR)
|
||||
{
|
||||
Folder = Cfg_FOLDER_CTR;
|
||||
if (Level >= Hie_DEG)
|
||||
CtrCod = Deg_DB_GetCtrCodOfDegreeByCod (DegCod);
|
||||
HTM_IMG (URL,Icon,Node->FullName,
|
||||
"class=\"%s\"",IconClass);
|
||||
free (Icon);
|
||||
free (URL);
|
||||
}
|
||||
else
|
||||
CtrCod = HieCod;
|
||||
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_CTR_PUBLIC,
|
||||
(unsigned) (CtrCod % 100),
|
||||
(unsigned) CtrCod,
|
||||
(unsigned) CtrCod);
|
||||
LogoFound = Fil_CheckIfPathExists (PathLogo);
|
||||
if (LogoFound)
|
||||
HieCod = CtrCod;
|
||||
HTM_IMG (Cfg_URL_ICON_PUBLIC,Hie_Icons[Level],Node->ShrtName,
|
||||
"class=\"%s ICO_%s_%s\"",
|
||||
IconClass,
|
||||
Ico_GetPreffix (Ico_BLACK),The_GetSuffix ());
|
||||
}
|
||||
|
||||
/* Institution */
|
||||
if (!LogoFound)
|
||||
{
|
||||
Folder = Cfg_FOLDER_INS;
|
||||
if (Level >= Hie_CTR)
|
||||
InsCod = Ctr_DB_GetInsCodOfCenterByCod (CtrCod);
|
||||
snprintf (PathLogo,sizeof (PathLogo),"%s/%02u/%u/logo/%u.png",
|
||||
Cfg_PATH_INS_PUBLIC,
|
||||
(unsigned) (InsCod % 100),
|
||||
(unsigned) InsCod,
|
||||
(unsigned) InsCod);
|
||||
LogoFound = Fil_CheckIfPathExists (PathLogo);
|
||||
if (LogoFound)
|
||||
HieCod = InsCod;
|
||||
}
|
||||
|
||||
/***** Draw logo *****/
|
||||
ClassNotEmpty = false;
|
||||
if (Class)
|
||||
if (Class[0])
|
||||
ClassNotEmpty = true;
|
||||
|
||||
if (LogoFound)
|
||||
{
|
||||
if (asprintf (&URL,"%s/%s/%02u/%u/logo",
|
||||
Cfg_URL_SWAD_PUBLIC,Folder,
|
||||
(unsigned) (HieCod % 100),
|
||||
(unsigned) HieCod) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
if (asprintf (&Icon,"%u.png",(unsigned) HieCod) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
HTM_IMG (URL,Icon,AltText,
|
||||
"class=\"%s%s%s\"",
|
||||
IconClass,
|
||||
ClassNotEmpty ? " " :
|
||||
"",
|
||||
ClassNotEmpty ? Class :
|
||||
"");
|
||||
free (Icon);
|
||||
free (URL);
|
||||
}
|
||||
else
|
||||
HTM_IMG (Cfg_URL_ICON_PUBLIC,HieIcon[Level],AltText,
|
||||
"class=\"%s ICO_%s_%s%s%s\"",
|
||||
IconClass,
|
||||
Ico_GetPreffix (Ico_BLACK),The_GetSuffix (),
|
||||
ClassNotEmpty ? " " :
|
||||
"",
|
||||
ClassNotEmpty ? Class :
|
||||
"");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
/***************************** Public prototypes *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Lgo_DrawLogo (Hie_Level_t Level,long HieCod,const char *AltText,
|
||||
const char *IconClass,const char *Class);
|
||||
void Lgo_DrawLogo (Hie_Level_t Level,const struct Hie_Node *Node,
|
||||
const char *IconClass);
|
||||
void Lgo_PutIconToChangeLogo (Hie_Level_t Level);
|
||||
void Lgo_RequestLogo (Hie_Level_t Level);
|
||||
void Lgo_ReceiveLogo (Hie_Level_t Level);
|
||||
|
|
|
@ -330,7 +330,8 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod)
|
|||
{
|
||||
case Not_LIST_BRIEF_NOTICES:
|
||||
/***** Get notices from database *****/
|
||||
NumNotices = Not_DB_GetActiveNotices (&mysql_res,Gbl.Hierarchy.Node[Hie_CRS].HieCod);
|
||||
NumNotices = Not_DB_GetActiveNotices (&mysql_res,
|
||||
Gbl.Hierarchy.Node[Hie_CRS].HieCod);
|
||||
break;
|
||||
case Not_LIST_FULL_NOTICES:
|
||||
/***** Get notices from database *****/
|
||||
|
|
|
@ -2259,11 +2259,10 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
|
|||
The_GetSuffix (),
|
||||
The_GetColorRows ());
|
||||
if (SeeOrPrint == Pho_DEGREES_SEE)
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT");
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT ICO20x20");
|
||||
else // Pho_DEGREES_PRINT
|
||||
{
|
||||
Lgo_DrawLogo (Hie_DEG,Deg.HieCod,Deg.ShrtName,
|
||||
"ICO20x20","CT");
|
||||
Lgo_DrawLogo (Hie_DEG,&Deg,"CT ICO20x20");
|
||||
HTM_TxtF (" %s",Deg.FullName);
|
||||
}
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -1654,10 +1654,8 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
|
|||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"LM\" style=\"width:%upx;\"",Rec_DEGREE_LOGO_SIZE);
|
||||
Lgo_DrawLogo (Hie_DEG,
|
||||
Gbl.Hierarchy.Node[Hie_DEG].HieCod,
|
||||
Gbl.Hierarchy.Node[Hie_DEG].ShrtName,
|
||||
"ICO64x64",NULL);
|
||||
Lgo_DrawLogo (Hie_DEG,&Gbl.Hierarchy.Node[Hie_DEG],
|
||||
"ICO64x64");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"REC_HEAD CM\"");
|
||||
|
@ -2534,8 +2532,7 @@ static void Rec_ShowInstitutionInHead (struct Hie_Node *Ins,
|
|||
ParCod_PutPar (ParCod_Ins,Ins->HieCod);
|
||||
HTM_BUTTON_Submit_Begin (Ins->FullName,"class=\"BT_LINK\"");
|
||||
}
|
||||
Lgo_DrawLogo (Hie_INS,Ins->HieCod,Ins->ShrtName,
|
||||
"ICO",NULL);
|
||||
Lgo_DrawLogo (Hie_INS,Ins,"ICO");
|
||||
if (PutFormLinks == Frm_PUT_FORM)
|
||||
{
|
||||
HTM_BUTTON_End ();
|
||||
|
|
|
@ -3053,7 +3053,7 @@ static void Sta_WriteInstit (long InsCod)
|
|||
The_GetSuffix (),Ins.FullName);
|
||||
|
||||
/***** Form to go to institution *****/
|
||||
Ins_DrawInstitLogoAndNameWithLink (&Ins,ActSeeInsInf,"CT");
|
||||
Ins_DrawInstitLogoAndNameWithLink (&Ins,ActSeeInsInf,"CT ICO16x16");
|
||||
}
|
||||
else // Hit with no institution selected
|
||||
{
|
||||
|
@ -3144,7 +3144,7 @@ static void Sta_WriteCenter (long CtrCod)
|
|||
The_GetSuffix (),Ctr.FullName);
|
||||
|
||||
/***** Form to go to center *****/
|
||||
Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeCtrInf,"CT");
|
||||
Ctr_DrawCenterLogoAndNameWithLink (&Ctr,ActSeeCtrInf,"CT ICO16x16");
|
||||
}
|
||||
else // Hit with no center selected
|
||||
{
|
||||
|
@ -3235,7 +3235,7 @@ static void Sta_WriteDegree (long DegCod)
|
|||
The_GetSuffix (),Deg.FullName);
|
||||
|
||||
/***** Form to go to degree *****/
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT");
|
||||
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf,"CT ICO20x20");
|
||||
}
|
||||
else // Hit with no degree selected
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue