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 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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] =