Version20.30

This commit is contained in:
acanas 2021-02-11 23:27:48 +01:00
parent 97a99ecbee
commit a436a97d82
13 changed files with 268 additions and 295 deletions

View File

@ -3336,10 +3336,7 @@ int swad__getNotifications (struct soap *soap,
Ntf_NotifyEvent_t NotifyEvent; Ntf_NotifyEvent_t NotifyEvent;
long EventTime; long EventTime;
char PhotoURL[Cns_MAX_BYTES_WWW + 1]; char PhotoURL[Cns_MAX_BYTES_WWW + 1];
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
long Cod; long Cod;
struct For_Forum ForumSelected; struct For_Forum ForumSelected;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1]; char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@ -3424,13 +3421,13 @@ int swad__getNotifications (struct soap *soap,
getNotificationsOut->notificationsArray.__ptr[NumNotif].eventTime = EventTime; getNotificationsOut->notificationsArray.__ptr[NumNotif].eventTime = EventTime;
/* Get course (row[7]) */ /* Get course (row[7]) */
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[7]); Hie.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[7]);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
/* Get user's code of the user who caused the event (row[3]) */ /* Get user's code of the user who caused the event (row[3]) */
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[3]); Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[3]);
if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Crs.CrsCod)) // Get some user's data from database if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Hie.Crs.CrsCod)) // Get some user's data from database
{ {
getNotificationsOut->notificationsArray.__ptr[NumNotif].userNickname = getNotificationsOut->notificationsArray.__ptr[NumNotif].userNickname =
(char *) soap_malloc (soap,Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1); (char *) soap_malloc (soap,Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1);
@ -3473,16 +3470,16 @@ int swad__getNotifications (struct soap *soap,
} }
/* Get institution (row[4]) */ /* Get institution (row[4]) */
Ins.InsCod = Str_ConvertStrCodToLongCod (row[4]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[4]);
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
/* Get centre (row[5]) */ /* Get centre (row[5]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[5]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[5]);
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Hie.Ctr);
/* Get degree (row[6]) */ /* Get degree (row[6]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[6]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[6]);
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
/* Get message/post/... code (row[8]) */ /* Get message/post/... code (row[8]) */
Cod = Str_ConvertStrCodToLongCod (row[8]); Cod = Str_ConvertStrCodToLongCod (row[8]);
@ -3501,18 +3498,18 @@ int swad__getNotifications (struct soap *soap,
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s", sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Forum,ForumName); Txt_Forum,ForumName);
} }
else if (Crs.CrsCod > 0) else if (Hie.Crs.CrsCod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s", sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Course,Crs.ShrtName); Txt_Course,Hie.Crs.ShrtName);
else if (Deg.DegCod > 0) else if (Hie.Deg.DegCod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s", sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Degree,Deg.ShrtName); Txt_Degree,Hie.Deg.ShrtName);
else if (Ctr.CtrCod > 0) else if (Hie.Ctr.CtrCod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s", sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Centre,Ctr.ShrtName); Txt_Centre,Hie.Ctr.ShrtName);
else if (Ins.InsCod > 0) else if (Hie.Ins.InsCod > 0)
sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s", sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s",
Txt_Institution,Ins.ShrtName); Txt_Institution,Hie.Ins.ShrtName);
else else
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"-", Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"-",
Ntf_MAX_BYTES_NOTIFY_LOCATION); Ntf_MAX_BYTES_NOTIFY_LOCATION);
@ -3525,7 +3522,7 @@ int swad__getNotifications (struct soap *soap,
/* Get summary and content */ /* Get summary and content */
ContentStr = NULL; ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent, Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
Cod,Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod, Cod,Hie.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod,
true); true);
Length = strlen (SummaryStr); Length = strlen (SummaryStr);

View File

@ -601,7 +601,7 @@ TODO: DNI de un estudiante sale err
TODO: BUG: Cuando un tipo de grupo sólo tiene un grupo, inscribirse es voluntario, el estudiante sólo puede pertenecer a un grupo, y se inscribe en él, debería poder desapuntarse. Ahora no puede. TODO: BUG: Cuando un tipo de grupo sólo tiene un grupo, inscribirse es voluntario, el estudiante sólo puede pertenecer a un grupo, y se inscribe en él, debería poder desapuntarse. Ahora no puede.
TODO: Salvador Romero Cortés: @acanas opción para editar posts TODO: Salvador Romero Cortés: @acanas opción para editar posts
Version 20.30: Feb 11, 2021 Code refactoring in hierarchy. (? lines) Version 20.30: Feb 11, 2021 Code refactoring in hierarchy. (305853 lines)
Version 20.29.3: Feb 11, 2021 Code refactoring in timeline. (305826 lines) Version 20.29.3: Feb 11, 2021 Code refactoring in timeline. (305826 lines)
Version 20.29.2: Feb 11, 2021 Code refactoring in timeline. (305806 lines) Version 20.29.2: Feb 11, 2021 Code refactoring in timeline. (305806 lines)
Version 20.29.1: Feb 11, 2021 Code refactoring in timeline. (305780 lines) Version 20.29.1: Feb 11, 2021 Code refactoring in timeline. (305780 lines)

View File

@ -155,11 +155,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES]; extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES];
extern const char *Txt_My_courses; extern const char *Txt_My_courses;
extern const char *Txt_System; extern const char *Txt_System;
struct Cty_Countr Cty; struct Hie_Hierarchy Hie;
struct Ins_Instit Ins;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
bool IsLastItemInLevel[1 + 5]; bool IsLastItemInLevel[1 + 5];
bool Highlight; // Highlight because degree, course, etc. is selected bool Highlight; // Highlight because degree, course, etc. is selected
MYSQL_RES *mysql_resCty; MYSQL_RES *mysql_resCty;
@ -218,32 +214,32 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCty); row = mysql_fetch_row (mysql_resCty);
/***** Get data of this institution *****/ /***** Get data of this institution *****/
Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Cty_GetDataOfCountryByCod (&Cty)) if (!Cty_GetDataOfCountryByCod (&Hie.Cty))
Lay_ShowErrorAndExit ("Country not found."); Lay_ShowErrorAndExit ("Country not found.");
/***** Write link to country *****/ /***** Write link to country *****/
Highlight = (Gbl.Hierarchy.Ins.InsCod <= 0 && Highlight = (Gbl.Hierarchy.Ins.InsCod <= 0 &&
Gbl.Hierarchy.Cty.CtyCod == Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod == Hie.Cty.CtyCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight : HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal); ClassNormal);
IsLastItemInLevel[1] = (NumCty == NumCtys - 1); IsLastItemInLevel[1] = (NumCty == NumCtys - 1);
Lay_IndentDependingOnLevel (1,IsLastItemInLevel); Lay_IndentDependingOnLevel (1,IsLastItemInLevel);
Frm_StartForm (ActMyCrs); Frm_StartForm (ActMyCrs);
Cty_PutParamCtyCod (Cty.CtyCod); Cty_PutParamCtyCod (Hie.Cty.CtyCod);
HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeCtyInf), HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeCtyInf),
Highlight ? ClassHighlight : Highlight ? ClassHighlight :
ClassNormal, ClassNormal,
NULL); NULL);
Cty_DrawCountryMap (&Cty,"ICO16x16"); Cty_DrawCountryMap (&Hie.Cty,"ICO16x16");
HTM_TxtF ("&nbsp;%s",Cty.Name[Gbl.Prefs.Language]); HTM_TxtF ("&nbsp;%s",Hie.Cty.Name[Gbl.Prefs.Language]);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_LI_End (); HTM_LI_End ();
/***** Get my institutions in this country *****/ /***** Get my institutions in this country *****/
NumInss = (unsigned) Usr_GetInssFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod, NumInss = (unsigned) Usr_GetInssFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod,
Cty.CtyCod,&mysql_resIns); Hie.Cty.CtyCod,&mysql_resIns);
for (NumIns = 0; for (NumIns = 0;
NumIns < NumInss; NumIns < NumInss;
NumIns++) NumIns++)
@ -252,32 +248,32 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resIns); row = mysql_fetch_row (mysql_resIns);
/***** Get data of this institution *****/ /***** Get data of this institution *****/
Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ins_GetDataOfInstitutionByCod (&Ins)) if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins))
Lay_ShowErrorAndExit ("Institution not found."); Lay_ShowErrorAndExit ("Institution not found.");
/***** Write link to institution *****/ /***** Write link to institution *****/
Highlight = (Gbl.Hierarchy.Ctr.CtrCod <= 0 && Highlight = (Gbl.Hierarchy.Ctr.CtrCod <= 0 &&
Gbl.Hierarchy.Ins.InsCod == Ins.InsCod); Gbl.Hierarchy.Ins.InsCod == Hie.Ins.InsCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight : HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal); ClassNormal);
IsLastItemInLevel[2] = (NumIns == NumInss - 1); IsLastItemInLevel[2] = (NumIns == NumInss - 1);
Lay_IndentDependingOnLevel (2,IsLastItemInLevel); Lay_IndentDependingOnLevel (2,IsLastItemInLevel);
Frm_StartForm (ActMyCrs); Frm_StartForm (ActMyCrs);
Ins_PutParamInsCod (Ins.InsCod); Ins_PutParamInsCod (Hie.Ins.InsCod);
HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeInsInf), HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeInsInf),
Highlight ? ClassHighlight : Highlight ? ClassHighlight :
ClassNormal, ClassNormal,
NULL); NULL);
Lgo_DrawLogo (Hie_Lvl_INS,Ins.InsCod,Ins.ShrtName,16,NULL,true); Lgo_DrawLogo (Hie_Lvl_INS,Hie.Ins.InsCod,Hie.Ins.ShrtName,16,NULL,true);
HTM_TxtF ("&nbsp;%s",Ins.ShrtName); HTM_TxtF ("&nbsp;%s",Hie.Ins.ShrtName);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_LI_End (); HTM_LI_End ();
/***** Get my centres in this institution *****/ /***** Get my centres in this institution *****/
NumCtrs = (unsigned) Usr_GetCtrsFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod, NumCtrs = (unsigned) Usr_GetCtrsFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod,
Ins.InsCod,&mysql_resCtr); Hie.Ins.InsCod,&mysql_resCtr);
for (NumCtr = 0; for (NumCtr = 0;
NumCtr < NumCtrs; NumCtr < NumCtrs;
NumCtr++) NumCtr++)
@ -286,32 +282,32 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCtr); row = mysql_fetch_row (mysql_resCtr);
/***** Get data of this centre *****/ /***** Get data of this centre *****/
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ctr_GetDataOfCentreByCod (&Ctr)) if (!Ctr_GetDataOfCentreByCod (&Hie.Ctr))
Lay_ShowErrorAndExit ("Centre not found."); Lay_ShowErrorAndExit ("Centre not found.");
/***** Write link to centre *****/ /***** Write link to centre *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CTR && Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CTR &&
Gbl.Hierarchy.Ctr.CtrCod == Ctr.CtrCod); Gbl.Hierarchy.Ctr.CtrCod == Hie.Ctr.CtrCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight : HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal); ClassNormal);
IsLastItemInLevel[3] = (NumCtr == NumCtrs - 1); IsLastItemInLevel[3] = (NumCtr == NumCtrs - 1);
Lay_IndentDependingOnLevel (3,IsLastItemInLevel); Lay_IndentDependingOnLevel (3,IsLastItemInLevel);
Frm_StartForm (ActMyCrs); Frm_StartForm (ActMyCrs);
Ctr_PutParamCtrCod (Ctr.CtrCod); Ctr_PutParamCtrCod (Hie.Ctr.CtrCod);
HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeCtrInf), HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeCtrInf),
Highlight ? ClassHighlight : Highlight ? ClassHighlight :
ClassNormal, ClassNormal,
NULL); NULL);
Lgo_DrawLogo (Hie_Lvl_CTR,Ctr.CtrCod,Ctr.ShrtName,16,NULL,true); Lgo_DrawLogo (Hie_Lvl_CTR,Hie.Ctr.CtrCod,Hie.Ctr.ShrtName,16,NULL,true);
HTM_TxtF ("&nbsp;%s",Ctr.ShrtName); HTM_TxtF ("&nbsp;%s",Hie.Ctr.ShrtName);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_LI_End (); HTM_LI_End ();
/***** Get my degrees in this centre *****/ /***** Get my degrees in this centre *****/
NumDegs = (unsigned) Usr_GetDegsFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod, NumDegs = (unsigned) Usr_GetDegsFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod,
Ctr.CtrCod,&mysql_resDeg); Hie.Ctr.CtrCod,&mysql_resDeg);
for (NumDeg = 0; for (NumDeg = 0;
NumDeg < NumDegs; NumDeg < NumDegs;
NumDeg++) NumDeg++)
@ -320,32 +316,32 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resDeg); row = mysql_fetch_row (mysql_resDeg);
/***** Get data of this degree *****/ /***** Get data of this degree *****/
Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Hie.Deg))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
/***** Write link to degree *****/ /***** Write link to degree *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_DEG && Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_DEG &&
Gbl.Hierarchy.Deg.DegCod == Deg.DegCod); Gbl.Hierarchy.Deg.DegCod == Hie.Deg.DegCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight : HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal); ClassNormal);
IsLastItemInLevel[4] = (NumDeg == NumDegs - 1); IsLastItemInLevel[4] = (NumDeg == NumDegs - 1);
Lay_IndentDependingOnLevel (4,IsLastItemInLevel); Lay_IndentDependingOnLevel (4,IsLastItemInLevel);
Frm_StartForm (ActMyCrs); Frm_StartForm (ActMyCrs);
Deg_PutParamDegCod (Deg.DegCod); Deg_PutParamDegCod (Hie.Deg.DegCod);
HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeDegInf), HTM_BUTTON_SUBMIT_Begin (Act_GetActionText (ActSeeDegInf),
Highlight ? ClassHighlight : Highlight ? ClassHighlight :
ClassNormal, ClassNormal,
NULL); NULL);
Lgo_DrawLogo (Hie_Lvl_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true); Lgo_DrawLogo (Hie_Lvl_DEG,Hie.Deg.DegCod,Hie.Deg.ShrtName,16,NULL,true);
HTM_TxtF ("&nbsp;%s",Deg.ShrtName); HTM_TxtF ("&nbsp;%s",Hie.Deg.ShrtName);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_LI_End (); HTM_LI_End ();
/***** Get my courses in this degree *****/ /***** Get my courses in this degree *****/
NumCrss = (unsigned) Usr_GetCrssFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod, NumCrss = (unsigned) Usr_GetCrssFromUsr (Gbl.Usrs.Me.UsrDat.UsrCod,
Deg.DegCod,&mysql_resCrs); Hie.Deg.DegCod,&mysql_resCrs);
for (NumCrs = 0; for (NumCrs = 0;
NumCrs < NumCrss; NumCrs < NumCrss;
NumCrs++) NumCrs++)
@ -354,31 +350,31 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
row = mysql_fetch_row (mysql_resCrs); row = mysql_fetch_row (mysql_resCrs);
/***** Get data of this course *****/ /***** Get data of this course *****/
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Crs_GetDataOfCourseByCod (&Crs)) if (!Crs_GetDataOfCourseByCod (&Hie.Crs))
Lay_ShowErrorAndExit ("Course not found."); Lay_ShowErrorAndExit ("Course not found.");
/***** Write link to course *****/ /***** Write link to course *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CRS && Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CRS &&
Gbl.Hierarchy.Crs.CrsCod == Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod == Hie.Crs.CrsCod);
HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight : HTM_LI_Begin ("class=\"%s\"",Highlight ? ClassHighlight :
ClassNormal); ClassNormal);
IsLastItemInLevel[5] = (NumCrs == NumCrss - 1); IsLastItemInLevel[5] = (NumCrs == NumCrss - 1);
Lay_IndentDependingOnLevel (5,IsLastItemInLevel); Lay_IndentDependingOnLevel (5,IsLastItemInLevel);
Frm_StartForm (ActMyCrs); Frm_StartForm (ActMyCrs);
Crs_PutParamCrsCod (Crs.CrsCod); Crs_PutParamCrsCod (Hie.Crs.CrsCod);
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Crs.ShrtName), HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Hie.Crs.ShrtName),
Highlight ? ClassHighlight : Highlight ? ClassHighlight :
ClassNormal, ClassNormal,
NULL); NULL);
Hie_FreeGoToMsg (); Hie_FreeGoToMsg ();
Ico_PutIcon ("chalkboard-teacher.svg",Crs.FullName,"ICO16x16"); Ico_PutIcon ("chalkboard-teacher.svg",Hie.Crs.FullName,"ICO16x16");
HTM_TxtF ("&nbsp;%s",Crs.ShrtName); HTM_TxtF ("&nbsp;%s",Hie.Crs.ShrtName);
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
/***** Put link to register students *****/ /***** Put link to register students *****/
Enr_PutButtonInlineToRegisterStds (Crs.CrsCod); Enr_PutButtonInlineToRegisterStds (Hie.Crs.CrsCod);
HTM_LI_End (); HTM_LI_End ();
} }

View File

@ -37,6 +37,7 @@
#include "swad_exam_announcement.h" #include "swad_exam_announcement.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_logo.h" #include "swad_logo.h"
#include "swad_notification.h" #include "swad_notification.h"
@ -1762,22 +1763,20 @@ static void ExaAnn_GetNotifContentExamAnn (const struct ExaAnn_ExamAnnouncements
extern const char *Txt_EXAM_ANNOUNCEMENT_Material_allowed; extern const char *Txt_EXAM_ANNOUNCEMENT_Material_allowed;
extern const char *Txt_EXAM_ANNOUNCEMENT_Other_information; extern const char *Txt_EXAM_ANNOUNCEMENT_Other_information;
extern const char *Txt_hours_ABBREVIATION; extern const char *Txt_hours_ABBREVIATION;
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Deg_Degree Deg;
struct Crs_Course Crs;
char StrExamDate[Cns_MAX_BYTES_DATE + 1]; char StrExamDate[Cns_MAX_BYTES_DATE + 1];
/***** Get data of course *****/ /***** Get data of course *****/
Crs.CrsCod = ExamAnns->ExamAnn.CrsCod; Hie.Crs.CrsCod = ExamAnns->ExamAnn.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg.DegCod = Crs.DegCod; Hie.Deg.DegCod = Hie.Crs.DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
/***** Get data of institution *****/ /***** Get data of institution *****/
Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Deg.DegCod); Hie.Ins.InsCod = Deg_GetInsCodOfDegreeByCod (Hie.Deg.DegCod);
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
/***** Convert struct date to a date string *****/ /***** Convert struct date to a date string *****/
Dat_ConvDateToDateStr (&ExamAnns->ExamAnn.ExamDate,StrExamDate); Dat_ConvDateToDateStr (&ExamAnns->ExamAnn.ExamDate,StrExamDate);
@ -1798,8 +1797,8 @@ static void ExaAnn_GetNotifContentExamAnn (const struct ExaAnn_ExamAnnouncements
"%s: %s<br />" "%s: %s<br />"
"%s: %s<br />" "%s: %s<br />"
"%s: %s", "%s: %s",
Txt_Institution,Ins.FullName, Txt_Institution,Hie.Ins.FullName,
Txt_Degree,Deg.FullName, Txt_Degree,Hie.Deg.FullName,
Txt_EXAM_ANNOUNCEMENT_Course,ExamAnns->ExamAnn.CrsFullName, Txt_EXAM_ANNOUNCEMENT_Course,ExamAnns->ExamAnn.CrsFullName,
Txt_EXAM_ANNOUNCEMENT_Year_or_semester,Txt_YEAR_OF_DEGREE[ExamAnns->ExamAnn.Year], Txt_EXAM_ANNOUNCEMENT_Year_or_semester,Txt_YEAR_OF_DEGREE[ExamAnns->ExamAnn.Year],
Txt_EXAM_ANNOUNCEMENT_Session,ExamAnns->ExamAnn.Session, Txt_EXAM_ANNOUNCEMENT_Session,ExamAnns->ExamAnn.Session,

View File

@ -6848,10 +6848,7 @@ static void Brw_WriteCurrentClipboard (void)
extern const char *Txt_folder; extern const char *Txt_folder;
extern const char *Txt_link; extern const char *Txt_link;
extern const char *Txt_all_files_inside_the_root_folder; extern const char *Txt_all_files_inside_the_root_folder;
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
struct GroupData GrpDat; struct GroupData GrpDat;
struct Prj_Project Prj; struct Prj_Project Prj;
struct UsrData UsrDat; struct UsrData UsrDat;
@ -6873,151 +6870,151 @@ static void Brw_WriteCurrentClipboard (void)
switch (Gbl.FileBrowser.Clipboard.FileBrowser) switch (Gbl.FileBrowser.Clipboard.FileBrowser)
{ {
case Brw_ADMI_DOC_INS: case Brw_ADMI_DOC_INS:
Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
Txt_institution,Ins.ShrtName); Txt_institution,Hie.Ins.ShrtName);
break; break;
case Brw_ADMI_SHR_INS: case Brw_ADMI_SHR_INS:
Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
Txt_institution,Ins.ShrtName); Txt_institution,Hie.Ins.ShrtName);
break; break;
case Brw_ADMI_DOC_CTR: case Brw_ADMI_DOC_CTR:
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Hie.Ctr);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
Txt_centre,Ctr.ShrtName); Txt_centre,Hie.Ctr.ShrtName);
break; break;
case Brw_ADMI_SHR_CTR: case Brw_ADMI_SHR_CTR:
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Hie.Ctr);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
Txt_centre,Ctr.ShrtName); Txt_centre,Hie.Ctr.ShrtName);
break; break;
case Brw_ADMI_DOC_DEG: case Brw_ADMI_DOC_DEG:
Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
Txt_degree,Deg.ShrtName); Txt_degree,Hie.Deg.ShrtName);
break; break;
case Brw_ADMI_SHR_DEG: case Brw_ADMI_SHR_DEG:
Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
Txt_degree,Deg.ShrtName); Txt_degree,Hie.Deg.ShrtName);
break; break;
case Brw_ADMI_DOC_CRS: case Brw_ADMI_DOC_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
Txt_course,Crs.ShrtName); Txt_course,Hie.Crs.ShrtName);
break; break;
case Brw_ADMI_DOC_GRP: case Brw_ADMI_DOC_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Hie.Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_documents_management_area, Txt_documents_management_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName); Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break; break;
case Brw_ADMI_TCH_CRS: case Brw_ADMI_TCH_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_teachers_files_area, Txt_teachers_files_area,
Txt_course,Crs.ShrtName); Txt_course,Hie.Crs.ShrtName);
break; break;
case Brw_ADMI_TCH_GRP: case Brw_ADMI_TCH_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Hie.Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_teachers_files_area, Txt_teachers_files_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName); Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break; break;
case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
Txt_course,Crs.ShrtName); Txt_course,Hie.Crs.ShrtName);
break; break;
case Brw_ADMI_SHR_GRP: case Brw_ADMI_SHR_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Hie.Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_shared_files_area, Txt_shared_files_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName); Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break; break;
case Brw_ADMI_ASG_USR: case Brw_ADMI_ASG_USR:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_assignments_area, Txt_assignments_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName); Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break; break;
case Brw_ADMI_WRK_USR: case Brw_ADMI_WRK_USR:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_works_area, Txt_works_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName); Txt_user[Gbl.Usrs.Me.UsrDat.Sex],Gbl.Usrs.Me.UsrDat.FullName);
break; break;
case Brw_ADMI_ASG_CRS: case Brw_ADMI_ASG_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_assignments_area, Txt_assignments_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName); Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);
break; break;
case Brw_ADMI_WRK_CRS: case Brw_ADMI_WRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Txt_works_area, Txt_works_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_user[UsrDat.Sex],UsrDat.FullName); Txt_user[UsrDat.Sex],UsrDat.FullName);
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);
break; break;
@ -7026,33 +7023,33 @@ static void Brw_WriteCurrentClipboard (void)
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod; Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
Crs.CrsCod = Prj.CrsCod; Hie.Crs.CrsCod = Prj.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents : Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents :
Txt_project_assessment, Txt_project_assessment,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_project,Prj.Title); Txt_project,Prj.Title);
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
break; break;
case Brw_ADMI_MRK_CRS: case Brw_ADMI_MRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>", "%s, %s <strong>%s</strong>",
Txt_marks_management_area, Txt_marks_management_area,
Txt_course,Crs.ShrtName); Txt_course,Hie.Crs.ShrtName);
break; break;
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Hie.Crs.CrsCod = GrpDat.CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
snprintf (TxtClipboardZone,sizeof (TxtClipboardZone), snprintf (TxtClipboardZone,sizeof (TxtClipboardZone),
"%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>", "%s, %s <strong>%s</strong>, %s <strong>%s %s</strong>",
Txt_marks_management_area, Txt_marks_management_area,
Txt_course,Crs.ShrtName, Txt_course,Hie.Crs.ShrtName,
Txt_group,GrpDat.GrpTypName,GrpDat.GrpName); Txt_group,GrpDat.GrpTypName,GrpDat.GrpName);
break; break;
case Brw_ADMI_BRF_USR: case Brw_ADMI_BRF_USR:
@ -7864,10 +7861,7 @@ static void Brw_PasteClipboard (void)
extern const char *Txt_Links_copied; extern const char *Txt_Links_copied;
extern const char *Txt_Folders_copied; extern const char *Txt_Folders_copied;
extern const char *Txt_You_can_not_paste_file_or_folder_here; extern const char *Txt_You_can_not_paste_file_or_folder_here;
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
struct GroupData GrpDat; struct GroupData GrpDat;
struct UsrData UsrDat; struct UsrData UsrDat;
long PrjCod; long PrjCod;
@ -7888,39 +7882,39 @@ static void Brw_PasteClipboard (void)
{ {
case Brw_ADMI_DOC_INS: case Brw_ADMI_DOC_INS:
case Brw_ADMI_SHR_INS: case Brw_ADMI_SHR_INS:
Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Ins.InsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Ins_GetDataOfInstitutionByCod (&Ins)) if (Ins_GetDataOfInstitutionByCod (&Hie.Ins))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%02u/%u/%s", "%s/%02u/%u/%s",
Cfg_PATH_INS_PRIVATE, Cfg_PATH_INS_PRIVATE,
(unsigned) (Ins.InsCod % 100), (unsigned) (Hie.Ins.InsCod % 100),
(unsigned) Ins.InsCod, (unsigned) Hie.Ins.InsCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
case Brw_ADMI_DOC_CTR: case Brw_ADMI_DOC_CTR:
case Brw_ADMI_SHR_CTR: case Brw_ADMI_SHR_CTR:
Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Ctr.CtrCod = Gbl.FileBrowser.Clipboard.Cod;
if (Ctr_GetDataOfCentreByCod (&Ctr)) if (Ctr_GetDataOfCentreByCod (&Hie.Ctr))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%02u/%u/%s", "%s/%02u/%u/%s",
Cfg_PATH_CTR_PRIVATE, Cfg_PATH_CTR_PRIVATE,
(unsigned) (Ctr.CtrCod % 100), (unsigned) (Hie.Ctr.CtrCod % 100),
(unsigned) Ctr.CtrCod, (unsigned) Hie.Ctr.CtrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
break; break;
case Brw_ADMI_DOC_DEG: case Brw_ADMI_DOC_DEG:
case Brw_ADMI_SHR_DEG: case Brw_ADMI_SHR_DEG:
Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Deg.DegCod = Gbl.FileBrowser.Clipboard.Cod;
if (Deg_GetDataOfDegreeByCod (&Deg)) if (Deg_GetDataOfDegreeByCod (&Hie.Deg))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%02u/%u/%s", "%s/%02u/%u/%s",
Cfg_PATH_DEG_PRIVATE, Cfg_PATH_DEG_PRIVATE,
(unsigned) (Deg.DegCod % 100), (unsigned) (Hie.Deg.DegCod % 100),
(unsigned) Deg.DegCod, (unsigned) Hie.Deg.DegCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
@ -7929,11 +7923,11 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_TCH_CRS: case Brw_ADMI_TCH_CRS:
case Brw_ADMI_SHR_CRS: case Brw_ADMI_SHR_CRS:
case Brw_ADMI_MRK_CRS: case Brw_ADMI_MRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Hie.Crs))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s", "%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod, Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_ShowErrorAndExit ("The copy source does not exist."); Lay_ShowErrorAndExit ("The copy source does not exist.");
@ -7944,11 +7938,11 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_MRK_GRP: case Brw_ADMI_MRK_GRP:
GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod; GrpDat.GrpCod = Gbl.FileBrowser.Clipboard.Cod;
Grp_GetDataOfGroupByCod (&GrpDat); Grp_GetDataOfGroupByCod (&GrpDat);
Crs.CrsCod = GrpDat.CrsCod; Hie.Crs.CrsCod = GrpDat.CrsCod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Hie.Crs))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%ld/%s", "%s/%ld/%s/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_GRP, Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod,Cfg_FOLDER_GRP,
GrpDat.GrpCod, GrpDat.GrpCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
@ -7956,15 +7950,15 @@ static void Brw_PasteClipboard (void)
break; break;
case Brw_ADMI_ASG_CRS: case Brw_ADMI_ASG_CRS:
case Brw_ADMI_WRK_CRS: case Brw_ADMI_WRK_CRS:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Hie.Crs))
{ {
Usr_UsrDataConstructor (&UsrDat); Usr_UsrDataConstructor (&UsrDat);
UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod; UsrDat.UsrCod = Gbl.FileBrowser.Clipboard.WorksUsrCod;
Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); // Check that user exists Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); // Check that user exists
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%02u/%ld/%s", "%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod,Cfg_FOLDER_USR,
(unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100), (unsigned) (Gbl.FileBrowser.Clipboard.WorksUsrCod % 100),
Gbl.FileBrowser.Clipboard.WorksUsrCod, Gbl.FileBrowser.Clipboard.WorksUsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@ -7975,11 +7969,11 @@ static void Brw_PasteClipboard (void)
break; break;
case Brw_ADMI_ASG_USR: case Brw_ADMI_ASG_USR:
case Brw_ADMI_WRK_USR: case Brw_ADMI_WRK_USR:
Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod; Hie.Crs.CrsCod = Gbl.FileBrowser.Clipboard.Cod;
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Hie.Crs))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%02u/%ld/%s", "%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_USR, Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod,Cfg_FOLDER_USR,
(unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100), (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100),
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
@ -7989,11 +7983,11 @@ static void Brw_PasteClipboard (void)
case Brw_ADMI_DOC_PRJ: case Brw_ADMI_DOC_PRJ:
case Brw_ADMI_ASS_PRJ: case Brw_ADMI_ASS_PRJ:
PrjCod = Gbl.FileBrowser.Clipboard.Cod; PrjCod = Gbl.FileBrowser.Clipboard.Cod;
Crs.CrsCod = Prj_GetCourseOfProject (PrjCod); Hie.Crs.CrsCod = Prj_GetCourseOfProject (PrjCod);
if (Crs_GetDataOfCourseByCod (&Crs)) if (Crs_GetDataOfCourseByCod (&Hie.Crs))
snprintf (PathOrg,sizeof (PathOrg), snprintf (PathOrg,sizeof (PathOrg),
"%s/%ld/%s/%02u/%ld/%s", "%s/%ld/%s/%02u/%ld/%s",
Cfg_PATH_CRS_PRIVATE,Crs.CrsCod,Cfg_FOLDER_PRJ, Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod,Cfg_FOLDER_PRJ,
(unsigned) (PrjCod % 100), (unsigned) (PrjCod % 100),
PrjCod, PrjCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);

View File

@ -41,6 +41,7 @@
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_layout.h" #include "swad_layout.h"
#include "swad_logo.h" #include "swad_logo.h"
@ -2168,10 +2169,7 @@ void For_SetForumName (const struct For_Forum *Forum,
extern const char *Txt_only_teachers; extern const char *Txt_only_teachers;
extern const char *Txt_only_teachers_NO_HTML[1 + Lan_NUM_LANGUAGES]; extern const char *Txt_only_teachers_NO_HTML[1 + Lan_NUM_LANGUAGES];
extern const char *Txt_Unknown_FORUM; extern const char *Txt_Unknown_FORUM;
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
switch (Forum->Type) switch (Forum->Type)
{ {
@ -2199,66 +2197,66 @@ void For_SetForumName (const struct For_Forum *Forum,
Txt_only_teachers_NO_HTML[Language]); Txt_only_teachers_NO_HTML[Language]);
break; break;
case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_USRS:
Ins.InsCod = Forum->Location; Hie.Ins.InsCod = Forum->Location;
if (!Ins_GetDataOfInstitutionByCod (&Ins)) if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins))
Lay_ShowErrorAndExit ("Institution not found."); Lay_ShowErrorAndExit ("Institution not found.");
Str_Copy (ForumName,Ins.ShrtName, Str_Copy (ForumName,Hie.Ins.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_INSTIT_TCHS: case For_FORUM_INSTIT_TCHS:
Ins.InsCod = Forum->Location; Hie.Ins.InsCod = Forum->Location;
if (!Ins_GetDataOfInstitutionByCod (&Ins)) if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins))
Lay_ShowErrorAndExit ("Institution not found."); Lay_ShowErrorAndExit ("Institution not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Ins.ShrtName, "%s%s",Hie.Ins.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]); Txt_only_teachers_NO_HTML[Language]);
break; break;
case For_FORUM_CENTRE_USRS: case For_FORUM_CENTRE_USRS:
Ctr.CtrCod = Forum->Location; Hie.Ctr.CtrCod = Forum->Location;
if (!Ctr_GetDataOfCentreByCod (&Ctr)) if (!Ctr_GetDataOfCentreByCod (&Hie.Ctr))
Lay_ShowErrorAndExit ("Centre not found."); Lay_ShowErrorAndExit ("Centre not found.");
Str_Copy (ForumName,Ctr.ShrtName, Str_Copy (ForumName,Hie.Ctr.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_CENTRE_TCHS: case For_FORUM_CENTRE_TCHS:
Ctr.CtrCod = Forum->Location; Hie.Ctr.CtrCod = Forum->Location;
if (!Ctr_GetDataOfCentreByCod (&Ctr)) if (!Ctr_GetDataOfCentreByCod (&Hie.Ctr))
Lay_ShowErrorAndExit ("Centre not found."); Lay_ShowErrorAndExit ("Centre not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Ctr.ShrtName, "%s%s",Hie.Ctr.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]); Txt_only_teachers_NO_HTML[Language]);
break; break;
case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_USRS:
Deg.DegCod = Forum->Location; Hie.Deg.DegCod = Forum->Location;
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Hie.Deg))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
Str_Copy (ForumName,Deg.ShrtName, Str_Copy (ForumName,Hie.Deg.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_DEGREE_TCHS: case For_FORUM_DEGREE_TCHS:
Deg.DegCod = Forum->Location; Hie.Deg.DegCod = Forum->Location;
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Hie.Deg))
Lay_ShowErrorAndExit ("Degree not found."); Lay_ShowErrorAndExit ("Degree not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Deg.ShrtName, "%s%s",Hie.Deg.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]); Txt_only_teachers_NO_HTML[Language]);
break; break;
case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_USRS:
Crs.CrsCod = Forum->Location; Hie.Crs.CrsCod = Forum->Location;
if (!Crs_GetDataOfCourseByCod (&Crs)) if (!Crs_GetDataOfCourseByCod (&Hie.Crs))
Lay_ShowErrorAndExit ("Course not found."); Lay_ShowErrorAndExit ("Course not found.");
Str_Copy (ForumName,Crs.ShrtName, Str_Copy (ForumName,Hie.Crs.ShrtName,
For_MAX_BYTES_FORUM_NAME); For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_COURSE_TCHS: case For_FORUM_COURSE_TCHS:
Crs.CrsCod = Forum->Location; Hie.Crs.CrsCod = Forum->Location;
if (!Crs_GetDataOfCourseByCod (&Crs)) if (!Crs_GetDataOfCourseByCod (&Hie.Crs))
Lay_ShowErrorAndExit ("Course not found."); Lay_ShowErrorAndExit ("Course not found.");
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1, snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,
"%s%s",Crs.ShrtName, "%s%s",Hie.Crs.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
Txt_only_teachers_NO_HTML[Language]); Txt_only_teachers_NO_HTML[Language]);
break; break;

View File

@ -660,9 +660,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumRow; unsigned NumRow;
unsigned NumRows; unsigned NumRows;
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
/***** Get institutions, centres, degrees admin by user from database *****/ /***** Get institutions, centres, degrees admin by user from database *****/
NumRows = (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions," NumRows = (unsigned) DB_QuerySELECT (&mysql_res,"can not get institutions,"
@ -725,38 +723,38 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
HTM_TxtF ("&nbsp;%s",Txt_all_degrees); HTM_TxtF ("&nbsp;%s",Txt_all_degrees);
break; break;
case Hie_Lvl_INS: // Institution case Hie_Lvl_INS: // Institution
Ins.InsCod = Str_ConvertStrCodToLongCod (row[1]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[1]);
if (Ins.InsCod > 0) if (Hie.Ins.InsCod > 0)
{ {
/* Get data of institution */ /* Get data of institution */
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
/* Write institution logo and name */ /* Write institution logo and name */
Ins_DrawInstitutionLogoAndNameWithLink (&Ins,ActSeeInsInf, Ins_DrawInstitutionLogoAndNameWithLink (&Hie.Ins,ActSeeInsInf,
"BT_LINK DAT_SMALL_NOBR","LT"); "BT_LINK DAT_SMALL_NOBR","LT");
} }
break; break;
case Hie_Lvl_CTR: // Centre case Hie_Lvl_CTR: // Centre
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[1]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[1]);
if (Ctr.CtrCod > 0) if (Hie.Ctr.CtrCod > 0)
{ {
/* Get data of centre */ /* Get data of centre */
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Hie.Ctr);
/* Write centre logo and name */ /* Write centre logo and name */
Ctr_DrawCentreLogoAndNameWithLink (&Ctr,ActSeeCtrInf, Ctr_DrawCentreLogoAndNameWithLink (&Hie.Ctr,ActSeeCtrInf,
"BT_LINK DAT_SMALL_NOBR","LT"); "BT_LINK DAT_SMALL_NOBR","LT");
} }
break; break;
case Hie_Lvl_DEG: // Degree case Hie_Lvl_DEG: // Degree
Deg.DegCod = Str_ConvertStrCodToLongCod (row[1]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[1]);
if (Deg.DegCod > 0) if (Hie.Deg.DegCod > 0)
{ {
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
/* Write degree logo and name */ /* Write degree logo and name */
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeDegInf, Deg_DrawDegreeLogoAndNameWithLink (&Hie.Deg,ActSeeDegInf,
"BT_LINK DAT_SMALL_NOBR","LT"); "BT_LINK DAT_SMALL_NOBR","LT");
} }
break; break;

View File

@ -647,7 +647,7 @@ void Ins_GetBasicListOfInstitutions (long CtyCod)
/***** Create list with institutions *****/ /***** Create list with institutions *****/
if ((Gbl.Hierarchy.Inss.Lst = (struct Ins_Instit *) if ((Gbl.Hierarchy.Inss.Lst = (struct Ins_Instit *)
calloc (NumRows,sizeof (struct Ins_Instit))) == NULL) calloc (NumRows,sizeof (struct Ins_Instit))) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
/***** Get the institutions *****/ /***** Get the institutions *****/
@ -731,7 +731,7 @@ void Ins_GetFullListOfInstitutions (long CtyCod)
/***** Create list with institutions *****/ /***** Create list with institutions *****/
if ((Gbl.Hierarchy.Inss.Lst = (struct Ins_Instit *) if ((Gbl.Hierarchy.Inss.Lst = (struct Ins_Instit *)
calloc (NumRows,sizeof (struct Ins_Instit))) == NULL) calloc (NumRows,sizeof (struct Ins_Instit))) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
/***** Get the institutions *****/ /***** Get the institutions *****/

View File

@ -1713,21 +1713,19 @@ static void Lay_WriteFootFromHTMLFile (void)
void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto, void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
long InsCod,long DegCod,long CrsCod) long InsCod,long DegCod,long CrsCod)
{ {
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Deg_Degree Deg;
struct Crs_Course Crs;
/***** Get data of institution *****/ /***** Get data of institution *****/
Ins.InsCod = InsCod; Hie.Ins.InsCod = InsCod;
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
/***** Get data of degree *****/ /***** Get data of degree *****/
Deg.DegCod = DegCod; Hie.Deg.DegCod = DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
/***** Get data of course *****/ /***** Get data of course *****/
Crs.CrsCod = CrsCod; Hie.Crs.CrsCod = CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
/***** Begin table *****/ /***** Begin table *****/
HTM_TABLE_BeginWidePadding (10); HTM_TABLE_BeginWidePadding (10);
@ -1738,8 +1736,8 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (InsCod > 0) if (InsCod > 0)
{ {
if (!PrintView) if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Ins.WWW); HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Hie.Ins.WWW);
Lgo_DrawLogo (Hie_Lvl_INS,Ins.InsCod,Ins.ShrtName,40,NULL,true); Lgo_DrawLogo (Hie_Lvl_INS,Hie.Ins.InsCod,Hie.Ins.ShrtName,40,NULL,true);
if (!PrintView) if (!PrintView)
HTM_A_End (); HTM_A_End ();
} }
@ -1751,26 +1749,26 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
{ {
if (!PrintView) if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"",
Ins.WWW); Hie.Ins.WWW);
HTM_Txt (Ins.FullName); HTM_Txt (Hie.Ins.FullName);
if (!PrintView) if (!PrintView)
HTM_A_End (); HTM_A_End ();
} }
if (DegCod > 0) if (DegCod > 0)
{ {
if (Ins.InsCod > 0) if (Hie.Ins.InsCod > 0)
HTM_Txt (" - "); HTM_Txt (" - ");
if (!PrintView) if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"",
Deg.WWW); Hie.Deg.WWW);
HTM_Txt (Deg.FullName); HTM_Txt (Hie.Deg.FullName);
if (!PrintView) if (!PrintView)
HTM_A_End (); HTM_A_End ();
} }
HTM_BR (); HTM_BR ();
if (CrsCod > 0) if (CrsCod > 0)
{ {
HTM_Txt (Crs.FullName); HTM_Txt (Hie.Crs.FullName);
if (DrawingClassPhoto && !Gbl.Usrs.ClassPhoto.AllGroups) if (DrawingClassPhoto && !Gbl.Usrs.ClassPhoto.AllGroups)
{ {
HTM_BR (); HTM_BR ();
@ -1785,8 +1783,8 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
{ {
if (!PrintView) if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"", HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"",
Deg.WWW); Hie.Deg.WWW);
Lgo_DrawLogo (Hie_Lvl_DEG,Deg.DegCod,Deg.ShrtName,40,NULL,true); Lgo_DrawLogo (Hie_Lvl_DEG,Hie.Deg.DegCod,Hie.Deg.ShrtName,40,NULL,true);
if (!PrintView) if (!PrintView)
HTM_A_End (); HTM_A_End ();
} }

View File

@ -34,6 +34,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_exam_log.h" #include "swad_exam_log.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_log.h" #include "swad_log.h"
#include "swad_profile.h" #include "swad_profile.h"
@ -262,10 +263,7 @@ void Log_GetAndShowLastClicks (void)
Act_Action_t Action; Act_Action_t Action;
const char *ClassRow; const char *ClassRow;
time_t TimeDiff; time_t TimeDiff;
struct Cty_Countr Cty; struct Hie_Hierarchy Hie;
struct Ins_Instit Ins;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
/***** Get last clicks from database *****/ /***** Get last clicks from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get last clicks", NumRows = DB_QuerySELECT (&mysql_res,"can not get last clicks",
@ -319,56 +317,56 @@ void Log_GetAndShowLastClicks (void)
TimeDiff = (time_t) 0; TimeDiff = (time_t) 0;
/* Get country code (row[4]) */ /* Get country code (row[4]) */
Cty.CtyCod = Str_ConvertStrCodToLongCod (row[4]); Hie.Cty.CtyCod = Str_ConvertStrCodToLongCod (row[4]);
Cty_GetCountryName (Cty.CtyCod,Gbl.Prefs.Language, Cty_GetCountryName (Hie.Cty.CtyCod,Gbl.Prefs.Language,
Cty.Name[Gbl.Prefs.Language]); Hie.Cty.Name[Gbl.Prefs.Language]);
/* Get institution code (row[5]) */ /* Get institution code (row[5]) */
Ins.InsCod = Str_ConvertStrCodToLongCod (row[5]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[5]);
Ins_GetShortNameOfInstitution (&Ins); Ins_GetShortNameOfInstitution (&Hie.Ins);
/* Get centre code (row[6]) */ /* Get centre code (row[6]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[6]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[6]);
Ctr_GetShortNameOfCentreByCod (&Ctr); Ctr_GetShortNameOfCentreByCod (&Hie.Ctr);
/* Get degree code (row[7]) */ /* Get degree code (row[7]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[7]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[7]);
Deg_GetShortNameOfDegreeByCod (&Deg); Deg_GetShortNameOfDegreeByCod (&Hie.Deg);
/* Print table row */ /* Print table row */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LC_CLK %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_CLK %s\"",ClassRow);
HTM_Txt (row[0]); // Click HTM_Txt (row[0]); // Click
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_TIM %s\"",ClassRow); // Elapsed time HTM_TD_Begin ("class=\"LC_TIM %s\"",ClassRow); // Elapsed time
Dat_WriteHoursMinutesSecondsFromSeconds (TimeDiff); Dat_WriteHoursMinutesSecondsFromSeconds (TimeDiff);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_ROL %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_ROL %s\"",ClassRow);
HTM_Txt ( // Role HTM_Txt ( // Role
Txt_ROLES_SINGUL_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN]); Txt_ROLES_SINGUL_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN]);
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_CTY %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_CTY %s\"",ClassRow);
HTM_Txt (Cty.Name[Gbl.Prefs.Language]); // Country HTM_Txt (Hie.Cty.Name[Gbl.Prefs.Language]); // Country
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_INS %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_INS %s\"",ClassRow);
HTM_Txt (Ins.ShrtName); // Institution HTM_Txt (Hie.Ins.ShrtName); // Institution
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_CTR %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_CTR %s\"",ClassRow);
HTM_Txt (Ctr.ShrtName); // Centre HTM_Txt (Hie.Ctr.ShrtName); // Centre
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_DEG %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_DEG %s\"",ClassRow);
HTM_Txt (Deg.ShrtName); // Degree HTM_Txt (Hie.Deg.ShrtName); // Degree
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"LC_ACT %s\"",ClassRow); HTM_TD_Begin ("class=\"LC_ACT %s\"",ClassRow);
HTM_Txt (Act_GetActionText (Action)); // Action HTM_Txt (Act_GetActionText (Action)); // Action
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();

View File

@ -43,6 +43,7 @@
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_mark.h" #include "swad_mark.h"
#include "swad_message.h" #include "swad_message.h"
@ -323,10 +324,7 @@ void Ntf_ShowMyNotifications (void)
bool AllNotifications; bool AllNotifications;
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
struct UsrData UsrDat; struct UsrData UsrDat;
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
long Cod; long Cod;
struct For_Forums Forums; struct For_Forums Forums;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1]; char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@ -414,20 +412,20 @@ void Ntf_ShowMyNotifications (void)
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); // Get user's data from the database Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); // Get user's data from the database
/* Get institution code (row[2]) */ /* Get institution code (row[2]) */
Ins.InsCod = Str_ConvertStrCodToLongCod (row[2]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[2]);
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
/* Get centre code (row[3]) */ /* Get centre code (row[3]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]);
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Hie.Ctr);
/* Get degree code (row[4]) */ /* Get degree code (row[4]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]);
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
/* Get course code (row[5]) */ /* Get course code (row[5]) */
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]); Hie.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
/* Get message/post/... code (row[6]) */ /* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]); Cod = Str_ConvertStrCodToLongCod (row[6]);
@ -481,7 +479,7 @@ void Ntf_ShowMyNotifications (void)
HTM_TD_Begin ("class=\"%s LT\" style=\"width:25px;\"",ClassBackground); HTM_TD_Begin ("class=\"%s LT\" style=\"width:25px;\"",ClassBackground);
if (PutLink) if (PutLink)
PutLink = Ntf_StartFormGoToAction (NotifyEvent,Crs.CrsCod,&UsrDat,Cod,&Forums); PutLink = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.CrsCod,&UsrDat,Cod,&Forums);
if (PutLink) if (PutLink)
{ {
@ -498,7 +496,7 @@ void Ntf_ShowMyNotifications (void)
HTM_TD_Begin ("class=\"%s LT\"",ClassBackground); HTM_TD_Begin ("class=\"%s LT\"",ClassBackground);
if (PutLink) if (PutLink)
{ {
PutLink = Ntf_StartFormGoToAction (NotifyEvent,Crs.CrsCod,&UsrDat,Cod,&Forums); PutLink = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.CrsCod,&UsrDat,Cod,&Forums);
HTM_BUTTON_SUBMIT_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],ClassLink,NULL);
HTM_Txt (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent]); HTM_Txt (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent]);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -523,7 +521,7 @@ void Ntf_ShowMyNotifications (void)
NotifyEvent == Ntf_EVENT_FORUM_REPLY) NotifyEvent == Ntf_EVENT_FORUM_REPLY)
{ {
if (PutLink) if (PutLink)
PutLink = Ntf_StartFormGoToAction (NotifyEvent,Crs.CrsCod,&UsrDat,Cod,&Forums); PutLink = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.CrsCod,&UsrDat,Cod,&Forums);
if (PutLink) if (PutLink)
HTM_BUTTON_SUBMIT_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],ClassLink,NULL);
@ -541,21 +539,21 @@ void Ntf_ShowMyNotifications (void)
else else
{ {
if (PutLink) if (PutLink)
PutLink = Ntf_StartFormGoToAction (NotifyEvent,Crs.CrsCod,&UsrDat,Cod,&Forums); PutLink = Ntf_StartFormGoToAction (NotifyEvent,Hie.Crs.CrsCod,&UsrDat,Cod,&Forums);
if (PutLink) if (PutLink)
HTM_BUTTON_SUBMIT_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Txt_NOTIFY_EVENTS_SINGULAR[NotifyEvent],ClassLink,NULL);
else else
HTM_SPAN_Begin ("class=\"%s\"",ClassText); HTM_SPAN_Begin ("class=\"%s\"",ClassText);
if (Crs.CrsCod > 0) if (Hie.Crs.CrsCod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Course,Crs.ShrtName); HTM_TxtF ("%s:&nbsp;%s",Txt_Course,Hie.Crs.ShrtName);
else if (Deg.DegCod > 0) else if (Hie.Deg.DegCod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Degree,Deg.ShrtName); HTM_TxtF ("%s:&nbsp;%s",Txt_Degree,Hie.Deg.ShrtName);
else if (Ctr.CtrCod > 0) else if (Hie.Ctr.CtrCod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Centre,Ctr.ShrtName); HTM_TxtF ("%s:&nbsp;%s",Txt_Centre,Hie.Ctr.ShrtName);
else if (Ins.InsCod > 0) else if (Hie.Ins.InsCod > 0)
HTM_TxtF ("%s:&nbsp;%s",Txt_Institution,Ins.ShrtName); HTM_TxtF ("%s:&nbsp;%s",Txt_Institution,Hie.Ins.ShrtName);
else else
HTM_Hyphen (); HTM_Hyphen ();
@ -585,7 +583,7 @@ void Ntf_ShowMyNotifications (void)
ContentStr = NULL; ContentStr = NULL;
Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent, Ntf_GetNotifSummaryAndContent (SummaryStr,&ContentStr,NotifyEvent,
Cod,Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod, Cod,Hie.Crs.CrsCod,Gbl.Usrs.Me.UsrDat.UsrCod,
false); false);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1586,10 +1584,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
Lan_Language_t ToUsrLanguage; Lan_Language_t ToUsrLanguage;
struct UsrData FromUsrDat; struct UsrData FromUsrDat;
Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning Ntf_NotifyEvent_t NotifyEvent = (Ntf_NotifyEvent_t) 0; // Initialized to avoid warning
struct Ins_Instit Ins; struct Hie_Hierarchy Hie;
struct Ctr_Centre Ctr;
struct Deg_Degree Deg;
struct Crs_Course Crs;
long Cod; long Cod;
struct For_Forum ForumSelected; struct For_Forum ForumSelected;
char ForumName[For_MAX_BYTES_FORUM_NAME + 1]; char ForumName[For_MAX_BYTES_FORUM_NAME + 1];
@ -1665,20 +1660,20 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&FromUsrDat,Usr_DONT_GET_PREFS); // Get origin user's data from the database Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&FromUsrDat,Usr_DONT_GET_PREFS); // Get origin user's data from the database
/* Get institution code (row[2]) */ /* Get institution code (row[2]) */
Ins.InsCod = Str_ConvertStrCodToLongCod (row[2]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[2]);
Ins_GetDataOfInstitutionByCod (&Ins); Ins_GetDataOfInstitutionByCod (&Hie.Ins);
/* Get centre code (row[3]) */ /* Get centre code (row[3]) */
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[3]);
Ctr_GetDataOfCentreByCod (&Ctr); Ctr_GetDataOfCentreByCod (&Hie.Ctr);
/* Get degree code (row[4]) */ /* Get degree code (row[4]) */
Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]);
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Hie.Deg);
/* Get course code (row[5]) */ /* Get course code (row[5]) */
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]); Hie.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[5]);
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Hie.Crs);
/* Get message/post/... code (row[6]) */ /* Get message/post/... code (row[6]) */
Cod = Str_ConvertStrCodToLongCod (row[6]); Cod = Str_ConvertStrCodToLongCod (row[6]);
@ -1716,10 +1711,10 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
case Ntf_EVENT_NOTICE: case Ntf_EVENT_NOTICE:
case Ntf_EVENT_MESSAGE: case Ntf_EVENT_MESSAGE:
case Ntf_EVENT_SURVEY: case Ntf_EVENT_SURVEY:
if (Crs.CrsCod > 0) if (Hie.Crs.CrsCod > 0)
fprintf (FileMail,"%s: %s\n", fprintf (FileMail,"%s: %s\n",
Txt_Course_NO_HTML[ToUsrLanguage], Txt_Course_NO_HTML[ToUsrLanguage],
Crs.FullName); Hie.Crs.FullName);
break; break;
case Ntf_EVENT_FORUM_POST_COURSE: case Ntf_EVENT_FORUM_POST_COURSE:
case Ntf_EVENT_FORUM_REPLY: case Ntf_EVENT_FORUM_REPLY:
@ -1782,7 +1777,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
*NumMails = 1; *NumMails = 1;
/* Update statistics about notifications */ /* Update statistics about notifications */
Ntf_UpdateNumNotifSent (Deg.DegCod,Crs.CrsCod,NotifyEvent,*NumNotif,*NumMails); Ntf_UpdateNumNotifSent (Hie.Deg.DegCod,Hie.Crs.CrsCod,NotifyEvent,*NumNotif,*NumMails);
} }
/***** Mark all the pending notifications of this user as 'sent' *****/ /***** Mark all the pending notifications of this user as 'sent' *****/

View File

@ -229,8 +229,8 @@ static void SysCfg_Map (void)
unsigned Zoom; unsigned Zoom;
unsigned NumCtrs; unsigned NumCtrs;
unsigned NumCtr; unsigned NumCtr;
struct Ctr_Centre Ctr;
struct Ins_Instit Ins; struct Ins_Instit Ins;
struct Ctr_Centre Ctr;
/***** Leaflet CSS *****/ /***** Leaflet CSS *****/
Map_LeafletCSS (); Map_LeafletCSS ();

View File

@ -3864,12 +3864,12 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
char PhotoURL[PATH_MAX + 1]; char PhotoURL[PATH_MAX + 1];
bool ShowPhoto; bool ShowPhoto;
struct Ins_Instit Ins; struct Ins_Instit Ins;
struct Ctr_Centre Ctr;
struct Dpt_Department Dpt;
bool ItsMe = Usr_ItsMe (UsrDat->UsrCod); bool ItsMe = Usr_ItsMe (UsrDat->UsrCod);
bool ShowData = (ItsMe || UsrDat->Accepted || bool ShowData = (ItsMe || UsrDat->Accepted ||
Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM || Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM); Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM);
struct Ctr_Centre Ctr;
struct Dpt_Department Dpt;
/***** Start row *****/ /***** Start row *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);