swad-core/swad_institution_config.c

643 lines
21 KiB
C
Raw Normal View History

2019-12-29 16:21:42 +01:00
// swad_institution.c: institutions
/*
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 16:21:42 +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-01-03 22:16:51 +01:00
#define _GNU_SOURCE // For asprintf
2019-12-29 16:21:42 +01:00
#include <stdbool.h> // For boolean type
#include <stddef.h> // For NULL
2020-01-03 22:16:51 +01:00
#include <stdio.h> // For asprintf
#include <stdlib.h> // For free
2019-12-29 16:21:42 +01:00
#include "swad_center_database.h"
2019-12-29 16:21:42 +01:00
#include "swad_database.h"
#include "swad_department_database.h"
#include "swad_error.h"
2020-05-03 20:58:03 +02:00
#include "swad_figure_cache.h"
2019-12-29 16:21:42 +01:00
#include "swad_form.h"
#include "swad_global.h"
#include "swad_help.h"
2021-02-11 22:57:09 +01:00
#include "swad_hierarchy.h"
2019-12-29 20:11:57 +01:00
#include "swad_hierarchy_config.h"
#include "swad_hierarchy_level.h"
2019-12-29 16:21:42 +01:00
#include "swad_HTML.h"
#include "swad_institution.h"
#include "swad_institution_database.h"
2019-12-29 16:21:42 +01:00
#include "swad_logo.h"
2020-04-14 17:15:17 +02:00
#include "swad_place.h"
2019-12-29 16:21:42 +01:00
/*****************************************************************************/
/************** External global variables from others modules ****************/
/*****************************************************************************/
extern struct Globals Gbl;
/*****************************************************************************/
/***************************** Private constants *****************************/
/*****************************************************************************/
/*****************************************************************************/
/******************************* Private types *******************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private variables *****************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void InsCfg_Configuration (bool PrintView);
2020-04-08 18:18:46 +02:00
static void InsCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args);
2019-12-29 16:21:42 +01:00
static void InsCfg_Title (bool PutLink);
static void InsCfg_Map (void);
static void InsCfg_Country (bool PrintView,bool PutForm);
static void InsCfg_FullName (bool PutForm);
static void InsCfg_ShrtName (bool PutForm);
static void InsCfg_WWW (bool PrintView,bool PutForm);
static void InsCfg_Shortcut (bool PrintView);
static void InsCfg_QR (void);
static void InsCfg_NumUsrs (void);
static void InsCfg_NumDegs (void);
static void InsCfg_NumCrss (void);
static void InsCfg_NumDpts (void);
/*****************************************************************************/
/*************** Show information of the current institution *****************/
/*****************************************************************************/
void InsCfg_ShowConfiguration (void)
{
InsCfg_Configuration (false);
/***** Show help to enrol me *****/
Hlp_ShowHelpWhatWouldYouLikeToDo ();
}
/*****************************************************************************/
/*************** Print information of the current institution ****************/
/*****************************************************************************/
void InsCfg_PrintConfiguration (void)
{
InsCfg_Configuration (true);
}
/*****************************************************************************/
/***************** Information of the current institution ********************/
/*****************************************************************************/
static void InsCfg_Configuration (bool PrintView)
{
extern const char *Hlp_INSTITUTION_Information;
bool PutLink;
bool PutFormCty;
bool PutFormName;
bool PutFormWWW;
2020-01-26 14:10:27 +01:00
unsigned NumCtrs;
unsigned NumCtrsWithMap;
2019-12-29 16:21:42 +01:00
/***** Trivial check *****/
if (Gbl.Hierarchy.Ins.InsCod <= 0) // No institution selected
return;
/***** Initializations *****/
PutLink = !PrintView && Gbl.Hierarchy.Ins.WWW[0];
PutFormCty =
PutFormName = !PrintView && Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM;
PutFormWWW = !PrintView && Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM;
/***** Begin box *****/
if (PrintView)
2020-03-26 02:54:30 +01:00
Box_BoxBegin (NULL,NULL,
NULL,NULL,
2019-12-29 16:21:42 +01:00
NULL,Box_NOT_CLOSABLE);
else
2020-03-26 02:54:30 +01:00
Box_BoxBegin (NULL,NULL,
2020-04-08 18:18:46 +02:00
InsCfg_PutIconsToPrintAndUpload,NULL,
2019-12-29 16:21:42 +01:00
Hlp_INSTITUTION_Information,Box_NOT_CLOSABLE);
/***** Title *****/
InsCfg_Title (PutLink);
/**************************** Left part ***********************************/
2020-01-14 14:16:14 +01:00
HTM_DIV_Begin ("class=\"HIE_CFG_LEFT HIE_CFG_WIDTH\"");
2019-12-29 16:21:42 +01:00
/***** Begin table *****/
HTM_TABLE_BeginWidePadding (2);
2019-12-29 16:21:42 +01:00
/***** Country *****/
InsCfg_Country (PrintView,PutFormCty);
2019-12-29 16:21:42 +01:00
/***** Institution name *****/
InsCfg_FullName (PutFormName);
InsCfg_ShrtName (PutFormName);
2019-12-29 16:21:42 +01:00
/***** Institution WWW *****/
InsCfg_WWW (PrintView,PutFormWWW);
2019-12-29 16:21:42 +01:00
/***** Shortcut to the institution *****/
InsCfg_Shortcut (PrintView);
2019-12-29 16:21:42 +01:00
NumCtrsWithMap = Ctr_GetCachedNumCtrsWithMapInIns (Gbl.Hierarchy.Ins.InsCod);
if (PrintView)
/***** QR code with link to the institution *****/
InsCfg_QR ();
else
{
NumCtrs = Ctr_GetCachedNumCtrsInIns (Gbl.Hierarchy.Ins.InsCod);
/***** Number of users who claim to belong to this institution,
number of centers,
number of degrees,
number of courses,
number of departments *****/
InsCfg_NumUsrs ();
HieCfg_NumCtrs (NumCtrs,
true); // Put form
HieCfg_NumCtrsWithMap (NumCtrs,NumCtrsWithMap);
InsCfg_NumDegs ();
InsCfg_NumCrss ();
InsCfg_NumDpts ();
/***** Number of users in courses of this institution *****/
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_NET);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_STD);
HieCfg_NumUsrsInCrss (HieLvl_INS,Gbl.Hierarchy.Ins.InsCod,Rol_UNK);
}
2019-12-29 16:21:42 +01:00
/***** End table *****/
HTM_TABLE_End ();
2019-12-29 16:21:42 +01:00
/***** End of left part *****/
HTM_DIV_End ();
/**************************** Right part **********************************/
2020-01-26 14:10:27 +01:00
if (NumCtrsWithMap)
2019-12-29 16:21:42 +01:00
{
2020-01-14 14:16:14 +01:00
HTM_DIV_Begin ("class=\"HIE_CFG_RIGHT HIE_CFG_WIDTH\"");
2019-12-29 16:21:42 +01:00
/***** Institution map *****/
InsCfg_Map ();
2019-12-29 16:21:42 +01:00
HTM_DIV_End ();
}
/***** End box *****/
Box_BoxEnd ();
}
/*****************************************************************************/
/********* Put contextual icons in configuration of an institution ***********/
/*****************************************************************************/
2020-04-08 18:18:46 +02:00
static void InsCfg_PutIconsToPrintAndUpload (__attribute__((unused)) void *Args)
2019-12-29 16:21:42 +01:00
{
2020-04-08 18:18:46 +02:00
/***** Icon to print info about institution *****/
Ico_PutContextualIconToPrint (ActPrnInsInf,
NULL,NULL);
2019-12-29 16:21:42 +01:00
2020-04-08 18:18:46 +02:00
if (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM)
/***** Icon to upload logo of institution *****/
Lgo_PutIconToChangeLogo (HieLvl_INS);
2019-12-29 16:21:42 +01:00
2020-04-08 18:18:46 +02:00
/***** Put icon to view places *****/
Plc_PutIconToViewPlaces ();
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/***************** Show title in institution configuration *******************/
/*****************************************************************************/
static void InsCfg_Title (bool PutLink)
{
2019-12-29 20:11:57 +01:00
HieCfg_Title (PutLink,
HieLvl_INS, // Logo scope
2019-12-29 16:21:42 +01:00
Gbl.Hierarchy.Ins.InsCod, // Logo code
Gbl.Hierarchy.Ins.ShrtName, // Logo short name
Gbl.Hierarchy.Ins.FullName, // Logo full name
Gbl.Hierarchy.Ins.WWW, // Logo www
Gbl.Hierarchy.Ins.FullName); // Text full name
}
/*****************************************************************************/
/****************************** Draw center map ******************************/
2019-12-29 16:21:42 +01:00
/*****************************************************************************/
2020-01-03 13:21:05 +01:00
#define InsCfg_MAP_CONTAINER_ID "ins_mapid"
2019-12-29 16:21:42 +01:00
static void InsCfg_Map (void)
{
2020-01-03 13:21:05 +01:00
MYSQL_RES *mysql_res;
struct Map_Coordinates InsAvgCoord;
2020-01-03 19:29:29 +01:00
unsigned Zoom;
2020-01-03 13:21:05 +01:00
unsigned NumCtrs;
unsigned NumCtr;
struct Ctr_Center Ctr;
2020-01-03 13:21:05 +01:00
2019-12-29 16:21:42 +01:00
/***** Leaflet CSS *****/
2020-01-03 13:21:05 +01:00
Map_LeafletCSS ();
2019-12-29 16:21:42 +01:00
/***** Leaflet script *****/
2020-01-03 13:21:05 +01:00
Map_LeafletScript ();
2019-12-29 16:21:42 +01:00
/***** Container for the map *****/
2020-01-03 13:21:05 +01:00
HTM_DIV_Begin ("id=\"%s\"",InsCfg_MAP_CONTAINER_ID);
2019-12-29 16:21:42 +01:00
HTM_DIV_End ();
/***** Script to draw the map *****/
HTM_SCRIPT_Begin (NULL,NULL);
2020-01-03 13:21:05 +01:00
/* Let's create a map with pretty Mapbox Streets tiles */
Ctr_DB_GetCoordAndZoomInCurrentIns (&InsAvgCoord,&Zoom);
2020-01-03 19:29:29 +01:00
Map_CreateMap (InsCfg_MAP_CONTAINER_ID,&InsAvgCoord,Zoom);
2020-01-03 13:21:05 +01:00
/* Add Mapbox Streets tile layer to our map */
Map_AddTileLayer ();
/* Get centers with coordinates */
NumCtrs = Ctr_DB_GetCtrsWithCoordsInCurrentIns (&mysql_res);
2020-01-03 13:21:05 +01:00
/* Add a marker and a popup for each center */
2020-01-03 13:21:05 +01:00
for (NumCtr = 0;
NumCtr < NumCtrs;
NumCtr++)
{
/* Get next center */
Ctr.CtrCod = DB_GetNextCode (mysql_res);
2020-01-03 13:21:05 +01:00
/* Get data of center */
Ctr_GetDataOfCenterByCod (&Ctr);
2020-01-03 13:21:05 +01:00
/* Add marker */
Map_AddMarker (&Ctr.Coord);
/* Add popup */
2020-01-03 17:15:17 +01:00
Map_AddPopup (Ctr.ShrtName,Gbl.Hierarchy.Ins.ShrtName,
false); // Closed
2020-01-03 13:21:05 +01:00
}
/* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res);
2019-12-29 16:21:42 +01:00
HTM_SCRIPT_End ();
}
/*****************************************************************************/
/***************** Show country in institution configuration *****************/
/*****************************************************************************/
static void InsCfg_Country (bool PrintView,bool PutForm)
{
extern const char *Txt_Country;
unsigned NumCty;
/***** Get list of countries *****/
Cty_GetBasicListOfCountries ();
2019-12-29 16:21:42 +01:00
/***** Country *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",PutForm ? "OthCtyCod" :
NULL,
Txt_Country);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (PutForm)
{
/* Put form to select country */
Frm_BeginForm (ActChgInsCtyCfg);
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
"id=\"OthCtyCod\" name=\"OthCtyCod\""
" class=\"INPUT_SHORT_NAME\"");
for (NumCty = 0;
NumCty < Gbl.Hierarchy.Ctys.Num;
NumCty++)
HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod,
Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod == Gbl.Hierarchy.Cty.CtyCod,false,
"%s",Gbl.Hierarchy.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]);
HTM_SELECT_End ();
Frm_EndForm ();
}
else // I can not move institution to another country
{
if (!PrintView)
{
Frm_BeginFormGoTo (ActSeeCtyInf);
Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod);
HTM_BUTTON_SUBMIT_Begin (Hie_BuildGoToMsg (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]),
"BT_LINK LT DAT",NULL);
Hie_FreeGoToMsg ();
}
Cty_DrawCountryMap (&Gbl.Hierarchy.Cty,"COUNTRY_MAP_TINY");
HTM_NBSP ();
HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]);
if (!PrintView)
{
HTM_BUTTON_End ();
Frm_EndForm ();
}
}
HTM_TD_End ();
2019-12-29 16:21:42 +01:00
HTM_TR_End ();
// Do not free list of countries here, because it can be reused
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/********* Show institution full name in institution configuration ***********/
/*****************************************************************************/
static void InsCfg_FullName (bool PutForm)
{
extern const char *Txt_Institution;
2019-12-29 20:11:57 +01:00
HieCfg_FullName (PutForm,Txt_Institution,ActRenInsFulCfg,
2020-01-06 11:58:05 +01:00
Gbl.Hierarchy.Ins.FullName);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/********* Show institution short name in institution configuration **********/
/*****************************************************************************/
static void InsCfg_ShrtName (bool PutForm)
{
2019-12-29 20:11:57 +01:00
HieCfg_ShrtName (PutForm,ActRenInsShoCfg,Gbl.Hierarchy.Ins.ShrtName);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/************ Show institution WWW in institution configuration **************/
/*****************************************************************************/
static void InsCfg_WWW (bool PrintView,bool PutForm)
{
2019-12-29 20:11:57 +01:00
HieCfg_WWW (PrintView,PutForm,ActChgInsWWWCfg,Gbl.Hierarchy.Ins.WWW);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/********** Show institution shortcut in institution configuration ***********/
/*****************************************************************************/
static void InsCfg_Shortcut (bool PrintView)
{
2019-12-29 20:11:57 +01:00
HieCfg_Shortcut (PrintView,"ins",Gbl.Hierarchy.Ins.InsCod);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/************* Show institution QR in institution configuration **************/
/*****************************************************************************/
static void InsCfg_QR (void)
{
2019-12-29 20:11:57 +01:00
HieCfg_QR ("ins",Gbl.Hierarchy.Ins.InsCod);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/** Show number of users who claim to belong to instit. in instit. config. ***/
/*****************************************************************************/
static void InsCfg_NumUsrs (void)
{
extern const char *Txt_Users_of_the_institution;
/***** Number of users *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Users_of_the_institution);
2019-12-29 16:21:42 +01:00
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Usr_GetCachedNumUsrsWhoClaimToBelongToIns (&Gbl.Hierarchy.Ins));
HTM_TD_End ();
2019-12-29 16:21:42 +01:00
HTM_TR_End ();
}
/*****************************************************************************/
/*********** Show number of degrees in institution configuration *************/
/*****************************************************************************/
static void InsCfg_NumDegs (void)
{
extern const char *Txt_Degrees;
/***** Number of degrees *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Degrees);
2019-12-29 16:21:42 +01:00
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Deg_GetCachedNumDegsInIns (Gbl.Hierarchy.Ins.InsCod));
HTM_TD_End ();
2019-12-29 16:21:42 +01:00
HTM_TR_End ();
}
/*****************************************************************************/
/************ Show number of courses in institution configuration ************/
/*****************************************************************************/
static void InsCfg_NumCrss (void)
{
extern const char *Txt_Courses;
/***** Number of courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Courses);
2019-12-29 16:21:42 +01:00
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Crs_GetCachedNumCrssInIns (Gbl.Hierarchy.Ins.InsCod));
HTM_TD_End ();
2019-12-29 16:21:42 +01:00
HTM_TR_End ();
}
/*****************************************************************************/
/********** Show number of departments in institution configuration **********/
/*****************************************************************************/
static void InsCfg_NumDpts (void)
{
extern const char *Txt_Departments;
/***** Number of departments *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_Departments);
2019-12-29 16:21:42 +01:00
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Dpt_DB_GetNumDepartmentsInInstitution (Gbl.Hierarchy.Ins.InsCod));
HTM_TD_End ();
2019-12-29 16:21:42 +01:00
HTM_TR_End ();
}
/*****************************************************************************/
/******** Show a form for sending a logo of the current institution **********/
/*****************************************************************************/
void InsCfg_RequestLogo (void)
{
Lgo_RequestLogo (HieLvl_INS);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/************** Receive the logo of the current institution ******************/
/*****************************************************************************/
void InsCfg_ReceiveLogo (void)
{
Lgo_ReceiveLogo (HieLvl_INS);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/*************** Remove the logo of the current institution ******************/
/*****************************************************************************/
void InsCfg_RemoveLogo (void)
{
Lgo_RemoveLogo (HieLvl_INS);
2019-12-29 16:21:42 +01:00
}
/*****************************************************************************/
/******************* Change the country of a institution *********************/
/*****************************************************************************/
void InsCfg_ChangeInsCty (void)
{
extern const char *Txt_The_institution_X_already_exists;
extern const char *Txt_The_country_of_the_institution_X_has_changed_to_Y;
2021-02-11 22:57:09 +01:00
struct Cty_Countr NewCty;
2019-12-29 16:21:42 +01:00
/***** Get the new country code for the institution *****/
NewCty.CtyCod = Cty_GetAndCheckParamOtherCtyCod (0);
/***** Check if country has changed *****/
if (NewCty.CtyCod != Gbl.Hierarchy.Ins.CtyCod)
{
/***** Get data of the country from database *****/
2020-01-07 22:07:06 +01:00
Cty_GetDataOfCountryByCod (&NewCty);
2019-12-29 16:21:42 +01:00
/***** Check if it already exists an institution with the same name in the new country *****/
if (Ins_DB_CheckIfInsNameExistsInCty ("ShortName",Gbl.Hierarchy.Ins.ShrtName,-1L,NewCty.CtyCod))
2019-12-29 16:21:42 +01:00
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_The_institution_X_already_exists,
Gbl.Hierarchy.Ins.ShrtName);
else if (Ins_DB_CheckIfInsNameExistsInCty ("FullName",Gbl.Hierarchy.Ins.FullName,-1L,NewCty.CtyCod))
2019-12-29 16:21:42 +01:00
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_The_institution_X_already_exists,
Gbl.Hierarchy.Ins.FullName);
else
{
/***** Update the table changing the country of the institution *****/
Ins_DB_UpdateInsCty (Gbl.Hierarchy.Ins.InsCod,NewCty.CtyCod);
2019-12-29 16:21:42 +01:00
Gbl.Hierarchy.Ins.CtyCod =
Gbl.Hierarchy.Cty.CtyCod = NewCty.CtyCod;
/***** Initialize again current course, degree, center... *****/
2019-12-29 16:21:42 +01:00
Hie_InitHierarchy ();
/***** Write message to show the change made *****/
Ale_CreateAlert (Ale_SUCCESS,NULL,
Txt_The_country_of_the_institution_X_has_changed_to_Y,
Gbl.Hierarchy.Ins.FullName,NewCty.Name[Gbl.Prefs.Language]);
}
}
}
/*****************************************************************************/
/************ Change the name of an institution in configuration *************/
/*****************************************************************************/
void InsCfg_RenameInsShort (void)
{
/***** Rename institution *****/
Ins_RenameInstitution (&Gbl.Hierarchy.Ins,Cns_SHRT_NAME);
}
void InsCfg_RenameInsFull (void)
{
/***** Rename institution *****/
Ins_RenameInstitution (&Gbl.Hierarchy.Ins,Cns_FULL_NAME);
}
/*****************************************************************************/
/********************** Change the URL of a institution **********************/
/*****************************************************************************/
void InsCfg_ChangeInsWWW (void)
{
extern const char *Txt_The_new_web_address_is_X;
char NewWWW[Cns_MAX_BYTES_WWW + 1];
/***** Get parameters from form *****/
/* Get the new WWW for the institution */
Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW);
/***** Check if new WWW is empty *****/
if (NewWWW[0])
{
/***** Update database changing old WWW by new WWW *****/
Ins_DB_UpdateInsWWW (Gbl.Hierarchy.Ins.InsCod,NewWWW);
Str_Copy (Gbl.Hierarchy.Ins.WWW,NewWWW,sizeof (Gbl.Hierarchy.Ins.WWW) - 1);
2019-12-29 16:21:42 +01:00
/***** Write message to show the change made *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_The_new_web_address_is_X,
NewWWW);
}
else
Ale_ShowAlertYouCanNotLeaveFieldEmpty ();
/***** Show the form again *****/
InsCfg_ShowConfiguration ();
}
/*****************************************************************************/
/*** Show msg. of success after changing an institution in instit. config. ***/
/*****************************************************************************/
void InsCfg_ContEditAfterChgIns (void)
{
/***** Write success / warning message *****/
Ale_ShowAlerts (NULL);
/***** Show the form again *****/
InsCfg_ShowConfiguration ();
}