diff --git a/Makefile b/Makefile
index e215a063..13d4e6aa 100644
--- a/Makefile
+++ b/Makefile
@@ -45,14 +45,15 @@ OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
swad_icon.o swad_ID.o swad_indicator.o swad_info.o swad_institution.o \
swad_institution_config.o \
swad_language.o swad_layout.o swad_link.o swad_log.o swad_logo.o \
- swad_mail.o swad_main.o swad_map.o swad_mark.o swad_match.o \
- swad_match_result.o swad_media.o swad_menu.o swad_message.o swad_MFU.o \
+ swad_mail.o swad_main.o swad_maintenance.o swad_map.o swad_mark.o \
+ swad_match.o swad_match_result.o swad_media.o swad_menu.o \
+ swad_message.o swad_MFU.o \
swad_network.o swad_nickname.o swad_notice.o swad_notification.o \
swad_pagination.o swad_parameter.o swad_password.o swad_photo.o \
swad_place.o swad_plugin.o swad_privacy.o swad_profile.o swad_project.o \
swad_QR.o \
swad_record.o swad_report.o swad_role.o swad_RSS.o \
- swad_scope.o swad_search.o swad_session.o swad_setting.o swad_setup.o \
+ swad_scope.o swad_search.o swad_session.o swad_setting.o \
swad_statistic.o swad_string.o swad_survey.o swad_syllabus.o \
swad_system_config.o \
swad_tab.o swad_test.o swad_test_import.o swad_theme.o swad_timeline.o \
diff --git a/icon/bolt.svg b/icon/bolt.svg
new file mode 100644
index 00000000..14565c19
--- /dev/null
+++ b/icon/bolt.svg
@@ -0,0 +1 @@
+
diff --git a/icon/iconset/awesome/tools.svg b/icon/iconset/awesome/tools.svg
new file mode 100644
index 00000000..da79059f
--- /dev/null
+++ b/icon/iconset/awesome/tools.svg
@@ -0,0 +1 @@
+
diff --git a/icon/iconset/nuvola/tools.svg b/icon/iconset/nuvola/tools.svg
new file mode 100644
index 00000000..048681ef
--- /dev/null
+++ b/icon/iconset/nuvola/tools.svg
@@ -0,0 +1,385 @@
+
+
+
diff --git a/swad_action.c b/swad_action.c
index e3bbf977..11a0c52c 100644
--- a/swad_action.c
+++ b/swad_action.c
@@ -59,6 +59,7 @@
#include "swad_language.h"
#include "swad_log.h"
#include "swad_mail.h"
+#include "swad_maintenance.h"
#include "swad_mark.h"
#include "swad_match.h"
#include "swad_match_result.h"
@@ -78,7 +79,6 @@
#include "swad_role.h"
#include "swad_search.h"
#include "swad_setting.h"
-#include "swad_setup.h"
#include "swad_system_config.h"
#include "swad_tab.h"
#include "swad_test_import.h"
@@ -192,7 +192,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeePen ] = {1060, 2,TabSys,ActSeePen , 0, 0, 0, 0, 0, 0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Hie_SeePending ,"sitemap" },
[ActSeeLnk ] = { 748, 3,TabSys,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lnk_SeeLinks ,"link" },
[ActLstPlg ] = { 777, 4,TabSys,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Plg_ListPlugins ,"puzzle-piece" },
- [ActSetUp ] = { 840, 5,TabSys,ActSetUp , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,SUp_SetUp ,"bolt" },
+ [ActMtn ] = {1820, 5,TabSys,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mtn_Maintenance ,"tools" },
// Actions not in menu:
[ActPrnSysInf ] = {1819,-1,TabUnk,ActSeeSysInf , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,SysCfg_PrintConfiguration ,NULL},
@@ -203,9 +203,6 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActRenCty ] = { 866,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_RenameCountry ,Cty_ContEditAfterChgCty ,NULL},
[ActChgCtyWWW ] = {1157,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_ChangeCtyWWW ,Cty_ContEditAfterChgCty ,NULL},
- [ActReqRemOldCrs ] = {1109,-1,TabUnk,ActSeePen , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_AskRemoveOldCrss ,NULL},
- [ActRemOldCrs ] = {1110,-1,TabUnk,ActSeePen , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_RemoveOldCrss ,NULL},
-
[ActSeeBan ] = {1137,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3FF,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ban_SeeBanners ,NULL},
[ActEdiBan ] = {1138,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ban_EditBanners ,NULL},
[ActNewBan ] = {1139,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_RecFormNewBanner ,Ban_ContEditAfterChgBan ,NULL},
@@ -235,6 +232,10 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgPlgURL ] = { 783,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_ChangePlgURL ,Plg_ContEditAfterChgPlg ,NULL},
[ActChgPlgIP ] = { 780,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_ChangePlgIP ,Plg_ContEditAfterChgPlg ,NULL},
+ [ActSetUp ] = { 840, 5,TabUnk,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mtn_SetUp ,NULL},
+ [ActReqRemOldCrs ] = {1109,-1,TabUnk,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mtn_RemoveOldCrss ,NULL},
+ [ActRemOldCrs ] = {1110,-1,TabUnk,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_RemoveOldCrss ,NULL},
+
// TabCty ******************************************************************
// Actions in menu:
[ActSeeCtyInf ] = {1155, 0,TabCty,ActSeeCtyInf , 0, 0, 0, 0, 0,0x3C7, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtyCfg_ShowConfiguration ,"info" },
@@ -3533,6 +3534,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActChgCtrAltCfg, // #1817
ActSeeSysInf, // #1818
ActPrnSysInf, // #1819
+ ActMtn, // #1820
};
/*****************************************************************************/
diff --git a/swad_action.h b/swad_action.h
index ae62948e..c6b8a67e 100644
--- a/swad_action.h
+++ b/swad_action.h
@@ -64,7 +64,7 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
-#define Act_MAX_ACTION_COD 1819
+#define Act_MAX_ACTION_COD 1820
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@@ -170,7 +170,7 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActSeePen (ActRenMaiFul + 3)
#define ActSeeLnk (ActRenMaiFul + 4)
#define ActLstPlg (ActRenMaiFul + 5)
-#define ActSetUp (ActRenMaiFul + 6)
+#define ActMtn (ActRenMaiFul + 6)
// Secondary actions
#define ActPrnSysInf (ActRenMaiFul + 7)
@@ -181,57 +181,58 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActRenCty (ActRenMaiFul + 11)
#define ActChgCtyWWW (ActRenMaiFul + 12)
-#define ActReqRemOldCrs (ActRenMaiFul + 13)
-#define ActRemOldCrs (ActRenMaiFul + 14)
+#define ActSeeBan (ActRenMaiFul + 13)
+#define ActEdiBan (ActRenMaiFul + 14)
+#define ActNewBan (ActRenMaiFul + 15)
+#define ActRemBan (ActRenMaiFul + 16)
+#define ActShoBan (ActRenMaiFul + 17)
+#define ActHidBan (ActRenMaiFul + 18)
+#define ActRenBanSho (ActRenMaiFul + 19)
+#define ActRenBanFul (ActRenMaiFul + 20)
+#define ActChgBanImg (ActRenMaiFul + 21)
+#define ActChgBanWWW (ActRenMaiFul + 22)
+#define ActClkBan (ActRenMaiFul + 23)
-#define ActSeeBan (ActRenMaiFul + 15)
-#define ActEdiBan (ActRenMaiFul + 16)
-#define ActNewBan (ActRenMaiFul + 17)
-#define ActRemBan (ActRenMaiFul + 18)
-#define ActShoBan (ActRenMaiFul + 19)
-#define ActHidBan (ActRenMaiFul + 20)
-#define ActRenBanSho (ActRenMaiFul + 21)
-#define ActRenBanFul (ActRenMaiFul + 22)
-#define ActChgBanImg (ActRenMaiFul + 23)
-#define ActChgBanWWW (ActRenMaiFul + 24)
-#define ActClkBan (ActRenMaiFul + 25)
+#define ActEdiLnk (ActRenMaiFul + 24)
+#define ActNewLnk (ActRenMaiFul + 25)
+#define ActRemLnk (ActRenMaiFul + 26)
+#define ActRenLnkSho (ActRenMaiFul + 27)
+#define ActRenLnkFul (ActRenMaiFul + 28)
+#define ActChgLnkWWW (ActRenMaiFul + 29)
-#define ActEdiLnk (ActRenMaiFul + 26)
-#define ActNewLnk (ActRenMaiFul + 27)
-#define ActRemLnk (ActRenMaiFul + 28)
-#define ActRenLnkSho (ActRenMaiFul + 29)
-#define ActRenLnkFul (ActRenMaiFul + 30)
-#define ActChgLnkWWW (ActRenMaiFul + 31)
+#define ActEdiPlg (ActRenMaiFul + 30)
+#define ActNewPlg (ActRenMaiFul + 31)
+#define ActRemPlg (ActRenMaiFul + 32)
+#define ActRenPlg (ActRenMaiFul + 33)
+#define ActChgPlgDes (ActRenMaiFul + 34)
+#define ActChgPlgLog (ActRenMaiFul + 35)
+#define ActChgPlgAppKey (ActRenMaiFul + 36)
+#define ActChgPlgURL (ActRenMaiFul + 37)
+#define ActChgPlgIP (ActRenMaiFul + 38)
-#define ActEdiPlg (ActRenMaiFul + 32)
-#define ActNewPlg (ActRenMaiFul + 33)
-#define ActRemPlg (ActRenMaiFul + 34)
-#define ActRenPlg (ActRenMaiFul + 35)
-#define ActChgPlgDes (ActRenMaiFul + 36)
-#define ActChgPlgLog (ActRenMaiFul + 37)
-#define ActChgPlgAppKey (ActRenMaiFul + 38)
-#define ActChgPlgURL (ActRenMaiFul + 39)
-#define ActChgPlgIP (ActRenMaiFul + 40)
+#define ActSetUp (ActRenMaiFul + 39)
+#define ActReqRemOldCrs (ActRenMaiFul + 40)
+#define ActRemOldCrs (ActRenMaiFul + 41)
/*****************************************************************************/
/******************************** Country tab ********************************/
/*****************************************************************************/
// Actions in menu
-#define ActSeeCtyInf (ActChgPlgIP + 1)
-#define ActSeeIns (ActChgPlgIP + 2)
+#define ActSeeCtyInf (ActRemOldCrs + 1)
+#define ActSeeIns (ActRemOldCrs + 2)
// Secondary actions
-#define ActPrnCtyInf (ActChgPlgIP + 3)
-#define ActChgCtyMapAtt (ActChgPlgIP + 4)
+#define ActPrnCtyInf (ActRemOldCrs + 3)
+#define ActChgCtyMapAtt (ActRemOldCrs + 4)
-#define ActEdiIns (ActChgPlgIP + 5)
-#define ActReqIns (ActChgPlgIP + 6)
-#define ActNewIns (ActChgPlgIP + 7)
-#define ActRemIns (ActChgPlgIP + 8)
-#define ActRenInsSho (ActChgPlgIP + 9)
-#define ActRenInsFul (ActChgPlgIP + 10)
-#define ActChgInsWWW (ActChgPlgIP + 11)
-#define ActChgInsSta (ActChgPlgIP + 12)
+#define ActEdiIns (ActRemOldCrs + 5)
+#define ActReqIns (ActRemOldCrs + 6)
+#define ActNewIns (ActRemOldCrs + 7)
+#define ActRemIns (ActRemOldCrs + 8)
+#define ActRenInsSho (ActRemOldCrs + 9)
+#define ActRenInsFul (ActRemOldCrs + 10)
+#define ActChgInsWWW (ActRemOldCrs + 11)
+#define ActChgInsSta (ActRemOldCrs + 12)
/*****************************************************************************/
/****************************** Institution tab ******************************/
diff --git a/swad_centre.c b/swad_centre.c
index 3bd43899..02fc9ee1 100644
--- a/swad_centre.c
+++ b/swad_centre.c
@@ -103,7 +103,7 @@ static void Ctr_FormToGoToMap (struct Centre *Ctr);
void Ctr_SeeCtrWithPendingDegs (void)
{
- extern const char *Hlp_SYSTEM_Hierarchy_pending;
+ extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Centres_with_pending_degrees;
extern const char *Txt_Centre;
extern const char *Txt_Degrees_ABBREVIATION;
@@ -148,7 +148,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Centres_with_pending_degrees,NULL,
- Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
+ Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Wrtie heading *****/
HTM_TR_Begin (NULL);
diff --git a/swad_changelog.h b/swad_changelog.h
index ed5d79a1..97db3403 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -494,7 +494,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.121 (2020-01-26)"
+#define Log_PLATFORM_VERSION "SWAD 19.122 (2020-01-30)"
#define CSS_FILE "swad19.118.css"
#define JS_FILE "swad19.91.1.js"
/*
@@ -502,6 +502,13 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
+ Version 19.122: Jan 30, 2020 Some options changed in system tab. (278690 lines)
+Copy the following icons to icon public directory:
+sudo cp -a icon/bolt.svg /var/www/html/swad/icon/
+sudo cp -a icon/iconset/awesome/tools.svg /var/www/html/swad/icon/iconset/awesome/
+sudo cp -a icon/iconset/nuvola/tools.svg /var/www/html/swad/icon/iconset/nuvola/
+
+ Version 19.121.1: Jan 30, 2020 Fixed bug in database. (? lines)
Version 19.121: Jan 26, 2020 Number of centres with map shown in institution configuration. (278601 lines)
Version 19.120: Jan 25, 2020 Number of centres with map shown in country configuration. (278592 lines)
Version 19.119: Jan 25, 2020 Number of centres with map shown in platform configuration. (278591 lines)
diff --git a/swad_country.c b/swad_country.c
index 6703f444..9ca1e8cd 100644
--- a/swad_country.c
+++ b/swad_country.c
@@ -102,7 +102,7 @@ static void Cty_FormToGoToMap (struct Country *Cty);
void Cty_SeeCtyWithPendingInss (void)
{
- extern const char *Hlp_SYSTEM_Hierarchy_pending;
+ extern const char *Hlp_SYSTEM_Pending;
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
extern const char *Txt_Countries_with_pending_institutions;
extern const char *Txt_Country;
@@ -139,7 +139,7 @@ void Cty_SeeCtyWithPendingInss (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Countries_with_pending_institutions,NULL,
- Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
+ Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Write heading *****/
HTM_TR_Begin (NULL);
diff --git a/swad_course.c b/swad_course.c
index 31f4cd11..edd49a46 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -2763,7 +2763,7 @@ void Crs_PutLinkToRemoveOldCrss (void)
void Crs_AskRemoveOldCrss (void)
{
- extern const char *Hlp_SYSTEM_Hierarchy_eliminate_old_courses;
+ extern const char *Hlp_SYSTEM_Maintenance_eliminate_old_courses;
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Eliminate_old_courses;
extern const char *Txt_Eliminate_all_courses_whithout_users_PART_1_OF_2;
@@ -2777,7 +2777,7 @@ void Crs_AskRemoveOldCrss (void)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Eliminate_old_courses,NULL,
- Hlp_SYSTEM_Hierarchy_eliminate_old_courses,Box_NOT_CLOSABLE);
+ Hlp_SYSTEM_Maintenance_eliminate_old_courses,Box_NOT_CLOSABLE);
/***** Form to request number of months without clicks *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
diff --git a/swad_database.c b/swad_database.c
index 2648c39c..5e09048c 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -1884,7 +1884,7 @@ mysql> DESCRIBE msg_content;
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(MsgCod),"
"FULLTEXT(Subject,Content),"
- "INDEX(MedCod)) ENGINE = MYISAM;");
+ "INDEX(MedCod)) ENGINE = MYISAM");
/***** Table msg_content_deleted *****/
/*
@@ -1906,7 +1906,7 @@ mysql> DESCRIBE msg_content_deleted;
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(MsgCod),"
"FULLTEXT(Subject,Content),"
- "INDEX(MedCod)) ENGINE = MYISAM;");
+ "INDEX(MedCod)) ENGINE = MYISAM");
/***** Table msg_rcv *****/
/*
@@ -2535,11 +2535,11 @@ mysql> DESCRIBE tl_comments;
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tl_comments ("
"PubCod BIGINT NOT NULL,"
- "Content Txt NOT NULL,"
+ "Txt LONGTEXT NOT NULL,"
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(PubCod),"
"FULLTEXT(Txt),"
- "INDEX(MedCod)) ENGINE = MYISAM;");
+ "INDEX(MedCod)) ENGINE = MYISAM");
/***** Table tl_comments_fav *****/
/*
@@ -2632,7 +2632,7 @@ mysql> DESCRIBE tl_posts;
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(PubCod),"
"FULLTEXT(Txt),"
- "INDEX(MedCod)) ENGINE = MYISAM;");
+ "INDEX(MedCod)) ENGINE = MYISAM");
/***** Table tl_pubs *****/
/*
diff --git a/swad_degree.c b/swad_degree.c
index a83c7f17..6b2c0fe0 100644
--- a/swad_degree.c
+++ b/swad_degree.c
@@ -105,7 +105,7 @@ static void Deg_EditingDegreeDestructor (void);
void Deg_SeeDegWithPendingCrss (void)
{
- extern const char *Hlp_SYSTEM_Hierarchy_pending;
+ extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Degrees_with_pending_courses;
extern const char *Txt_Degree;
extern const char *Txt_Courses_ABBREVIATION;
@@ -153,7 +153,7 @@ void Deg_SeeDegWithPendingCrss (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Degrees_with_pending_courses,NULL,
- Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
+ Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Write heading *****/
HTM_TR_Begin (NULL);
diff --git a/swad_help_URL.c b/swad_help_URL.c
index 2ba3fbe6..b6f2dbea 100644
--- a/swad_help_URL.c
+++ b/swad_help_URL.c
@@ -201,46 +201,46 @@ const char *Hlp_SYSTEM_Countries =
"SYSTEM.Countries.en";
#endif
-const char *Hlp_SYSTEM_Hierarchy_pending =
+const char *Hlp_SYSTEM_Pending =
#if L==1
- "SYSTEM.Hierarchy.es#pendientes";
+ "SYSTEM.Pending.es";
#elif L==2
- "SYSTEM.Hierarchy.en#pending";
+ "SYSTEM.Pending.en";
#elif L==3
- "SYSTEM.Hierarchy.en#pending";
+ "SYSTEM.Pending.en";
#elif L==4
- "SYSTEM.Hierarchy.es#pendientes";
+ "SYSTEM.Pending.es";
#elif L==5
- "SYSTEM.Hierarchy.en#pending";
+ "SYSTEM.Pending.en";
#elif L==6
- "SYSTEM.Hierarchy.es#pendientes";
+ "SYSTEM.Pending.es";
#elif L==7
- "SYSTEM.Hierarchy.en#pending";
+ "SYSTEM.Pending.en";
#elif L==8
- "SYSTEM.Hierarchy.en#pending";
+ "SYSTEM.Pending.en";
#elif L==9
- "SYSTEM.Hierarchy.en#pending";
+ "SYSTEM.Pending.en";
#endif
-const char *Hlp_SYSTEM_Hierarchy_eliminate_old_courses =
+const char *Hlp_SYSTEM_Maintenance_eliminate_old_courses =
#if L==1
- "SYSTEM.Hierarchy.es#eliminar-asignaturas-antiguas";
+ "SYSTEM.Maintenance.es#eliminar-asignaturas-antiguas";
#elif L==2
- "SYSTEM.Hierarchy.en#eliminate-old-courses";
+ "SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==3
- "SYSTEM.Hierarchy.en#eliminate-old-courses";
+ "SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==4
- "SYSTEM.Hierarchy.es#eliminar-asignaturas-antiguas";
+ "SYSTEM.Maintenance.es#eliminar-asignaturas-antiguas";
#elif L==5
- "SYSTEM.Hierarchy.en#eliminate-old-courses";
+ "SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==6
- "SYSTEM.Hierarchy.es#eliminar-asignaturas-antiguas";
+ "SYSTEM.Maintenance.es#eliminar-asignaturas-antiguas";
#elif L==7
- "SYSTEM.Hierarchy.en#eliminate-old-courses";
+ "SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==8
- "SYSTEM.Hierarchy.en#eliminate-old-courses";
+ "SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==9
- "SYSTEM.Hierarchy.en#eliminate-old-courses";
+ "SYSTEM.Maintenance.en#eliminate-old-courses";
#endif
const char *Hlp_SYSTEM_Banners =
diff --git a/swad_hierarchy.c b/swad_hierarchy.c
index ae8c4e5a..b822d59a 100644
--- a/swad_hierarchy.c
+++ b/swad_hierarchy.c
@@ -63,11 +63,6 @@ extern struct Globals Gbl;
void Hie_SeePending (void)
{
- /***** Contextual menu *****/
- Mnu_ContextMenuBegin ();
- Crs_PutLinkToRemoveOldCrss (); // Remove old courses
- Mnu_ContextMenuEnd ();
-
/***** List countries with pending institutions *****/
Cty_SeeCtyWithPendingInss ();
diff --git a/swad_institution.c b/swad_institution.c
index aae4b110..ce7a8166 100644
--- a/swad_institution.c
+++ b/swad_institution.c
@@ -107,7 +107,7 @@ static void Ins_FormToGoToMap (struct Instit *Ins);
void Ins_SeeInsWithPendingCtrs (void)
{
- extern const char *Hlp_SYSTEM_Hierarchy_pending;
+ extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Institutions_with_pending_centres;
extern const char *Txt_Institution;
extern const char *Txt_Centres_ABBREVIATION;
@@ -155,7 +155,7 @@ void Ins_SeeInsWithPendingCtrs (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Institutions_with_pending_centres,NULL,
- Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
+ Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Write heading *****/
HTM_TR_Begin (NULL);
diff --git a/swad_setup.c b/swad_maintenance.c
similarity index 60%
rename from swad_setup.c
rename to swad_maintenance.c
index 0d47174f..1089dc45 100644
--- a/swad_setup.c
+++ b/swad_maintenance.c
@@ -1,4 +1,4 @@
-// swad_setup.c: initial setup after installation
+// swad_maintenance.c: platform maintenance
/*
SWAD (Shared Workspace At a Distance),
@@ -25,7 +25,9 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
+#include "swad_course.h"
#include "swad_database.h"
+#include "swad_menu.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
@@ -47,12 +49,61 @@
/***************************** Private prototypes ****************************/
/*****************************************************************************/
+static void Mtn_PutLinkToSetUp (void);
+
+/*****************************************************************************/
+/******************************** Maintenance ********************************/
+/*****************************************************************************/
+
+void Mtn_Maintenance (void)
+ {
+ /***** Contextual menu *****/
+ Mnu_ContextMenuBegin ();
+ Mtn_PutLinkToSetUp (); // Set up
+ Crs_PutLinkToRemoveOldCrss (); // Remove old courses
+ Mnu_ContextMenuEnd ();
+ }
+
+/*****************************************************************************/
+/************************ Put link to set up platform ************************/
+/*****************************************************************************/
+
+static void Mtn_PutLinkToSetUp (void)
+ {
+ extern const char *Txt_Set_up;
+
+ /***** Put form to set up platform *****/
+ Lay_PutContextualLinkIconText (ActSetUp,NULL,NULL,
+ "bolt.svg",
+ Txt_Set_up);
+ }
+
/*****************************************************************************/
/****************************** Initial set up *******************************/
/*****************************************************************************/
-void SUp_SetUp (void)
+void Mtn_SetUp (void)
{
- /***** Create tables in database *****/
+ /***** Contextual menu *****/
+ Mnu_ContextMenuBegin ();
+ Crs_PutLinkToRemoveOldCrss (); // Remove old courses
+ Mnu_ContextMenuEnd ();
+
+ /***** Create database tables if not exist *****/
DB_CreateTablesIfNotExist ();
}
+
+/*****************************************************************************/
+/****************************** Initial set up *******************************/
+/*****************************************************************************/
+
+void Mtn_RemoveOldCrss (void)
+ {
+ /***** Contextual menu *****/
+ Mnu_ContextMenuBegin ();
+ Mtn_PutLinkToSetUp (); // Set up
+ Mnu_ContextMenuEnd ();
+
+ /***** Write form to remove old courses *****/
+ Crs_AskRemoveOldCrss ();
+ }
diff --git a/swad_setup.h b/swad_maintenance.h
similarity index 91%
rename from swad_setup.h
rename to swad_maintenance.h
index c611c18b..7a5d89a0 100644
--- a/swad_setup.h
+++ b/swad_maintenance.h
@@ -1,7 +1,7 @@
-// swad_setup.h: initial setup after installation
+// swad_maintenance.h: platform maintenance
-#ifndef _SWAD_SUP
-#define _SWAD_SUP
+#ifndef _SWAD_MTN
+#define _SWAD_MTN
/*
SWAD (Shared Workspace At a Distance in Spanish),
is a web platform developed at the University of Granada (Spain),
@@ -35,6 +35,8 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
-void SUp_SetUp (void);
+void Mtn_Maintenance (void);
+void Mtn_SetUp (void);
+void Mtn_RemoveOldCrss (void);
#endif
diff --git a/swad_menu.c b/swad_menu.c
index b156f3ca..21df2167 100644
--- a/swad_menu.c
+++ b/swad_menu.c
@@ -77,7 +77,7 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_
[ 2] = ActSeePen,
[ 3] = ActSeeLnk,
[ 4] = ActLstPlg,
- [ 5] = ActSetUp,
+ [ 5] = ActMtn,
},
[TabCty] = {
[ 0] = ActSeeCtyInf,
diff --git a/swad_text.c b/swad_text.c
index a3f58da5..cc00ae14 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -18826,23 +18826,23 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
,
// 2: ActSeePen
#if L==1 // ca
- "Jerarquia"
+ "Pendents"
#elif L==2 // de
- "Hierarchie"
+ "Anhängig"
#elif L==3 // en
- "Hierarchy"
+ "Pending"
#elif L==4 // es
- "Jerarquía"
+ "Pendientes"
#elif L==5 // fr
- "Hiérarchie"
+ "En attente"
#elif L==6 // gn
- "Sãmbyhyha reko"
+ "Pendientes" // Okoteve traducción
#elif L==7 // it
- "Gerarchia"
+ "In attesa"
#elif L==8 // pl
- "Hierarchia"
+ "Oczekujący"
#elif L==9 // pt
- "Hierarquia"
+ "Pendentes"
#endif
,
// 3: ActSeeLnk
@@ -18887,25 +18887,25 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Plugins"
#endif
,
- // 5: ActSetUp
+ // 5: ActMtn
#if L==1 // ca
- "Instal lar"
+ "Manteniment"
#elif L==2 // de
- "Einrichten"
+ "Erhaltung"
#elif L==3 // en
- "Set up"
+ "Maintenance"
#elif L==4 // es
- "Instalar"
+ "Mantenimiento"
#elif L==5 // fr
- "Installer"
+ "Entretien"
#elif L==6 // gn
- "Instalar" // Okoteve traducción
+ "Ñemyatyrõ"
#elif L==7 // it
- "Setup"
+ "Manutenzione"
#elif L==8 // pl
- "Set up"
+ "Utrzymanie"
#elif L==9 // pt
- "Instalar"
+ "Manutenção"
#endif
,
NULL, // 6
@@ -20665,7 +20665,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==6 // gn
"Instituciones, centros, titulaciones y asignaturas pendientes de activar" // Okoteve traducción
#elif L==7 // it
- "Istituzioni, centri, lauree e corsi in sospeso"
+ "Istituzioni, centri, lauree e corsi in attesa di essere attivati"
#elif L==8 // pl
"Instytucje, centra, stopnie i kursõw oczekujący"
#elif L==9 // pt
@@ -20714,25 +20714,25 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Lista de plugins"
#endif
,
- // 5: ActSetUp
+ // 5: ActMtn
#if L==1 // ca
- "Instal lació de la plataforma (en proves)"
+ "Instal·lació i manteniment de la plataforma"
#elif L==2 // de
- "Einrichten"
+ "Plattformeinrichtung und Wartung"
#elif L==3 // en
- "Set up"
+ "Platform set up and maintenance"
#elif L==4 // es
- "Instalación de la plataforma (en pruebas)"
+ "Instalación y mantenimiento de la plataforma"
#elif L==5 // fr
- "Installer"
+ "Mise en place et maintenance de la plateforme"
#elif L==6 // gn
- "Instalación de la plataforma (en pruebas)"// Okoteve traducción
+ "Instalación y mantenimiento de la plataforma" // Okoteve traducción
#elif L==7 // it
- "Setup"
+ "Installazione e manutenzione della piattaforma"
#elif L==8 // pl
- "Set up"
+ "Konfiguracja i utrzymanie platformy"
#elif L==9 // pt
- "Instalar"
+ "Instalação e manutenção da plataforma"
#endif
,
NULL, // 6
@@ -39237,6 +39237,27 @@ const char *Txt_Set_password =
"Definir senha";
#endif
+const char *Txt_Set_up =
+#if L==1 // ca
+ "Instal·lar";
+#elif L==2 // de
+ "Einrichten";
+#elif L==3 // en
+ "Set up";
+#elif L==4 // es
+ "Instalar";
+#elif L==5 // fr
+ "Installer";
+#elif L==6 // gn
+ "Instalar"; // Okoteve traducción
+#elif L==7 // it
+ "Setup";
+#elif L==8 // pl
+ "Set up";
+#elif L==9 // pt
+ "Instalar";
+#endif
+
const char *Txt_Settings =
#if L==1 // ca
"Configuració";
diff --git a/swad_text_action.c b/swad_text_action.c
index 44b4df0e..de9ba920 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -1576,23 +1576,23 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
,
[ActSeePen] =
#if L==1 // ca
- "" // Necessita traducció
+ "Institutions, centres, titulacions i assignatures pendents d'activar"
#elif L==2 // de
- "" // Need Übersetzung
+ "Anhängig Hochschulen, Lehrinstitute, Studiengang und Kursen"
#elif L==3 // en
- "List pending institutions, centres, degrees and courses in hierarchy"
+ "Pending institutions, centres, degrees and courses"
#elif L==4 // es
- ""
+ "Instituciones, centros, titulaciones y asignaturas pendientes de activar"
#elif L==5 // fr
- "" // Besoin de traduction
+ "Établissements, centres, études et matières en attente"
#elif L==6 // gn
- "" // Okoteve traducción
+ "Instituciones, centros, titulaciones y asignaturas pendientes de activar" // Okoteve traducción
#elif L==7 // it
- "" // Bisogno di traduzione
+ "Istituzioni, centri, lauree e corsi in attesa di essere attivati"
#elif L==8 // pl
- "" // Potrzebujesz tlumaczenie
+ "Instytucje, centra, stopnie i kursõw oczekujący"
#elif L==9 // pt
- "" // Precisa de tradução
+ "Instituções, centros, graus e disciplinas pendentes"
#endif
,
[ActSeeLnk] =
@@ -1637,25 +1637,25 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Precisa de tradução
#endif
,
- [ActSetUp] =
+ [ActMtn] =
#if L==1 // ca
- "" // Necessita traducció
+ "Manteniment"
#elif L==2 // de
- "" // Need Übersetzung
+ "Erhaltung"
#elif L==3 // en
- "Initial set up"
+ "Maintenance"
#elif L==4 // es
- ""
+ "Mantenimiento"
#elif L==5 // fr
- "" // Besoin de traduction
+ "Entretien"
#elif L==6 // gn
- "" // Okoteve traducción
+ "Ñemyatyrõ"
#elif L==7 // it
- "" // Bisogno di traduzione
+ "Manutenzione"
#elif L==8 // pl
- "" // Potrzebujesz tlumaczenie
+ "Utrzymanie"
#elif L==9 // pt
- "" // Precisa de tradução
+ "Manutenção"
#endif
,
[ActPrnSysInf] =
@@ -1782,48 +1782,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
-#endif
- ,
- [ActReqRemOldCrs] =
-#if L==1 // ca
- "" // Necessita traducció
-#elif L==2 // de
- "" // Need Übersetzung
-#elif L==3 // en
- "Request the total removal of old courses"
-#elif L==4 // es
- ""
-#elif L==5 // fr
- "" // Besoin de traduction
-#elif L==6 // gn
- "" // Okoteve traducción
-#elif L==7 // it
- "" // Bisogno di traduzione
-#elif L==8 // pl
- "" // Potrzebujesz tlumaczenie
-#elif L==9 // pt
- "" // Precisa de tradução
-#endif
- ,
- [ActRemOldCrs] =
-#if L==1 // ca
- "" // Necessita traducció
-#elif L==2 // de
- "" // Need Übersetzung
-#elif L==3 // en
- "Remove completely old courses"
-#elif L==4 // es
- ""
-#elif L==5 // fr
- "" // Besoin de traduction
-#elif L==6 // gn
- "" // Okoteve traducción
-#elif L==7 // it
- "" // Bisogno di traduzione
-#elif L==8 // pl
- "" // Potrzebujesz tlumaczenie
-#elif L==9 // pt
- "" // Precisa de tradução
#endif
,
[ActSeeBan] =
@@ -2370,6 +2328,69 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
+#endif
+ ,
+ [ActSetUp] =
+#if L==1 // ca
+ "Instal lar"
+#elif L==2 // de
+ "Einrichten"
+#elif L==3 // en
+ "Set up"
+#elif L==4 // es
+ "Instalar"
+#elif L==5 // fr
+ "Installer"
+#elif L==6 // gn
+ "Instalar" // Okoteve traducción
+#elif L==7 // it
+ "Setup"
+#elif L==8 // pl
+ "Set up"
+#elif L==9 // pt
+ "Instalar"
+#endif
+ ,
+ [ActReqRemOldCrs] =
+#if L==1 // ca
+ "" // Necessita traducció
+#elif L==2 // de
+ "" // Need Übersetzung
+#elif L==3 // en
+ "Request the total removal of old courses"
+#elif L==4 // es
+ ""
+#elif L==5 // fr
+ "" // Besoin de traduction
+#elif L==6 // gn
+ "" // Okoteve traducción
+#elif L==7 // it
+ "" // Bisogno di traduzione
+#elif L==8 // pl
+ "" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "" // Precisa de tradução
+#endif
+ ,
+ [ActRemOldCrs] =
+#if L==1 // ca
+ "" // Necessita traducció
+#elif L==2 // de
+ "" // Need Übersetzung
+#elif L==3 // en
+ "Remove completely old courses"
+#elif L==4 // es
+ ""
+#elif L==5 // fr
+ "" // Besoin de traduction
+#elif L==6 // gn
+ "" // Okoteve traducción
+#elif L==7 // it
+ "" // Bisogno di traduzione
+#elif L==8 // pl
+ "" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "" // Precisa de tradução
#endif
,
[ActSeeCtyInf] =