mirror of https://github.com/acanas/swad-core.git
Version18.95.1
This commit is contained in:
parent
f23839ae96
commit
9455534308
|
@ -464,10 +464,11 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.95 (2019-04-03)"
|
#define Log_PLATFORM_VERSION "SWAD 18.95.1 (2019-04-03)"
|
||||||
#define CSS_FILE "swad18.92.css"
|
#define CSS_FILE "swad18.92.css"
|
||||||
#define JS_FILE "swad18.92.js"
|
#define JS_FILE "swad18.92.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.95.1: Apr 03, 2019 Code refactoring in edition of countries. (241607 lines)
|
||||||
Version 18.95: Apr 03, 2019 Code refactoring related to hierarchy. (241575 lines)
|
Version 18.95: Apr 03, 2019 Code refactoring related to hierarchy. (241575 lines)
|
||||||
Version 18.94.2: Apr 03, 2019 Remember last role even if last access is old. (241531 lines)
|
Version 18.94.2: Apr 03, 2019 Remember last role even if last access is old. (241531 lines)
|
||||||
Version 18.94.1: Apr 03, 2019 Remember last action and role after login only if last access is recent. (241526 lines)
|
Version 18.94.1: Apr 03, 2019 Remember last action and role after login only if last access is recent. (241526 lines)
|
||||||
|
|
|
@ -100,6 +100,9 @@ static void Cty_PutFormToCreateCountry (void);
|
||||||
static void Cty_PutHeadCountriesForEdition (void);
|
static void Cty_PutHeadCountriesForEdition (void);
|
||||||
static void Cty_CreateCountry (struct Country *Cty);
|
static void Cty_CreateCountry (struct Country *Cty);
|
||||||
|
|
||||||
|
static void Cty_CountryConstructor (struct Country **Cty);
|
||||||
|
static void Cty_CountryDestructor (struct Country **Cty);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** List countries with pending institutions ******************/
|
/***************** List countries with pending institutions ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1528,7 +1531,7 @@ static void Cty_GetMapAttribution (long CtyCod,char **MapAttribution)
|
||||||
if (row[0][0])
|
if (row[0][0])
|
||||||
{
|
{
|
||||||
Length = strlen (row[0]);
|
Length = strlen (row[0]);
|
||||||
if (((*MapAttribution) = (char *) malloc (Length + 1)) == NULL)
|
if ((*MapAttribution = (char *) malloc (Length + 1)) == NULL)
|
||||||
Lay_ShowErrorAndExit ("Error allocating memory for map attribution.");
|
Lay_ShowErrorAndExit ("Error allocating memory for map attribution.");
|
||||||
Str_Copy (*MapAttribution,row[0],
|
Str_Copy (*MapAttribution,row[0],
|
||||||
Length);
|
Length);
|
||||||
|
@ -1774,12 +1777,13 @@ void Cty_RenameCountry (void)
|
||||||
extern const char *Txt_The_country_X_has_been_renamed_as_Y;
|
extern const char *Txt_The_country_X_has_been_renamed_as_Y;
|
||||||
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
||||||
extern const char *Txt_The_name_of_the_country_X_has_not_changed;
|
extern const char *Txt_The_name_of_the_country_X_has_not_changed;
|
||||||
struct Country *Cty;
|
struct Country *Cty = NULL;
|
||||||
char NewCtyName[Cty_MAX_BYTES_NAME + 1];
|
char NewCtyName[Cty_MAX_BYTES_NAME + 1];
|
||||||
Lan_Language_t Language;
|
Lan_Language_t Language;
|
||||||
char FieldName[4 + 1 + 2 + 1]; // Example: "Name_en"
|
char FieldName[4 + 1 + 2 + 1]; // Example: "Name_en"
|
||||||
|
|
||||||
Cty = &Gbl.Ctys.EditingCty;
|
/***** Country constructor *****/
|
||||||
|
Cty_CountryConstructor (&Cty);
|
||||||
|
|
||||||
/***** Get the code of the country *****/
|
/***** Get the code of the country *****/
|
||||||
Cty->CtyCod = Cty_GetAndCheckParamOtherCtyCod (0);
|
Cty->CtyCod = Cty_GetAndCheckParamOtherCtyCod (0);
|
||||||
|
@ -1829,6 +1833,9 @@ void Cty_RenameCountry (void)
|
||||||
Cty->Name[Language]);
|
Cty->Name[Language]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** Country destructor *****/
|
||||||
|
Cty_CountryDestructor (&Cty);
|
||||||
|
|
||||||
/***** Show the form again *****/
|
/***** Show the form again *****/
|
||||||
Cty_EditCountries ();
|
Cty_EditCountries ();
|
||||||
}
|
}
|
||||||
|
@ -1900,11 +1907,12 @@ void Cty_ChangeCtyWWW (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_new_web_address_is_X;
|
extern const char *Txt_The_new_web_address_is_X;
|
||||||
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
||||||
struct Country *Cty;
|
struct Country *Cty = NULL;
|
||||||
char NewWWW[Cns_MAX_BYTES_WWW + 1];
|
char NewWWW[Cns_MAX_BYTES_WWW + 1];
|
||||||
Lan_Language_t Language;
|
Lan_Language_t Language;
|
||||||
|
|
||||||
Cty = &Gbl.Ctys.EditingCty;
|
/***** Country constructor *****/
|
||||||
|
Cty_CountryConstructor (&Cty);
|
||||||
|
|
||||||
/***** Get the code of the country *****/
|
/***** Get the code of the country *****/
|
||||||
Cty->CtyCod = Cty_GetAndCheckParamOtherCtyCod (0);
|
Cty->CtyCod = Cty_GetAndCheckParamOtherCtyCod (0);
|
||||||
|
@ -1930,6 +1938,9 @@ void Cty_ChangeCtyWWW (void)
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Txt_The_new_web_address_is_X,
|
Ale_ShowAlert (Ale_SUCCESS,Txt_The_new_web_address_is_X,
|
||||||
NewWWW);
|
NewWWW);
|
||||||
|
|
||||||
|
/***** Country destructor *****/
|
||||||
|
Cty_CountryDestructor (&Cty);
|
||||||
|
|
||||||
/***** Show the form again *****/
|
/***** Show the form again *****/
|
||||||
Cty_EditCountries ();
|
Cty_EditCountries ();
|
||||||
}
|
}
|
||||||
|
@ -1966,11 +1977,11 @@ static void Cty_PutFormToCreateCountry (void)
|
||||||
extern const char *Txt_STR_LANG_NAME[1 + Lan_NUM_LANGUAGES];
|
extern const char *Txt_STR_LANG_NAME[1 + Lan_NUM_LANGUAGES];
|
||||||
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
||||||
extern const char *Txt_Create_country;
|
extern const char *Txt_Create_country;
|
||||||
struct Country *Cty;
|
struct Country *Cty = NULL;
|
||||||
Lan_Language_t Lan;
|
Lan_Language_t Lan;
|
||||||
|
|
||||||
/***** Country data *****/
|
/***** Country constructoor *****/
|
||||||
Cty = &Gbl.Ctys.EditingCty;
|
Cty_CountryConstructor (&Cty);
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
Frm_StartForm (ActNewCty);
|
Frm_StartForm (ActNewCty);
|
||||||
|
@ -2061,6 +2072,9 @@ static void Cty_PutFormToCreateCountry (void)
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
|
||||||
|
/***** Country destructor *****/
|
||||||
|
Cty_CountryDestructor (&Cty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2120,12 +2134,13 @@ void Cty_RecFormNewCountry (void)
|
||||||
extern const char *Txt_The_country_X_already_exists;
|
extern const char *Txt_The_country_X_already_exists;
|
||||||
extern const char *Txt_You_must_specify_the_name_of_the_new_country_in_all_languages;
|
extern const char *Txt_You_must_specify_the_name_of_the_new_country_in_all_languages;
|
||||||
char ParamName[32];
|
char ParamName[32];
|
||||||
struct Country *Cty;
|
struct Country *Cty = NULL;
|
||||||
bool CreateCountry = true;
|
bool CreateCountry = true;
|
||||||
Lan_Language_t Lan;
|
Lan_Language_t Lan;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
Cty = &Gbl.Ctys.EditingCty;
|
/***** Country constructoor *****/
|
||||||
|
Cty_CountryConstructor (&Cty);
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
/***** Get parameters from form *****/
|
||||||
/* Get numeric country code */
|
/* Get numeric country code */
|
||||||
|
@ -2205,6 +2220,9 @@ void Cty_RecFormNewCountry (void)
|
||||||
if (CreateCountry)
|
if (CreateCountry)
|
||||||
Cty_CreateCountry (Cty); // Add new country to database
|
Cty_CreateCountry (Cty); // Add new country to database
|
||||||
|
|
||||||
|
/***** Country destructor *****/
|
||||||
|
Cty_CountryDestructor (&Cty);
|
||||||
|
|
||||||
/***** Show the form again *****/
|
/***** Show the form again *****/
|
||||||
Cty_EditCountries ();
|
Cty_EditCountries ();
|
||||||
}
|
}
|
||||||
|
@ -2424,3 +2442,38 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys)
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (mysql_res);
|
DB_FreeMySQLResult (mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********************** Country constructor/destructor **********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
// *Cty must be null
|
||||||
|
|
||||||
|
static void Cty_CountryConstructor (struct Country **Cty)
|
||||||
|
{
|
||||||
|
Lan_Language_t Lan;
|
||||||
|
|
||||||
|
/***** *Cty must be NULL *****/
|
||||||
|
if (*Cty == NULL)
|
||||||
|
Lay_ShowErrorAndExit ("Error trying to initialyze country.");
|
||||||
|
|
||||||
|
/***** Allocate memory for country *****/
|
||||||
|
if ((*Cty = (struct Country *) malloc (sizeof (struct Country))) == NULL)
|
||||||
|
Lay_ShowErrorAndExit ("Error allocating memory for country.");
|
||||||
|
|
||||||
|
/***** Reset country *****/
|
||||||
|
(*Cty)->CtyCod = -1L;
|
||||||
|
for (Lan = (Lan_Language_t) 1;
|
||||||
|
Lan <= Lan_NUM_LANGUAGES;
|
||||||
|
Lan++)
|
||||||
|
(*Cty)->Name[Lan][0] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Cty_CountryDestructor (struct Country **Cty)
|
||||||
|
{
|
||||||
|
/***** Free memory used for country *****/
|
||||||
|
if (*Cty != NULL)
|
||||||
|
{
|
||||||
|
free ((void *) *Cty);
|
||||||
|
*Cty = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -85,7 +85,6 @@ void Gbl_InitializeGlobals (void)
|
||||||
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
||||||
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
||||||
Rol_Role_t Role;
|
Rol_Role_t Role;
|
||||||
Lan_Language_t Lan;
|
|
||||||
|
|
||||||
Gbl.Layout.WritingHTMLStart =
|
Gbl.Layout.WritingHTMLStart =
|
||||||
Gbl.Layout.HTMLStartWritten =
|
Gbl.Layout.HTMLStartWritten =
|
||||||
|
@ -248,11 +247,6 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Hierarchy.Sys.Ctys.Num = 0;
|
Gbl.Hierarchy.Sys.Ctys.Num = 0;
|
||||||
Gbl.Hierarchy.Sys.Ctys.Lst = NULL;
|
Gbl.Hierarchy.Sys.Ctys.Lst = NULL;
|
||||||
Gbl.Hierarchy.Sys.Ctys.SelectedOrder = Cty_ORDER_DEFAULT;
|
Gbl.Hierarchy.Sys.Ctys.SelectedOrder = Cty_ORDER_DEFAULT;
|
||||||
Gbl.Ctys.EditingCty.CtyCod = -1L;
|
|
||||||
for (Lan = (Lan_Language_t) 1;
|
|
||||||
Lan <= Lan_NUM_LANGUAGES;
|
|
||||||
Lan++)
|
|
||||||
Gbl.Ctys.EditingCty.Name[Lan][0] = '\0';
|
|
||||||
|
|
||||||
Gbl.Hierarchy.Ins.Ctrs.Num = 0;
|
Gbl.Hierarchy.Ins.Ctrs.Num = 0;
|
||||||
Gbl.Hierarchy.Ins.Ctrs.Lst = NULL;
|
Gbl.Hierarchy.Ins.Ctrs.Lst = NULL;
|
||||||
|
|
|
@ -205,8 +205,15 @@ struct Globals
|
||||||
} HTMLOutput;
|
} HTMLOutput;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct Country EditingCty;
|
Hie_Level_t Level; // Current level in the hierarchy: system, country, institution, centre, degree or course
|
||||||
} Ctys;
|
long Cod; // Code of the current country, institution, centre, degree or course
|
||||||
|
struct System Sys; // Top level of the hierarchy (system or platform)
|
||||||
|
struct Country Cty; // Current country
|
||||||
|
struct Instit Ins; // Current institution
|
||||||
|
struct Centre Ctr; // Current centre
|
||||||
|
struct Degree Deg; // Current degree
|
||||||
|
struct Course Crs; // Current course. Aditional info about course is stored in Gbl.Crs.
|
||||||
|
} Hierarchy;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct Instit EditingIns;
|
struct Instit EditingIns;
|
||||||
|
@ -445,17 +452,6 @@ struct Globals
|
||||||
Hie_Level_t Default;
|
Hie_Level_t Default;
|
||||||
unsigned Allowed;
|
unsigned Allowed;
|
||||||
} Scope;
|
} Scope;
|
||||||
struct
|
|
||||||
{
|
|
||||||
Hie_Level_t Level; // Current level in the hierarchy: system, country, institution, centre, degree or course
|
|
||||||
long Cod; // Code of the current country, institution, centre, degree or course
|
|
||||||
struct System Sys; // Top level of the hierarchy (system or platform)
|
|
||||||
struct Country Cty; // Current country
|
|
||||||
struct Instit Ins; // Current institution
|
|
||||||
struct Centre Ctr; // Current centre
|
|
||||||
struct Degree Deg; // Current degree
|
|
||||||
struct Course Crs; // Current course. Aditional info about course is stored in Gbl.Crs.
|
|
||||||
} Hierarchy;
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
char PathPriv[PATH_MAX + 1]; // Absolute path to the private directory of the course
|
char PathPriv[PATH_MAX + 1]; // Absolute path to the private directory of the course
|
||||||
|
|
|
@ -38,7 +38,6 @@ struct System
|
||||||
unsigned Num; // Number of countries
|
unsigned Num; // Number of countries
|
||||||
struct Country *Lst; // List of countries
|
struct Country *Lst; // List of countries
|
||||||
Cty_Order_t SelectedOrder;
|
Cty_Order_t SelectedOrder;
|
||||||
// struct Country EditingCty;
|
|
||||||
} Ctys;
|
} Ctys;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue