");
Frm_StartForm (ActMnu);
Par_PutHiddenParamUnsigned ("NxtTab",(unsigned) NumTab);
Frm_LinkFormSubmit (Txt_TABS_TXT[NumTab],
NumTab == Gbl.Action.Tab ? The_ClassTxtTabOn[Gbl.Prefs.Theme] :
The_ClassTxtTabOff[Gbl.Prefs.Theme],NULL);
fprintf (Gbl.F.Out,"
",
Gbl.Prefs.URLIconSet,
Tab_GetIcon (NumTab),
Txt_TABS_TXT[NumTab],
Txt_TABS_TXT[NumTab]);
HTM_DIV_Begin ("class=\"TAB_TXT %s\"",
NumTab == Gbl.Action.Tab ? The_ClassTxtTabOn[Gbl.Prefs.Theme] :
The_ClassTxtTabOff[Gbl.Prefs.Theme]);
fprintf (Gbl.F.Out,"%s",Txt_TABS_TXT[NumTab]);
HTM_DIV_End ();
fprintf (Gbl.F.Out,"");
Frm_EndForm ();
HTM_DIV_End ();
fprintf (Gbl.F.Out,"");
}
}
/***** End tabs container *****/
fprintf (Gbl.F.Out,""
"");
HTM_DIV_End ();
}
/*****************************************************************************/
/************************* Check if I can view a tab *************************/
/*****************************************************************************/
static bool Tab_CheckIfICanViewTab (Tab_Tab_t Tab)
{
switch (Tab)
{
case TabUnk:
return false;
case TabSys:
return (Gbl.Hierarchy.Cty.CtyCod <= 0); // No country selected
case TabCty:
return (Gbl.Hierarchy.Cty.CtyCod > 0 && // Country selected
Gbl.Hierarchy.Ins.InsCod <= 0); // No institution selected
case TabIns:
return (Gbl.Hierarchy.Ins.InsCod > 0 && // Institution selected
Gbl.Hierarchy.Ctr.CtrCod <= 0); // No centre selected
case TabCtr:
return (Gbl.Hierarchy.Ctr.CtrCod > 0 && // Centre selected
Gbl.Hierarchy.Deg.DegCod <= 0); // No degree selected
case TabDeg:
return (Gbl.Hierarchy.Deg.DegCod > 0 && // Degree selected
Gbl.Hierarchy.Crs.CrsCod <= 0); // No course selected
case TabCrs:
return (Gbl.Hierarchy.Level == Hie_CRS); // Course selected
case TabAss:
return (Gbl.Hierarchy.Level == Hie_CRS || // Course selected
Gbl.Usrs.Me.Role.Logged >= Rol_STD); // I belong to course or I am an admin
case TabFil:
return (Gbl.Hierarchy.Ins.InsCod > 0 || // Institution selected
Gbl.Usrs.Me.Logged); // I'm logged
default:
return true;
}
}
/*****************************************************************************/
/********************** Get icon associated to an action *********************/
/*****************************************************************************/
static const char *Tab_GetIcon (Tab_Tab_t NumTab)
{
if (NumTab < (Tab_Tab_t) 1 || NumTab >= Tab_NUM_TABS)
return NULL;
return Ico_GetIcon (Tab_TabIcons[NumTab]);
}
/*****************************************************************************/
/*************** Set current tab depending on current action *****************/
/*****************************************************************************/
void Tab_SetCurrentTab (void)
{
Gbl.Action.Tab = Act_GetTab (Gbl.Action.Act);
/***** Change action and tab if country, institution, centre or degree
are incompatible with the current tab *****/
switch (Gbl.Action.Tab)
{
case TabCty:
if (Gbl.Hierarchy.Cty.CtyCod <= 0) // No country selected
Gbl.Action.Act = ActSeeCty;
break;
case TabIns:
if (Gbl.Hierarchy.Ins.InsCod <= 0) // No institution selected
{
if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected, but no institution selected
Gbl.Action.Act = ActSeeIns;
else // No country selected
Gbl.Action.Act = ActSeeCty;
}
break;
case TabCtr:
if (Gbl.Hierarchy.Ctr.CtrCod <= 0) // No centre selected
{
if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected, but no centre selected
Gbl.Action.Act = ActSeeCtr;
else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected, but no institution selected
Gbl.Action.Act = ActSeeIns;
else // No country selected
Gbl.Action.Act = ActSeeCty;
}
break;
case TabDeg:
if (Gbl.Hierarchy.Deg.DegCod <= 0) // No degree selected
{
if (Gbl.Hierarchy.Ctr.CtrCod > 0) // Centre selected, but no degree selected
Gbl.Action.Act = ActSeeDeg;
else if (Gbl.Hierarchy.Ins.InsCod > 0) // Institution selected, but no centre selected
Gbl.Action.Act = ActSeeCtr;
else if (Gbl.Hierarchy.Cty.CtyCod > 0) // Country selected, but no institution selected
Gbl.Action.Act = ActSeeIns;
else // No country selected
Gbl.Action.Act = ActSeeCty;
}
break;
default:
break;
}
Gbl.Action.Tab = Act_GetTab (Act_GetSuperAction (Gbl.Action.Act));
Tab_DisableIncompatibleTabs ();
}
/*****************************************************************************/
/************************** Disable incompatible tabs ************************/
/*****************************************************************************/
void Tab_DisableIncompatibleTabs (void)
{
/***** Set country, institution, centre, degree and course depending on the current tab.
This will disable tabs incompatible with the current one. *****/
switch (Gbl.Action.Tab)
{
case TabSys:
Gbl.Hierarchy.Cty.CtyCod = -1L;
/* falls through */
/* no break */
case TabCty:
Gbl.Hierarchy.Ins.InsCod = -1L;
/* falls through */
/* no break */
case TabIns:
Gbl.Hierarchy.Ctr.CtrCod = -1L;
/* falls through */
/* no break */
case TabCtr:
Gbl.Hierarchy.Deg.DegCod = -1L;
/* falls through */
/* no break */
case TabDeg:
Gbl.Hierarchy.Crs.CrsCod = -1L;
break;
default:
break;
}
}