swad-core/swad_hierarchy_config.c

347 lines
11 KiB
C
Raw Normal View History

2019-12-29 20:11:57 +01:00
// swad_hierarchy_config.c: hierarchy (country, institution, centre, degree, course) configuration
/*
SWAD (Shared Workspace At a Distance),
is a web platform developed at the University of Granada (Spain),
and used to support university teaching.
This file is part of SWAD core.
2021-02-09 12:43:45 +01:00
Copyright (C) 1999-2021 Antonio Ca<EFBFBD>as Vargas
2019-12-29 20:11:57 +01:00
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
2020-05-02 10:53:40 +02:00
#include "swad_figure_cache.h"
2019-12-29 20:11:57 +01:00
#include "swad_form.h"
#include "swad_global.h"
#include "swad_HTML.h"
#include "swad_logo.h"
#include "swad_QR.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
/*****************************************************************************/
extern struct Globals Gbl;
/*****************************************************************************/
/*************************** Public constants ********************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private types *********************************/
/*****************************************************************************/
/*****************************************************************************/
/**************************** Private constants ******************************/
/*****************************************************************************/
/*****************************************************************************/
/**************************** Private prototypes *****************************/
/*****************************************************************************/
/*****************************************************************************/
/************************ Show title in configuration ************************/
/*****************************************************************************/
void HieCfg_Title (bool PutLink,
2021-02-11 22:57:09 +01:00
Hie_Lvl_Level_t LogoScope,
2019-12-29 20:11:57 +01:00
long LogoCod,
2021-02-11 22:57:09 +01:00
char LogoShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1],
char LogoFullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1],
2019-12-29 20:11:57 +01:00
char LogoWWW[Cns_MAX_BYTES_WWW + 1],
2021-02-11 22:57:09 +01:00
char TextFullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1])
2019-12-29 20:11:57 +01:00
{
HTM_DIV_Begin ("class=\"FRAME_TITLE FRAME_TITLE_BIG\"");
if (PutLink)
HTM_A_Begin ("href=\"%s\" target=\"_blank\""
" class=\"FRAME_TITLE_BIG\" title=\"%s\"",
LogoWWW,LogoFullName);
Lgo_DrawLogo (LogoScope,LogoCod,LogoShrtName,64,NULL,true);
HTM_BR ();
HTM_Txt (TextFullName);
if (PutLink)
HTM_A_End ();
HTM_DIV_End ();
}
/*****************************************************************************/
/********************** Show full name in configuration **********************/
/*****************************************************************************/
void HieCfg_FullName (bool PutForm,const char *Label,Act_Action_t NextAction,
2021-02-11 22:57:09 +01:00
const char FullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1])
2019-12-29 20:11:57 +01:00
{
/***** Full name *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",PutForm ? "FullName" :
NULL,
Label);
/* Data */
HTM_TD_Begin ("class=\"DAT_N LB\"");
if (PutForm)
{
/* Form to change full name */
Frm_BeginForm (NextAction);
2021-02-11 22:57:09 +01:00
HTM_INPUT_TEXT ("FullName",Cns_HIERARCHY_MAX_CHARS_FULL_NAME,FullName,
2020-04-27 03:16:55 +02:00
HTM_SUBMIT_ON_CHANGE,
2019-12-29 20:11:57 +01:00
"id=\"FullName\" class=\"INPUT_FULL_NAME\""
" required=\"required\"");
Frm_EndForm ();
}
else // I can not edit full name
HTM_Txt (FullName);
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/********* Show institution short name in institution configuration **********/
/*****************************************************************************/
void HieCfg_ShrtName (bool PutForm,Act_Action_t NextAction,
2021-02-11 22:57:09 +01:00
const char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1])
2019-12-29 20:11:57 +01:00
{
extern const char *Txt_Short_name;
/***** Short name *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",PutForm ? "ShortName" :
NULL,
Txt_Short_name);
/* Data */
HTM_TD_Begin ("class=\"DAT_N LB\"");
if (PutForm)
{
/* Form to change short name */
Frm_BeginForm (NextAction);
2021-02-11 22:57:09 +01:00
HTM_INPUT_TEXT ("ShortName",Cns_HIERARCHY_MAX_CHARS_SHRT_NAME,ShrtName,
2020-04-27 03:16:55 +02:00
HTM_SUBMIT_ON_CHANGE,
2019-12-29 20:11:57 +01:00
"id=\"ShortName\" class=\"INPUT_SHORT_NAME\""
" required=\"required\"");
Frm_EndForm ();
}
else // I can not edit short name
HTM_Txt (ShrtName);
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/************************* Show web in configuration *************************/
/*****************************************************************************/
void HieCfg_WWW (bool PrintView,bool PutForm,Act_Action_t NextAction,
const char WWW[Cns_MAX_BYTES_WWW + 1])
{
extern const char *Txt_Web;
/***** Web *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",PutForm ? "WWW" :
NULL,
Txt_Web);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (PutForm)
{
/* Form to change web */
Frm_BeginForm (NextAction);
2020-04-27 03:16:55 +02:00
HTM_INPUT_URL ("WWW",WWW,HTM_SUBMIT_ON_CHANGE,
2019-12-29 20:11:57 +01:00
"id=\"WWW\" class=\"INPUT_WWW_WIDE\" required=\"required\"");
Frm_EndForm ();
}
else // I can not change web
{
HTM_DIV_Begin ("class=\"EXTERNAL_WWW_LONG\"");
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"DAT\"",WWW);
HTM_Txt (WWW);
if (!PrintView)
HTM_A_End ();
HTM_DIV_End ();
}
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/********************** Show shortcut in configuration ***********************/
/*****************************************************************************/
void HieCfg_Shortcut (bool PrintView,const char *ParamName,long HieCod)
{
extern const char *Txt_Shortcut;
/***** Short cut *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Shortcut);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (!PrintView)
2020-01-08 23:49:04 +01:00
{
if (ParamName)
2020-01-09 16:44:14 +01:00
HTM_A_Begin ("href=\"%s/?%s=%ld\" class=\"DAT\" target=\"_blank\"",
2020-01-08 23:49:04 +01:00
Cfg_URL_SWAD_CGI,
ParamName,HieCod);
else
2020-01-09 16:44:14 +01:00
HTM_A_Begin ("href=\"%s/\" class=\"DAT\" target=\"_blank\"",
Cfg_URL_SWAD_CGI);
2020-01-08 23:49:04 +01:00
}
if (ParamName)
2020-01-09 16:44:14 +01:00
HTM_TxtF ("%s/?%s=%ld",
2020-01-08 23:49:04 +01:00
Cfg_URL_SWAD_CGI,
ParamName,HieCod);
else
2020-01-09 16:44:14 +01:00
HTM_TxtF ("%s/",
Cfg_URL_SWAD_CGI);
2019-12-29 20:11:57 +01:00
if (!PrintView)
HTM_A_End ();
HTM_TD_End ();
HTM_TR_End ();
}
2020-01-25 22:18:01 +01:00
/*****************************************************************************/
/************************** Show number of centres ***************************/
/*****************************************************************************/
2020-01-26 14:10:27 +01:00
void HieCfg_NumCtrs (unsigned NumCtrs,bool PutForm)
2020-01-25 22:18:01 +01:00
{
extern const char *Txt_Centres;
2020-01-26 14:10:27 +01:00
extern const char *Txt_Centres_of_INSTITUTION_X;
2020-01-25 22:18:01 +01:00
/***** Number of centres *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Centres);
/* Data */
2020-01-26 14:10:27 +01:00
HTM_TD_Begin ("class=\"LB\"");
if (PutForm)
{
Frm_BeginFormGoTo (ActSeeCtr);
2020-01-26 14:10:27 +01:00
Ins_PutParamInsCod (Gbl.Hierarchy.Ins.InsCod);
HTM_BUTTON_SUBMIT_Begin (Str_BuildStringStr (Txt_Centres_of_INSTITUTION_X,
Gbl.Hierarchy.Ins.ShrtName),
"BT_LINK DAT",NULL);
Str_FreeString ();
}
2020-01-25 22:18:01 +01:00
HTM_Unsigned (NumCtrs);
2020-01-26 14:10:27 +01:00
if (PutForm)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
2020-01-25 22:18:01 +01:00
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/********************* Show number of centres with map ***********************/
/*****************************************************************************/
void HieCfg_NumCtrsWithMap (unsigned NumCtrs,unsigned NumCtrsWithMap)
{
extern const char *Txt_Centres_with_map;
/***** Number of centres with map *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Centres_with_map);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_TxtF ("%u (%.1lf%%)",
NumCtrsWithMap,
NumCtrs ? (double) NumCtrsWithMap * 100.0 /
(double) NumCtrs :
0.0);
HTM_TD_End ();
HTM_TR_End ();
}
2019-12-29 20:11:57 +01:00
/*****************************************************************************/
/************************* Show QR in configuration **************************/
/*****************************************************************************/
void HieCfg_QR (const char *ParamName,long HieCod)
{
extern const char *Txt_QR_code;
/***** QR *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_QR_code);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
QR_LinkTo (250,ParamName,HieCod);
HTM_TD_End ();
HTM_TR_End ();
}
2020-05-02 10:53:40 +02:00
/*****************************************************************************/
/************************ Number of users in courses *************************/
/*****************************************************************************/
2021-02-11 22:57:09 +01:00
void HieCfg_NumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Role)
2020-05-02 10:53:40 +02:00
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
2020-05-03 20:58:03 +02:00
HTM_Unsigned (Usr_GetCachedNumUsrsInCrss (Scope,Cod,
Role == Rol_UNK ? (1 << Rol_STD) |
(1 << Rol_NET) |
(1 << Rol_TCH) : // Any user
(1 << Role)));
2020-05-02 10:53:40 +02:00
HTM_TD_End ();
HTM_TR_End ();
}