Version19.31.10

This commit is contained in:
Antonio Cañas Vargas 2019-10-07 00:05:24 +02:00
parent a8d8cadda6
commit da3b69116f
6 changed files with 488 additions and 360 deletions

View File

@ -487,12 +487,13 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.31.9 (2019-10-06)" #define Log_PLATFORM_VERSION "SWAD 19.31.10 (2019-10-07)"
#define CSS_FILE "swad19.29.css" #define CSS_FILE "swad19.29.css"
#define JS_FILE "swad19.30.js" #define JS_FILE "swad19.30.js"
/* /*
// TODO: Perico: poner un candado de bloqueo de creación/edición de proyectos (por ejemplo en asignaturas obsoletas) // TODO: Perico: poner un candado de bloqueo de creación/edición de proyectos (por ejemplo en asignaturas obsoletas)
Version 19.31.10: Oct 07, 2019 Code refactoring in HTML tables. (247106 lines)
Version 19.31.9: Oct 06, 2019 Code refactoring in HTML tables. (247097 lines) Version 19.31.9: Oct 06, 2019 Code refactoring in HTML tables. (247097 lines)
Version 19.31.8: Oct 05, 2019 Code refactoring in HTML tables. (247089 lines) Version 19.31.8: Oct 05, 2019 Code refactoring in HTML tables. (247089 lines)
Version 19.31.7: Oct 05, 2019 Code refactoring in HTML tables. (247076 lines) Version 19.31.7: Oct 05, 2019 Code refactoring in HTML tables. (247076 lines)

View File

@ -197,7 +197,7 @@ void Cty_SeeCtyWithPendingInss (void)
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%s", "%s",
BgColor,row[1]); BgColor,row[1]);
Tbl_EndRow (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
@ -327,12 +327,14 @@ static void Cty_Configuration (bool PrintView)
/***** Country name (an link to WWW if exists) *****/ /***** Country name (an link to WWW if exists) *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Country); Txt_Country);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE\">");
if (!PrintView && Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language][0]) if (!PrintView && Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language][0])
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"DAT_N\">", fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"DAT_N\">",
Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language]); Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language]);
@ -340,66 +342,77 @@ static void Cty_Configuration (bool PrintView)
if (!PrintView && Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language][0]) if (!PrintView && Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language][0])
fprintf (Gbl.F.Out,"</a>"); fprintf (Gbl.F.Out,"</a>");
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Link to the country inside platform *****/ /***** Link to the country inside platform *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"<a href=\"%s/%s?cty=%ld\" class=\"DAT\" target=\"_blank\">"
"%s/%s?cty=%ld</a>"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Shortcut, Txt_Shortcut);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"<a href=\"%s/%s?cty=%ld\" class=\"DAT\" target=\"_blank\">"
"%s/%s?cty=%ld</a>",
Cfg_URL_SWAD_CGI, Cfg_URL_SWAD_CGI,
Lan_STR_LANG_ID[Gbl.Prefs.Language], Lan_STR_LANG_ID[Gbl.Prefs.Language],
Gbl.Hierarchy.Cty.CtyCod, Gbl.Hierarchy.Cty.CtyCod,
Cfg_URL_SWAD_CGI, Cfg_URL_SWAD_CGI,
Lan_STR_LANG_ID[Gbl.Prefs.Language], Lan_STR_LANG_ID[Gbl.Prefs.Language],
Gbl.Hierarchy.Cty.CtyCod); Gbl.Hierarchy.Cty.CtyCod);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
if (PrintView) if (PrintView)
{ {
/***** QR code with link to the country *****/ /***** QR code with link to the country *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_QR_code); Txt_QR_code);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
QR_LinkTo (250,"cty",Gbl.Hierarchy.Cty.CtyCod); QR_LinkTo (250,"cty",Gbl.Hierarchy.Cty.CtyCod);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
else else
{ {
/***** Number of users who claim to belong to this country *****/ /***** Number of users who claim to belong to this country *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Users_of_the_country, Txt_Users_of_the_country);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Usr_GetNumUsrsWhoClaimToBelongToCty (Gbl.Hierarchy.Cty.CtyCod)); Usr_GetNumUsrsWhoClaimToBelongToCty (Gbl.Hierarchy.Cty.CtyCod));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Number of institutions *****/ /***** Number of institutions *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Institutions); Txt_Institutions);
Tbl_EndCell ();
/* Form to go to see institutions of this country */ /* Form to go to see institutions of this country */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
Frm_StartFormGoTo (ActSeeIns); Frm_StartFormGoTo (ActSeeIns);
Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod); Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod);
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (Gbl.Title,sizeof (Gbl.Title),
@ -409,47 +422,56 @@ static void Cty_Configuration (bool PrintView)
fprintf (Gbl.F.Out,"%u</a>", fprintf (Gbl.F.Out,"%u</a>",
Ins_GetNumInssInCty (Gbl.Hierarchy.Cty.CtyCod)); Ins_GetNumInssInCty (Gbl.Hierarchy.Cty.CtyCod));
Frm_EndForm (); Frm_EndForm ();
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Number of centres *****/ /***** Number of centres *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Centres, Txt_Centres);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Ctr_GetNumCtrsInCty (Gbl.Hierarchy.Cty.CtyCod)); Ctr_GetNumCtrsInCty (Gbl.Hierarchy.Cty.CtyCod));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Number of degrees *****/ /***** Number of degrees *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Degrees, Txt_Degrees);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Deg_GetNumDegsInCty (Gbl.Hierarchy.Cty.CtyCod)); Deg_GetNumDegsInCty (Gbl.Hierarchy.Cty.CtyCod));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Number of courses *****/ /***** Number of courses *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Courses, Txt_Courses);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Crs_GetNumCrssInCty (Gbl.Hierarchy.Cty.CtyCod)); Crs_GetNumCrssInCty (Gbl.Hierarchy.Cty.CtyCod));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Number of users in courses of this country *****/ /***** Number of users in courses of this country *****/
@ -486,16 +508,19 @@ static void Cty_ShowNumUsrsInCrssOfCty (Rol_Role_t Role)
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
(Role == Rol_UNK) ? Txt_Users_in_courses : (Role == Rol_UNK) ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN], Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Usr_GetNumUsrsInCrssOfCty (Role,Gbl.Hierarchy.Cty.CtyCod)); Usr_GetNumUsrsInCrssOfCty (Role,Gbl.Hierarchy.Cty.CtyCod));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
@ -549,75 +574,93 @@ void Cty_ListCountries2 (void)
/***** Separation row *****/ /***** Separation row *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td colspan=\"8\" class=\"DAT CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td colspan=\"8\" class=\"DAT CENTER_MIDDLE\">"
"&nbsp;" "&nbsp;");
"</td>"); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Write users and institutions in other countries *****/ /***** Write users and institutions in other countries *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">");
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%s",
Txt_Other_countries);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"</td>" "%u",
"<td class=\"DAT LEFT_MIDDLE\">" Cty_GetNumUsrsWhoClaimToBelongToCty (0));
"%s" Tbl_EndCell ();
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>" Ins_GetNumInssInCty (0));
"<td class=\"DAT RIGHT_MIDDLE\">" Tbl_EndCell ();
"%u"
"</td>" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"<td class=\"DAT RIGHT_MIDDLE\">" "%u",
"%u" Ctr_GetNumCtrsInCty (0));
"</td>" Tbl_EndCell ();
"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"</td>" "%u",
"<td class=\"DAT RIGHT_MIDDLE\">" Deg_GetNumDegsInCty (0));
"%u" Tbl_EndCell ();
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>", Crs_GetNumCrssInCty (0));
Txt_Other_countries, Tbl_EndCell ();
Cty_GetNumUsrsWhoClaimToBelongToCty (0),
Ins_GetNumInssInCty (0), fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
Ctr_GetNumCtrsInCty (0), "%u",
Deg_GetNumDegsInCty (0),
Crs_GetNumCrssInCty (0),
Usr_GetNumUsrsInCrssOfCty (Rol_TCH,0)); Usr_GetNumUsrsInCrssOfCty (Rol_TCH,0));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Write users and institutions with unknown country *****/ /***** Write users and institutions with unknown country *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">");
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%s",
Txt_Country_unspecified);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"</td>" "%u",
"<td class=\"DAT LEFT_MIDDLE\">" Cty_GetNumUsrsWhoClaimToBelongToCty (-1L));
"%s" Tbl_EndCell ();
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>" Ins_GetNumInssInCty (-1L));
"<td class=\"DAT RIGHT_MIDDLE\">" Tbl_EndCell ();
"%u"
"</td>" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"<td class=\"DAT RIGHT_MIDDLE\">" "%u",
"%u" Ctr_GetNumCtrsInCty (-1L));
"</td>" Tbl_EndCell ();
"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"</td>" "%u",
"<td class=\"DAT RIGHT_MIDDLE\">" Deg_GetNumDegsInCty (-1L));
"%u" Tbl_EndCell ();
"</td>"
"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"0" "%u",
"</td>",
Txt_Country_unspecified,
Cty_GetNumUsrsWhoClaimToBelongToCty (-1L),
Ins_GetNumInssInCty (-1L),
Ctr_GetNumCtrsInCty (-1L),
Deg_GetNumDegsInCty (-1L),
Crs_GetNumCrssInCty (-1L)); Crs_GetNumCrssInCty (-1L));
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"0");
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** End table and box *****/ /***** End table and box *****/
@ -651,6 +694,7 @@ static void Cty_PutHeadCountriesForSeeing (bool OrderSelectable)
Cty_Order_t Order; Cty_Order_t Order;
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<th></th>"); fprintf (Gbl.F.Out,"<th></th>");
for (Order = Cty_ORDER_BY_COUNTRY; for (Order = Cty_ORDER_BY_COUNTRY;
Order <= Cty_ORDER_BY_NUM_USRS; Order <= Cty_ORDER_BY_NUM_USRS;
@ -698,6 +742,7 @@ static void Cty_PutHeadCountriesForSeeing (bool OrderSelectable)
Txt_Courses_ABBREVIATION, Txt_Courses_ABBREVIATION,
Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH], Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],
Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]); Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]);
Tbl_EndRow (); Tbl_EndRow ();
} }
@ -712,12 +757,13 @@ static void Cty_ListOneCountryForSeeing (struct Country *Cty,unsigned NumCty)
BgColor = (Cty->CtyCod == Gbl.Hierarchy.Cty.CtyCod) ? "LIGHT_BLUE" : BgColor = (Cty->CtyCod == Gbl.Hierarchy.Cty.CtyCod) ? "LIGHT_BLUE" :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/***** Number of country in this list *****/
Tbl_StartRow (); Tbl_StartRow ();
/***** Number of country in this list *****/
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
BgColor,NumCty); BgColor,NumCty);
Tbl_EndCell ();
/***** Country map (and link to WWW if exists) *****/ /***** Country map (and link to WWW if exists) *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">",BgColor); fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">",BgColor);
@ -729,29 +775,35 @@ static void Cty_ListOneCountryForSeeing (struct Country *Cty,unsigned NumCty)
/* Write stats of this country */ /* Write stats of this country */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>" BgColor,Cty->NumUsrsWhoClaimToBelongToCty);
"<td class=\"DAT RIGHT_MIDDLE %s\">" Tbl_EndCell ();
"%u"
"</td>" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"<td class=\"DAT RIGHT_MIDDLE %s\">" "%u",
"%u" BgColor,Cty->Inss.Num);
"</td>" Tbl_EndCell ();
"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%u" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"</td>" "%u",
"<td class=\"DAT RIGHT_MIDDLE %s\">" BgColor,Cty->NumCtrs);
"%u" Tbl_EndCell ();
"</td>"
"<td class=\"DAT RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>", BgColor,Cty->NumDegs);
BgColor,Cty->NumUsrsWhoClaimToBelongToCty, Tbl_EndCell ();
BgColor,Cty->Inss.Num,
BgColor,Cty->NumCtrs, fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
BgColor,Cty->NumDegs, "%u",
BgColor,Cty->NumCrss, BgColor,Cty->NumCrss);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%u",
BgColor,Cty->NumUsrs); BgColor,Cty->NumUsrs);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
@ -1631,29 +1683,29 @@ static void Cty_ListCountriesForEdition (void)
/* Numerical country code (ISO 3166-1) */ /* Numerical country code (ISO 3166-1) */
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">"
"%03ld" "%03ld",
"</td>",
1 + Lan_NUM_LANGUAGES,Cty->CtyCod); 1 + Lan_NUM_LANGUAGES,Cty->CtyCod);
Tbl_EndCell ();
/* Alphabetic country code with 2 letters (ISO 3166-1) */ /* Alphabetic country code with 2 letters (ISO 3166-1) */
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">"
"%s" "%s",
"</td>",
1 + Lan_NUM_LANGUAGES,Cty->Alpha2); 1 + Lan_NUM_LANGUAGES,Cty->Alpha2);
Tbl_EndCell ();
Tbl_PutEmptyCells (3); Tbl_PutEmptyCells (3);
/* Number of users */ /* Number of users */
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">"
"%u" "%u",
"</td>",
1 + Lan_NUM_LANGUAGES,Cty->NumUsrsWhoClaimToBelongToCty); 1 + Lan_NUM_LANGUAGES,Cty->NumUsrsWhoClaimToBelongToCty);
Tbl_EndCell ();
/* Number of institutions */ /* Number of institutions */
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">"
"%u" "%u",
"</td>",
1 + Lan_NUM_LANGUAGES,Cty->Inss.Num); 1 + Lan_NUM_LANGUAGES,Cty->Inss.Num);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
@ -1666,9 +1718,9 @@ static void Cty_ListCountriesForEdition (void)
/* Language */ /* Language */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>",
Txt_STR_LANG_NAME[Lan]); Txt_STR_LANG_NAME[Lan]);
Tbl_EndCell ();
/* Name */ /* Name */
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"); fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
@ -2054,8 +2106,9 @@ static void Cty_PutFormToCreateCountry (void)
Tbl_StartRow (); Tbl_StartRow ();
/***** Column to remove country, disabled here *****/ /***** Column to remove country, disabled here *****/
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"BT\"></td>", fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"BT\">",
1 + Lan_NUM_LANGUAGES); 1 + Lan_NUM_LANGUAGES);
Tbl_EndCell ();
/***** Numerical country code (ISO 3166-1) *****/ /***** Numerical country code (ISO 3166-1) *****/
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"RIGHT_TOP\">"
@ -2064,30 +2117,30 @@ static void Cty_PutFormToCreateCountry (void)
1 + Lan_NUM_LANGUAGES); 1 + Lan_NUM_LANGUAGES);
if (Cty_EditingCty->CtyCod > 0) if (Cty_EditingCty->CtyCod > 0)
fprintf (Gbl.F.Out,"%03ld",Cty_EditingCty->CtyCod); fprintf (Gbl.F.Out,"%03ld",Cty_EditingCty->CtyCod);
fprintf (Gbl.F.Out,"\" required=\"required\" />" fprintf (Gbl.F.Out,"\" required=\"required\" />");
"</td>"); Tbl_EndCell ();
/***** Alphabetic country code with 2 letters (ISO 3166-1) *****/ /***** Alphabetic country code with 2 letters (ISO 3166-1) *****/
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"RIGHT_TOP\">"
"<input type=\"text\" name=\"Alpha2\"" "<input type=\"text\" name=\"Alpha2\""
" size=\"2\" maxlength=\"2\" value=\"%s\"" " size=\"2\" maxlength=\"2\" value=\"%s\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
1 + Lan_NUM_LANGUAGES,Cty_EditingCty->Alpha2); 1 + Lan_NUM_LANGUAGES,Cty_EditingCty->Alpha2);
Tbl_EndCell ();
Tbl_PutEmptyCells (3); Tbl_PutEmptyCells (3);
/***** Number of users *****/ /***** Number of users *****/
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">"
"0" "0",
"</td>",
1 + Lan_NUM_LANGUAGES); 1 + Lan_NUM_LANGUAGES);
Tbl_EndCell ();
/***** Number of institutions *****/ /***** Number of institutions *****/
fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td rowspan=\"%u\" class=\"DAT RIGHT_TOP\">"
"0" "0",
"</td>",
1 + Lan_NUM_LANGUAGES); 1 + Lan_NUM_LANGUAGES);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
@ -2100,29 +2153,29 @@ static void Cty_PutFormToCreateCountry (void)
/* Language */ /* Language */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_TOP\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_TOP\">"
"%s" "%s",
"</td>",
Txt_STR_LANG_NAME[Lan]); Txt_STR_LANG_NAME[Lan]);
Tbl_EndCell ();
/* Name */ /* Name */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\" name=\"Name_%s\"" "<input type=\"text\" name=\"Name_%s\""
" size=\"15\" maxlength=\"%u\" value=\"%s\"" " size=\"15\" maxlength=\"%u\" value=\"%s\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Lan_STR_LANG_ID[Lan], Lan_STR_LANG_ID[Lan],
Cty_MAX_CHARS_NAME, Cty_MAX_CHARS_NAME,
Cty_EditingCty->Name[Lan]); Cty_EditingCty->Name[Lan]);
Tbl_EndCell ();
/* WWW */ /* WWW */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"url\" name=\"WWW_%s\"" "<input type=\"url\" name=\"WWW_%s\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_WWW\" />" " class=\"INPUT_WWW\" />",
"</td>",
Lan_STR_LANG_ID[Lan], Lan_STR_LANG_ID[Lan],
Cns_MAX_CHARS_WWW, Cns_MAX_CHARS_WWW,
Cty_EditingCty->WWW[Lan]); Cty_EditingCty->WWW[Lan]);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
@ -2148,6 +2201,7 @@ static void Cty_PutHeadCountriesForEdition (void)
extern const char *Txt_Institutions_ABBREVIATION; extern const char *Txt_Institutions_ABBREVIATION;
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<th class=\"BM\"></th>" fprintf (Gbl.F.Out,"<th class=\"BM\"></th>"
"<th class=\"RIGHT_MIDDLE\">" "<th class=\"RIGHT_MIDDLE\">"
"%s" "%s"
@ -2174,6 +2228,7 @@ static void Cty_PutHeadCountriesForEdition (void)
Txt_WWW, Txt_WWW,
Txt_Users, Txt_Users,
Txt_Institutions_ABBREVIATION); Txt_Institutions_ABBREVIATION);
Tbl_EndRow (); Tbl_EndRow ();
} }

View File

@ -239,12 +239,14 @@ static void Crs_Configuration (bool PrintView)
/***** Degree *****/ /***** Degree *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"OthDegCod\" class=\"%s\">%s:</label>" "<label for=\"OthDegCod\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Degree); Txt_Degree);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM)
@ -277,16 +279,19 @@ static void Crs_Configuration (bool PrintView)
fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Deg.FullName); fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Deg.FullName);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Course full name *****/ /***** Course full name *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"FullName\" class=\"%s\">%s:</label>" "<label for=\"FullName\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Course); Txt_Course);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM)
// Only degree admins, centre admins, institution admins and system admins can edit course full name // Only degree admins, centre admins, institution admins and system admins can edit course full name
@ -306,16 +311,21 @@ static void Crs_Configuration (bool PrintView)
else // I can not edit course full name else // I can not edit course full name
fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Crs.FullName); fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Crs.FullName);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Course short name *****/ /***** Course short name *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"ShortName\" class=\"%s\">%s:</label>" "<label for=\"ShortName\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Short_name); Txt_Short_name);
Tbl_EndCell ();
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM)
// Only degree admins, centre admins, institution admins and system admins can edit course short name // Only degree admins, centre admins, institution admins and system admins can edit course short name
@ -340,12 +350,14 @@ static void Crs_Configuration (bool PrintView)
/***** Course year *****/ /***** Course year *****/
IsForm = (!PrintView && Gbl.Usrs.Me.Role.Logged >= Rol_TCH); IsForm = (!PrintView && Gbl.Usrs.Me.Role.Logged >= Rol_TCH);
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"OthCrsYear\" class=\"%s\">%s:</label>" "<label for=\"OthCrsYear\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Year_OF_A_DEGREE); Txt_Year_OF_A_DEGREE);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
if (IsForm) if (IsForm)
{ {
Frm_StartForm (ActChgCrsYeaCfg); Frm_StartForm (ActChgCrsYeaCfg);
@ -374,12 +386,14 @@ static void Crs_Configuration (bool PrintView)
{ {
/***** Institutional code of the course *****/ /***** Institutional code of the course *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"InsCrsCod\" class=\"%s\">%s:</label>" "<label for=\"InsCrsCod\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Institutional_code); Txt_Institutional_code);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
if (IsForm) if (IsForm)
{ {
Frm_StartForm (ActChgInsCrsCodCfg); Frm_StartForm (ActChgInsCrsCodCfg);
@ -400,29 +414,33 @@ static void Crs_Configuration (bool PrintView)
/***** Internal code of the course *****/ /***** Internal code of the course *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%ld"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Internal_code, Txt_Internal_code);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
Tbl_EndRow (); Tbl_EndRow ();
Tbl_EndRow ();
} }
/***** Link to the course *****/ /***** Link to the course *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"<a href=\"%s/%s?crs=%ld\" class=\"DAT\" target=\"_blank\">"
"%s/%s?crs=%ld</a>"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Shortcut, Txt_Shortcut);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"<a href=\"%s/%s?crs=%ld\" class=\"DAT\" target=\"_blank\">"
"%s/%s?crs=%ld</a>",
Cfg_URL_SWAD_CGI, Cfg_URL_SWAD_CGI,
Lan_STR_LANG_ID[Gbl.Prefs.Language], Lan_STR_LANG_ID[Gbl.Prefs.Language],
Gbl.Hierarchy.Crs.CrsCod, Gbl.Hierarchy.Crs.CrsCod,
@ -431,18 +449,23 @@ static void Crs_Configuration (bool PrintView)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
Tbl_EndRow (); Tbl_EndRow ();
Tbl_EndRow ();
if (PrintView) if (PrintView)
{ {
/***** QR code with link to the course *****/ /***** QR code with link to the course *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_QR_code); Txt_QR_code);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
QR_LinkTo (250,"crs",Gbl.Hierarchy.Crs.CrsCod); QR_LinkTo (250,"crs",Gbl.Hierarchy.Crs.CrsCod);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
else else
@ -457,12 +480,14 @@ static void Crs_Configuration (bool PrintView)
Ind_ComputeAndStoreIndicatorsCrs (Gbl.Hierarchy.Crs.CrsCod, Ind_ComputeAndStoreIndicatorsCrs (Gbl.Hierarchy.Crs.CrsCod,
NumIndicatorsFromDB,&Indicators); NumIndicatorsFromDB,&Indicators);
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Indicators); Txt_Indicators);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
Frm_StartForm (ActReqStaCrs); Frm_StartForm (ActReqStaCrs);
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (Gbl.Title,sizeof (Gbl.Title),
"%u %s %u", "%u %s %u",
@ -508,16 +533,19 @@ static void Crs_ShowNumUsrsInCrs (Rol_Role_t Role)
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN], Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
Tbl_EndRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Gbl.Hierarchy.Crs.NumUsrs[Role]); Gbl.Hierarchy.Crs.NumUsrs[Role]);
Tbl_EndRow (); Tbl_EndRow ();
Tbl_EndRow ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1272,30 +1300,31 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
BgColor = (Usr_CheckIfIBelongToCrs (Crs->CrsCod)) ? "LIGHT_BLUE" : BgColor = (Usr_CheckIfIBelongToCrs (Crs->CrsCod)) ? "LIGHT_BLUE" :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/* Put green tip if course has users */
Tbl_StartRow (); Tbl_StartRow ();
/* Put green tip if course has users */
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\" title=\"%s\">" fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\" title=\"%s\">"
"%s" "%s",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
Crs->NumUsrs[Rol_UNK] ? Txt_COURSE_With_users : Crs->NumUsrs[Rol_UNK] ? Txt_COURSE_With_users :
Txt_COURSE_Without_users, Txt_COURSE_Without_users,
Crs->NumUsrs[Rol_UNK] ? "&check;" : Crs->NumUsrs[Rol_UNK] ? "&check;" :
"&nbsp;"); "&nbsp;");
Tbl_EndRow ();
/* Institutional code of the course */ /* Institutional code of the course */
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\">"
"%s" "%s",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
Crs->InstitutionalCrsCod); Crs->InstitutionalCrsCod);
Tbl_EndRow ();
/* Course year */ /* Course year */
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\">"
"%s" "%s",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
Txt_YEAR_OF_DEGREE[Crs->Year]); Txt_YEAR_OF_DEGREE[Crs->Year]);
Tbl_EndRow ();
/* Course full name */ /* Course full name */
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE %s\">", fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE %s\">",
@ -1313,18 +1342,18 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
/* Current number of teachers in this course */ /* Current number of teachers in this course */
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
Crs->NumUsrs[Rol_TCH] + Crs->NumUsrs[Rol_TCH] +
Crs->NumUsrs[Rol_NET]); Crs->NumUsrs[Rol_NET]);
Tbl_EndRow ();
/* Current number of students in this course */ /* Current number of students in this course */
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
Crs->NumUsrs[Rol_STD]); Crs->NumUsrs[Rol_STD]);
Tbl_EndRow ();
/* Course status */ /* Course status */
StatusTxt = Crs_GetStatusTxtFromStatusBits (Crs->Status); StatusTxt = Crs_GetStatusTxtFromStatusBits (Crs->Status);
@ -1489,9 +1518,9 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
/* Course code */ /* Course code */
fprintf (Gbl.F.Out,"<td class=\"DAT CODE\">" fprintf (Gbl.F.Out,"<td class=\"DAT CODE\">"
"%ld" "%ld",
"</td>",
Crs->CrsCod); Crs->CrsCod);
Tbl_EndRow ();
/* Institutional code of the course */ /* Institutional code of the course */
fprintf (Gbl.F.Out,"<td class=\"DAT CENTER_MIDDLE\">"); fprintf (Gbl.F.Out,"<td class=\"DAT CENTER_MIDDLE\">");
@ -1575,16 +1604,16 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year)
/* Current number of teachers in this course */ /* Current number of teachers in this course */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>",
Crs->NumUsrs[Rol_TCH] + Crs->NumUsrs[Rol_TCH] +
Crs->NumUsrs[Rol_NET]); Crs->NumUsrs[Rol_NET]);
Tbl_EndRow ();
/* Current number of students in this course */ /* Current number of students in this course */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>",
Crs->NumUsrs[Rol_STD]); Crs->NumUsrs[Rol_STD]);
Tbl_EndRow ();
/* Course requester */ /* Course requester */
UsrDat.UsrCod = Crs->RequesterUsrCod; UsrDat.UsrCod = Crs->RequesterUsrCod;
@ -1703,21 +1732,24 @@ static void Crs_PutFormToCreateCourse (void)
/***** Write heading *****/ /***** Write heading *****/
Crs_PutHeadCoursesForEdition (); Crs_PutHeadCoursesForEdition ();
/***** Column to remove course, disabled here *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"BM\"></td>");
/***** Column to remove course, disabled here *****/
fprintf (Gbl.F.Out,"<td class=\"BM\">");
Tbl_EndRow ();
/***** Course code *****/ /***** Course code *****/
fprintf (Gbl.F.Out,"<td class=\"CODE\"></td>"); fprintf (Gbl.F.Out,"<td class=\"CODE\">");
Tbl_EndRow ();
/***** Institutional code of the course *****/ /***** Institutional code of the course *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
"<input type=\"text\" name=\"InsCrsCod\"" "<input type=\"text\" name=\"InsCrsCod\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_INS_CODE\" />" " class=\"INPUT_INS_CODE\" />",
"</td>",
Crs_MAX_CHARS_INSTITUTIONAL_CRS_COD, Crs_MAX_CHARS_INSTITUTIONAL_CRS_COD,
Crs_EditingCrs->InstitutionalCrsCod); Crs_EditingCrs->InstitutionalCrsCod);
Tbl_EndRow ();
/***** Year *****/ /***** Year *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -1730,36 +1762,36 @@ static void Crs_PutFormToCreateCourse (void)
Year == Crs_EditingCrs->Year ? " selected=\"selected\"" : Year == Crs_EditingCrs->Year ? " selected=\"selected\"" :
"", "",
Txt_YEAR_OF_DEGREE[Year]); Txt_YEAR_OF_DEGREE[Year]);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndRow ();
/***** Course short name *****/ /***** Course short name *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\" name=\"ShortName\"" "<input type=\"text\" name=\"ShortName\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_SHORT_NAME\"" " class=\"INPUT_SHORT_NAME\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Hie_MAX_CHARS_SHRT_NAME,Crs_EditingCrs->ShrtName); Hie_MAX_CHARS_SHRT_NAME,Crs_EditingCrs->ShrtName);
Tbl_EndRow ();
/***** Course full name *****/ /***** Course full name *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\" name=\"FullName\"" "<input type=\"text\" name=\"FullName\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_FULL_NAME\"" " class=\"INPUT_FULL_NAME\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Hie_MAX_CHARS_FULL_NAME,Crs_EditingCrs->FullName); Hie_MAX_CHARS_FULL_NAME,Crs_EditingCrs->FullName);
Tbl_EndRow ();
/***** Current number of teachers in this course *****/ /***** Current number of teachers in this course *****/
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"0" "0");
"</td>"); Tbl_EndRow ();
/***** Current number of students in this course *****/ /***** Current number of students in this course *****/
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"0" "0");
"</td>"); Tbl_EndRow ();
/***** Course requester *****/ /***** Course requester *****/
fprintf (Gbl.F.Out,"<td class=\"DAT INPUT_REQUESTER LEFT_TOP\">"); fprintf (Gbl.F.Out,"<td class=\"DAT INPUT_REQUESTER LEFT_TOP\">");
@ -1767,8 +1799,9 @@ static void Crs_PutFormToCreateCourse (void)
Tbl_EndCell (); Tbl_EndCell ();
/***** Course status *****/ /***** Course status *****/
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
"</td>"); Tbl_EndRow ();
Tbl_EndRow (); Tbl_EndRow ();
/***** End table, send button and end box *****/ /***** End table, send button and end box *****/
@ -3283,20 +3316,20 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
{ {
Accepted = (row[7][0] == 'Y'); Accepted = (row[7][0] == 'Y');
fprintf (Gbl.F.Out,"<td class=\"BT %s\" title=\"%s\">" fprintf (Gbl.F.Out,"<td class=\"BT %s\" title=\"%s\">"
"%s" "%s",
"</td>",
BgColor, BgColor,
Accepted ? Txt_Enrolment_confirmed : Accepted ? Txt_Enrolment_confirmed :
Txt_Enrolment_not_confirmed, Txt_Enrolment_not_confirmed,
Accepted ? "&check;" : Accepted ? "&check;" :
"&cross;"); "&cross;");
Tbl_EndRow ();
} }
/***** Write number of course in this search *****/ /***** Write number of course in this search *****/
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
"%u" "%u",
"</td>",
StyleNoBR,BgColor,NumCrs); StyleNoBR,BgColor,NumCrs);
Tbl_EndRow ();
/***** Write degree logo, degree short name (row[2]) /***** Write degree logo, degree short name (row[2])
and centre short name (row[6]) *****/ and centre short name (row[6]) *****/
@ -3317,9 +3350,9 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
/***** Write year (row[4]) *****/ /***** Write year (row[4]) *****/
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP %s\">" fprintf (Gbl.F.Out,"<td class=\"%s CENTER_TOP %s\">"
"%s" "%s",
"</td>",
Style,BgColor,Txt_YEAR_OF_DEGREE[Deg_ConvStrToYear (row[4])]); Style,BgColor,Txt_YEAR_OF_DEGREE[Deg_ConvStrToYear (row[4])]);
Tbl_EndRow ();
/***** Write course full name (row[5]) *****/ /***** Write course full name (row[5]) *****/
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP %s\">", fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP %s\">",
@ -3336,17 +3369,18 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
/***** Write number of teachers in course *****/ /***** Write number of teachers in course *****/
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
"%u" "%u",
"</td>",
Style,BgColor,NumTchs); Style,BgColor,NumTchs);
Tbl_EndRow ();
/***** Write number of students in course *****/ /***** Write number of students in course *****/
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
"%u" "%u",
"</td>",
Style,BgColor,NumStds); Style,BgColor,NumStds);
Tbl_EndRow (); Tbl_EndRow ();
Tbl_EndRow ();
RowEvenOdd = 1 - RowEvenOdd; RowEvenOdd = 1 - RowEvenOdd;
} }

View File

@ -427,16 +427,17 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000
extern const char *Txt_Yesterday; extern const char *Txt_Yesterday;
extern const char *Txt_Today; extern const char *Txt_Today;
/***** Start date-time *****/
Tbl_StartRow (); Tbl_StartRow ();
/***** Start date-time *****/
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label class=\"%s\">%s:</label>" "<label class=\"%s\">%s:</label>",
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_START_END_TIME[Dat_START_TIME]); Txt_START_END_TIME[Dat_START_TIME]);
Tbl_EndCell ();
/* Date-time */ /* Date-time */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start", Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start",
"Start", "Start",
Gbl.DateRange.TimeUTC[0], Gbl.DateRange.TimeUTC[0],
@ -446,28 +447,30 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000
SetHMS000000To235959 ? Dat_HMS_TO_000000 : // Set hour, minute and second to 00:00:00 SetHMS000000To235959 ? Dat_HMS_TO_000000 : // Set hour, minute and second to 00:00:00
Dat_HMS_DO_NOT_SET, // Don't set hour, minute and second to 00:00:00 Dat_HMS_DO_NOT_SET, // Don't set hour, minute and second to 00:00:00
false); // Don't submit on change false); // Don't submit on change
Tbl_EndCell ();
/***** "Yesterday" and "Today" buttons *****/ /***** "Yesterday" and "Today" buttons *****/
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"LEFT_MIDDLE\">"
"<td rowspan=\"2\" class=\"LEFT_MIDDLE\">"
"<input type=\"button\" name=\"Yesterday\" value=\"%s\"" "<input type=\"button\" name=\"Yesterday\" value=\"%s\""
" onclick=\"setDateToYesterday('Start','End');\" />" " onclick=\"setDateToYesterday('Start','End');\" />"
"<input type=\"button\" name=\"Today\" value=\"%s\"" "<input type=\"button\" name=\"Today\" value=\"%s\""
" onclick=\"setDateToToday('Start','End');\" />" " onclick=\"setDateToToday('Start','End');\" />",
"</td>",
Txt_Yesterday, Txt_Yesterday,
Txt_Today); Txt_Today);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
Tbl_StartRow ();
/***** End date-time *****/ /***** End date-time *****/
Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label class=\"%s\">%s:</label>" "<label class=\"%s\">%s:</label>",
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_START_END_TIME[Dat_END_TIME]); Txt_START_END_TIME[Dat_END_TIME]);
Tbl_EndCell ();
/* Date-time */ /* Date-time */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End", Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End",
"End", "End",
Gbl.DateRange.TimeUTC[1], Gbl.DateRange.TimeUTC[1],
@ -478,6 +481,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000
Dat_HMS_DO_NOT_SET, // Don't set hour, minute and second Dat_HMS_DO_NOT_SET, // Don't set hour, minute and second
false); // Don't submit on change false); // Don't submit on change
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
@ -503,12 +507,14 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
{ {
/* Date-time */ /* Date-time */
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label class=\"%s\">%s:</label>" "<label class=\"%s\">%s:</label>",
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_START_END_TIME[StartEndTime]); Txt_START_END_TIME[StartEndTime]);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
Dat_WriteFormClientLocalDateTimeFromTimeUTC (Id[StartEndTime], Dat_WriteFormClientLocalDateTimeFromTimeUTC (Id[StartEndTime],
Id[StartEndTime], Id[StartEndTime],
TimeUTC[StartEndTime], TimeUTC[StartEndTime],
@ -518,6 +524,7 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
Dat_HMS_DO_NOT_SET, // Don't set hour, minute and second Dat_HMS_DO_NOT_SET, // Don't set hour, minute and second
false); // Don't submit on change false); // Don't submit on change
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
} }
@ -569,8 +576,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
Year++) Year++)
fprintf (Gbl.F.Out,"<option value=\"%u\">%u</option>", fprintf (Gbl.F.Out,"<option value=\"%u\">%u</option>",
Year,Year); Year,Year);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Month *****/ /***** Month *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -588,8 +595,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
Month++) Month++)
fprintf (Gbl.F.Out,"<option value=\"%u\">%s</option>", fprintf (Gbl.F.Out,"<option value=\"%u\">%s</option>",
Month,Txt_MONTHS_SMALL[Month - 1]); Month,Txt_MONTHS_SMALL[Month - 1]);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Day *****/ /***** Day *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
@ -605,8 +612,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
Day++) Day++)
fprintf (Gbl.F.Out,"<option value=\"%u\">%u</option>", fprintf (Gbl.F.Out,"<option value=\"%u\">%u</option>",
Day,Day); Day,Day);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Hour *****/ /***** Hour *****/
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
@ -622,8 +629,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
Hour++) Hour++)
fprintf (Gbl.F.Out,"<option value=\"%u\">%02u h</option>", fprintf (Gbl.F.Out,"<option value=\"%u\">%02u h</option>",
Hour,Hour); Hour,Hour);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Minute *****/ /***** Minute *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -641,8 +648,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
fprintf (Gbl.F.Out,"<option value=\"%u\">%02u &#39;</option>", fprintf (Gbl.F.Out,"<option value=\"%u\">%02u &#39;</option>",
Minute,Minute); Minute,Minute);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Second *****/ /***** Second *****/
if (FormSeconds == Dat_FORM_SECONDS_ON) if (FormSeconds == Dat_FORM_SECONDS_ON)
@ -660,8 +667,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
Second++) Second++)
fprintf (Gbl.F.Out,"<option value=\"%u\">%02u &quot;</option>", fprintf (Gbl.F.Out,"<option value=\"%u\">%02u &quot;</option>",
Second,Second); Second,Second);
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
} }
/***** End table *****/ /***** End table *****/
@ -842,8 +849,8 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
fprintf (Gbl.F.Out," selected=\"selected\""); fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%u</option>",Year); fprintf (Gbl.F.Out,">%u</option>",Year);
} }
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Month *****/ /***** Month *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -866,8 +873,8 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
fprintf (Gbl.F.Out," selected=\"selected\""); fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_MONTHS_SMALL[Month - 1]); fprintf (Gbl.F.Out,">%s</option>",Txt_MONTHS_SMALL[Month - 1]);
} }
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Day *****/ /***** Day *****/
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
@ -891,8 +898,8 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
fprintf (Gbl.F.Out," selected=\"selected\""); fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%u</option>",Day); fprintf (Gbl.F.Out,">%u</option>",Day);
} }
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** End table *****/ /***** End table *****/
Tbl_EndRow (); Tbl_EndRow ();

View File

@ -212,8 +212,9 @@ void Deg_SeeDegWithPendingCrss (void)
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg);
/* Degree logo and full name */
Tbl_StartRow (); Tbl_StartRow ();
/* Degree logo and full name */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">", fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">",
BgColor); BgColor);
Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs, Deg_DrawDegreeLogoAndNameWithLink (&Deg,ActSeeCrs,
@ -222,9 +223,10 @@ void Deg_SeeDegWithPendingCrss (void)
/* Number of pending courses (row[1]) */ /* Number of pending courses (row[1]) */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE %s\">"
"%s" "%s",
"</td>",
BgColor,row[1]); BgColor,row[1]);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
@ -343,13 +345,14 @@ static void Deg_Configuration (bool PrintView)
/***** Centre *****/ /***** Centre *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"OthCtrCod\" class=\"%s\">%s:</label>" "<label for=\"OthCtrCod\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Centre); Txt_Centre);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM)
// Only institution admins and system admin can move a degree to another centre // Only institution admins and system admin can move a degree to another centre
@ -379,18 +382,19 @@ static void Deg_Configuration (bool PrintView)
} }
else // I can not move degree to another centre else // I can not move degree to another centre
fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Ctr.FullName); fprintf (Gbl.F.Out,"%s",Gbl.Hierarchy.Ctr.FullName);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Degree full name *****/ /***** Degree full name *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"FullName\" class=\"%s\">%s:</label>" "<label for=\"FullName\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Degree); Txt_Degree);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM)
// Only centre admins, institution admins and system admins // Only centre admins, institution admins and system admins
@ -416,11 +420,11 @@ static void Deg_Configuration (bool PrintView)
/***** Degree short name *****/ /***** Degree short name *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"ShortName\" class=\"%s\">%s:</label>" "<label for=\"ShortName\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Short_name); Txt_Short_name);
fprintf (Gbl.F.Out,"</td>"
"<td class=\"DAT_N LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM)
// Only centre admins, institution admins and system admins // Only centre admins, institution admins and system admins
@ -446,11 +450,12 @@ static void Deg_Configuration (bool PrintView)
/***** Degree WWW *****/ /***** Degree WWW *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
"<label for=\"WWW\" class=\"%s\">%s:</label>" "<label for=\"WWW\" class=\"%s\">%s:</label>",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Web); Txt_Web);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
if (!PrintView && if (!PrintView &&
Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM) Gbl.Usrs.Me.Role.Logged >= Rol_DEG_ADM)
// Only degree admins, centre admins, institution admins // Only degree admins, centre admins, institution admins
@ -480,50 +485,58 @@ static void Deg_Configuration (bool PrintView)
/***** Shortcut to the degree *****/ /***** Shortcut to the degree *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>" The_ClassFormInBox[Gbl.Prefs.Theme],
"<td class=\"DAT LEFT_MIDDLE\">" Txt_Shortcut);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"<a href=\"%s/%s?deg=%ld\" class=\"DAT\" target=\"_blank\">" "<a href=\"%s/%s?deg=%ld\" class=\"DAT\" target=\"_blank\">"
"%s/%s?deg=%ld" "%s/%s?deg=%ld"
"</a>" "</a>",
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Shortcut,
Cfg_URL_SWAD_CGI, Cfg_URL_SWAD_CGI,
Lan_STR_LANG_ID[Gbl.Prefs.Language], Lan_STR_LANG_ID[Gbl.Prefs.Language],
Gbl.Hierarchy.Deg.DegCod, Gbl.Hierarchy.Deg.DegCod,
Cfg_URL_SWAD_CGI, Cfg_URL_SWAD_CGI,
Lan_STR_LANG_ID[Gbl.Prefs.Language], Lan_STR_LANG_ID[Gbl.Prefs.Language],
Gbl.Hierarchy.Deg.DegCod); Gbl.Hierarchy.Deg.DegCod);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
if (PrintView) if (PrintView)
{ {
/***** QR code with link to the degree *****/ /***** QR code with link to the degree *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_QR_code); Txt_QR_code);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
QR_LinkTo (250,"deg",Gbl.Hierarchy.Deg.DegCod); QR_LinkTo (250,"deg",Gbl.Hierarchy.Deg.DegCod);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
else else
{ {
/***** Number of courses *****/ /***** Number of courses *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"LEFT_MIDDLE\">",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
Txt_Courses); Txt_Courses);
Tbl_EndCell ();
/* Form to go to see courses of this degree */ /* Form to go to see courses of this degree */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
Frm_StartFormGoTo (ActSeeCrs); Frm_StartFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod); Deg_PutParamDegCod (Gbl.Hierarchy.Deg.DegCod);
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (Gbl.Title,sizeof (Gbl.Title),
@ -533,8 +546,8 @@ static void Deg_Configuration (bool PrintView)
fprintf (Gbl.F.Out,"%u</a>", fprintf (Gbl.F.Out,"%u</a>",
Crs_GetNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod)); Crs_GetNumCrssInDeg (Gbl.Hierarchy.Deg.DegCod));
Frm_EndForm (); Frm_EndForm ();
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** Number of users *****/ /***** Number of users *****/
@ -578,16 +591,19 @@ static void Deg_ShowNumUsrsInCrssOfDeg (Rol_Role_t Role)
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
"%s:" "%s:",
"</td>"
"<td class=\"DAT LEFT_MIDDLE\">"
"%u"
"</td>",
The_ClassFormInBox[Gbl.Prefs.Theme], The_ClassFormInBox[Gbl.Prefs.Theme],
(Role == Rol_UNK) ? Txt_Users_in_courses : (Role == Rol_UNK) ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN], Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
Tbl_EndCell ();
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
"%u",
Usr_GetNumUsrsInCrssOfDeg (Role,Gbl.Hierarchy.Deg.DegCod)); Usr_GetNumUsrsInCrssOfDeg (Role,Gbl.Hierarchy.Deg.DegCod));
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
@ -736,9 +752,9 @@ static void Deg_ListDegreesForEdition (void)
/* Degree code */ /* Degree code */
fprintf (Gbl.F.Out,"<td class=\"DAT CODE\">" fprintf (Gbl.F.Out,"<td class=\"DAT CODE\">"
"%ld" "%ld",
"</td>",
Deg->DegCod); Deg->DegCod);
Tbl_EndCell ();
/* Degree logo */ /* Degree logo */
fprintf (Gbl.F.Out,"<td title=\"%s LEFT_MIDDLE\" style=\"width:25px;\">", fprintf (Gbl.F.Out,"<td title=\"%s LEFT_MIDDLE\" style=\"width:25px;\">",
@ -841,9 +857,9 @@ static void Deg_ListDegreesForEdition (void)
/* Current number of courses in this degree */ /* Current number of courses in this degree */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>",
NumCrss); NumCrss);
Tbl_EndCell ();
/* Degree requester */ /* Degree requester */
UsrDat.UsrCod = Deg->RequesterUsrCod; UsrDat.UsrCod = Deg->RequesterUsrCod;
@ -964,12 +980,15 @@ static void Deg_PutFormToCreateDegree (void)
/***** Write heading *****/ /***** Write heading *****/
Deg_PutHeadDegreesForEdition (); Deg_PutHeadDegreesForEdition ();
/***** Column to remove degree, disabled here *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"BM\"></td>");
/***** Column to remove degree, disabled here *****/
fprintf (Gbl.F.Out,"<td class=\"BM\">");
Tbl_EndCell ();
/***** Degree code *****/ /***** Degree code *****/
fprintf (Gbl.F.Out,"<td class=\"CODE\"></td>"); fprintf (Gbl.F.Out,"<td class=\"CODE\">");
Tbl_EndCell ();
/***** Degree logo *****/ /***** Degree logo *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\" style=\"width:25px;\">"); fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\" style=\"width:25px;\">");
@ -981,18 +1000,18 @@ static void Deg_PutFormToCreateDegree (void)
"<input type=\"text\" name=\"ShortName\"" "<input type=\"text\" name=\"ShortName\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_SHORT_NAME\"" " class=\"INPUT_SHORT_NAME\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Hie_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName); Hie_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName);
Tbl_EndCell ();
/***** Degree full name *****/ /***** Degree full name *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\" name=\"FullName\"" "<input type=\"text\" name=\"FullName\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_FULL_NAME\"" " class=\"INPUT_FULL_NAME\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Hie_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName); Hie_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName);
Tbl_EndCell ();
/***** Degree type *****/ /***** Degree type *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
@ -1008,22 +1027,22 @@ static void Deg_PutFormToCreateDegree (void)
"", "",
DegTyp->DegTypName); DegTyp->DegTypName);
} }
fprintf (Gbl.F.Out,"</select>" fprintf (Gbl.F.Out,"</select>");
"</td>"); Tbl_EndCell ();
/***** Degree WWW *****/ /***** Degree WWW *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"url\" name=\"WWW\"" "<input type=\"url\" name=\"WWW\""
" maxlength=\"%u\" value=\"%s\"" " maxlength=\"%u\" value=\"%s\""
" class=\"INPUT_WWW\"" " class=\"INPUT_WWW\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Cns_MAX_CHARS_WWW,Deg_EditingDeg->WWW); Cns_MAX_CHARS_WWW,Deg_EditingDeg->WWW);
Tbl_EndCell ();
/***** Current number of courses in this degree *****/ /***** Current number of courses in this degree *****/
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"0" "0");
"</td>"); Tbl_EndCell ();
/***** Degree requester *****/ /***** Degree requester *****/
fprintf (Gbl.F.Out,"<td class=\"DAT INPUT_REQUESTER LEFT_TOP\">"); fprintf (Gbl.F.Out,"<td class=\"DAT INPUT_REQUESTER LEFT_TOP\">");
@ -1031,8 +1050,9 @@ static void Deg_PutFormToCreateDegree (void)
Tbl_EndCell (); Tbl_EndCell ();
/***** Degree status *****/ /***** Degree status *****/
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
"</td>"); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** End table, send button and end box *****/ /***** End table, send button and end box *****/
@ -1284,23 +1304,24 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
BgColor = (Deg->DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" : BgColor = (Deg->DegCod == Gbl.Hierarchy.Deg.DegCod) ? "LIGHT_BLUE" :
Gbl.ColorRows[Gbl.RowEvenOdd]; Gbl.ColorRows[Gbl.RowEvenOdd];
/***** Put tip if degree has courses *****/
Tbl_StartRow (); Tbl_StartRow ();
/***** Put tip if degree has courses *****/
fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\" title=\"%s\">" fprintf (Gbl.F.Out,"<td class=\"%s CENTER_MIDDLE %s\" title=\"%s\">"
"%s" "%s",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
NumCrss ? Txt_DEGREE_With_courses : NumCrss ? Txt_DEGREE_With_courses :
Txt_DEGREE_Without_courses, Txt_DEGREE_Without_courses,
NumCrss ? "&check;" : NumCrss ? "&check;" :
"&nbsp;"); "&nbsp;");
Tbl_EndCell ();
/***** Number of degree in this list *****/ /***** Number of degree in this list *****/
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
TxtClassNormal,BgColor, TxtClassNormal,BgColor,
NumDeg); NumDeg);
Tbl_EndCell ();
/***** Degree logo and name *****/ /***** Degree logo and name *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">",BgColor); fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE %s\">",BgColor);
@ -1310,15 +1331,15 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
/***** Type of degree *****/ /***** Type of degree *****/
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE %s\">"
"%s" "%s",
"</td>",
TxtClassNormal,BgColor,DegTyp.DegTypName); TxtClassNormal,BgColor,DegTyp.DegTypName);
Tbl_EndCell ();
/***** Current number of courses in this degree *****/ /***** Current number of courses in this degree *****/
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
TxtClassNormal,BgColor,NumCrss); TxtClassNormal,BgColor,NumCrss);
Tbl_EndCell ();
/***** Degree status *****/ /***** Degree status *****/
StatusTxt = Deg_GetStatusTxtFromStatusBits (Deg->Status); StatusTxt = Deg_GetStatusTxtFromStatusBits (Deg->Status);
@ -1327,6 +1348,7 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg)
if (StatusTxt != Deg_STATUS_ACTIVE) // If active ==> do not show anything if (StatusTxt != Deg_STATUS_ACTIVE) // If active ==> do not show anything
fprintf (Gbl.F.Out,"%s",Txt_DEGREE_STATUS[StatusTxt]); fprintf (Gbl.F.Out,"%s",Txt_DEGREE_STATUS[StatusTxt]);
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
@ -2521,16 +2543,17 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
NumRow <= NumRows; NumRow <= NumRows;
NumRow++) NumRow++)
{ {
/***** Indent *****/
Tbl_StartRow (); Tbl_StartRow ();
/***** Indent *****/
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
"<img src=\"%s/%s20x20.gif\"" "<img src=\"%s/%s20x20.gif\""
" alt=\"\" title=\"\"" " alt=\"\" title=\"\""
" class=\"ICO25x25\" />" " class=\"ICO25x25\" />",
"</td>",
Gbl.RowEvenOdd,Cfg_URL_ICON_PUBLIC, Gbl.RowEvenOdd,Cfg_URL_ICON_PUBLIC,
NumRow == NumRows ? "subend" : NumRow == NumRows ? "subend" :
"submid"); "submid");
Tbl_EndCell ();
/***** Write institution, centre, degree *****/ /***** Write institution, centre, degree *****/
fprintf (Gbl.F.Out,"<td colspan=\"%u\"" fprintf (Gbl.F.Out,"<td colspan=\"%u\""
@ -2594,6 +2617,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
break; break;
} }
Tbl_EndCell (); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }

View File

@ -333,21 +333,22 @@ static void DT_ListDegreeTypesForSeeing (void)
/* Number of degree type in this list */ /* Number of degree type in this list */
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
BgColor,NumDegTyp + 1); BgColor,NumDegTyp + 1);
Tbl_EndCell ();
/* Name of degree type */ /* Name of degree type */
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_MIDDLE %s\">"
"%s" "%s",
"</td>",
BgColor,Gbl.DegTypes.Lst[NumDegTyp].DegTypName); BgColor,Gbl.DegTypes.Lst[NumDegTyp].DegTypName);
Tbl_EndCell ();
/* Number of degrees of this type */ /* Number of degrees of this type */
fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_MIDDLE %s\">" fprintf (Gbl.F.Out,"<td class=\"DAT_N RIGHT_MIDDLE %s\">"
"%u" "%u",
"</td>",
BgColor,Gbl.DegTypes.Lst[NumDegTyp].NumDegs); BgColor,Gbl.DegTypes.Lst[NumDegTyp].NumDegs);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
@ -399,8 +400,9 @@ static void DT_ListDegreeTypesForEdition (void)
NumDegTyp < Gbl.DegTypes.Num; NumDegTyp < Gbl.DegTypes.Num;
NumDegTyp++) NumDegTyp++)
{ {
/* Put icon to remove degree type */
Tbl_StartRow (); Tbl_StartRow ();
/* Put icon to remove degree type */
fprintf (Gbl.F.Out,"<td class=\"BM\">"); fprintf (Gbl.F.Out,"<td class=\"BM\">");
if (Gbl.DegTypes.Lst[NumDegTyp].NumDegs) // Degree type has degrees => deletion forbidden if (Gbl.DegTypes.Lst[NumDegTyp].NumDegs) // Degree type has degrees => deletion forbidden
Ico_PutIconRemovalNotAllowed (); Ico_PutIconRemovalNotAllowed ();
@ -411,13 +413,13 @@ static void DT_ListDegreeTypesForEdition (void)
Ico_PutIconRemove (); Ico_PutIconRemove ();
Frm_EndForm (); Frm_EndForm ();
} }
Tbl_EndCell ();
/* Degree type code */ /* Degree type code */
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"<td class=\"DAT CODE\">"
"<td class=\"DAT CODE\">" "%ld",
"%ld"
"</td>",
Gbl.DegTypes.Lst[NumDegTyp].DegTypCod); Gbl.DegTypes.Lst[NumDegTyp].DegTypCod);
Tbl_EndCell ();
/* Name of degree type */ /* Name of degree type */
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"); fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
@ -435,9 +437,10 @@ static void DT_ListDegreeTypesForEdition (void)
/* Number of degrees of this type */ /* Number of degrees of this type */
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"%u" "%u",
"</td>",
Gbl.DegTypes.Lst[NumDegTyp].NumDegs); Gbl.DegTypes.Lst[NumDegTyp].NumDegs);
Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
} }
@ -473,25 +476,29 @@ static void DT_PutFormToCreateDegreeType (void)
/***** Write heading *****/ /***** Write heading *****/
DT_PutHeadDegreeTypesForEdition (); DT_PutHeadDegreeTypesForEdition ();
/***** Column to remove degree type, disabled here *****/
Tbl_StartRow (); Tbl_StartRow ();
fprintf (Gbl.F.Out,"<td class=\"BM\"></td>");
/***** Column to remove degree type, disabled here *****/
fprintf (Gbl.F.Out,"<td class=\"BM\">");
Tbl_EndCell ();
/***** Degree type code *****/ /***** Degree type code *****/
fprintf (Gbl.F.Out,"<td class=\"CODE\"></td>"); fprintf (Gbl.F.Out,"<td class=\"CODE\">");
Tbl_EndCell ();
/***** Degree type name *****/ /***** Degree type name *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<input type=\"text\" name=\"DegTypName\"" "<input type=\"text\" name=\"DegTypName\""
" size=\"25\" maxlength=\"%u\" value=\"%s\"" " size=\"25\" maxlength=\"%u\" value=\"%s\""
" required=\"required\" />" " required=\"required\" />",
"</td>",
Deg_MAX_CHARS_DEGREE_TYPE_NAME,DT_EditingDegTyp->DegTypName); Deg_MAX_CHARS_DEGREE_TYPE_NAME,DT_EditingDegTyp->DegTypName);
Tbl_EndCell ();
/***** Number of degrees of this degree type ****/ /***** Number of degrees of this degree type ****/
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">" fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
"0" "0");
"</td>"); Tbl_EndCell ();
Tbl_EndRow (); Tbl_EndRow ();
/***** End table, send button and end box *****/ /***** End table, send button and end box *****/