From 8c89a1433ba9595d88edbcabfe9f0fb88b3f9f06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Thu, 20 Oct 2016 22:58:11 +0200 Subject: [PATCH] Version 16.30.1 --- swad_MFU.c | 14 +++++++++++--- swad_action.c | 9 +++++++-- swad_changelog.h | 5 +++-- swad_report.c | 4 +++- swad_statistic.c | 27 +++++++++++++++------------ swad_tab.c | 11 +++++++---- 6 files changed, 46 insertions(+), 24 deletions(-) diff --git a/swad_MFU.c b/swad_MFU.c index 812d593e6..f950b230c 100644 --- a/swad_MFU.c +++ b/swad_MFU.c @@ -140,6 +140,7 @@ Act_Action_t MFU_GetMyLastActionInCurrentTab (void) unsigned NumAct; long ActCod; Act_Action_t Action; + Act_Action_t SuperAction; Act_Action_t MoreRecentActionInCurrentTab = ActUnk; if (Gbl.Usrs.Me.UsrDat.UsrCod > 0) @@ -162,12 +163,15 @@ Act_Action_t MFU_GetMyLastActionInCurrentTab (void) ActCod = Str_ConvertStrCodToLongCod (row[0]); if (ActCod >= 0 && ActCod <= Act_MAX_ACTION_COD) if ((Action = Act_FromActCodToAction[ActCod]) >= 0) - if (Act_Actions[Action].Tab == Gbl.Action.Tab) + { + SuperAction = Act_Actions[Action].SuperAction; + if (Act_Actions[SuperAction].Tab == Gbl.Action.Tab) if (Act_CheckIfIHavePermissionToExecuteAction (Action)) { MoreRecentActionInCurrentTab = Action; break; } + } } /***** Free structure that stores the query result *****/ @@ -205,6 +209,7 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) extern const char *Txt_TABS_FULL_TXT[Tab_NUM_TABS]; unsigned NumAct; Act_Action_t Action; + Act_Action_t SuperAction; const char *Title; char TabStr[128+1]; char MenuStr[128+1]; @@ -225,7 +230,8 @@ void MFU_WriteBigMFUActions (struct MFU_ListMFUActions *ListMFUActions) if ((Title = Act_GetTitleAction (Action)) != NULL) { /* Action string */ - strncpy (TabStr,Txt_TABS_FULL_TXT[Act_Actions[Act_Actions[Action].SuperAction].Tab],128); + SuperAction = Act_Actions[Action].SuperAction; + strncpy (TabStr,Txt_TABS_FULL_TXT[Act_Actions[SuperAction].Tab],128); TabStr[128] = '\0'; strncpy (MenuStr,Title,128); MenuStr[128] = '\0'; @@ -262,6 +268,7 @@ void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions) extern const char *Txt_TABS_FULL_TXT[Tab_NUM_TABS]; unsigned NumAct; Act_Action_t Action; + Act_Action_t SuperAction; const char *Title; char TabStr[128+1]; char MenuStr[128+1]; @@ -287,7 +294,8 @@ void MFU_WriteSmallMFUActions (struct MFU_ListMFUActions *ListMFUActions) if ((Title = Act_GetTitleAction (Action)) != NULL) { /* Action string */ - strncpy (TabStr,Txt_TABS_FULL_TXT[Act_Actions[Act_Actions[Action].SuperAction].Tab],128); + SuperAction = Act_Actions[Action].SuperAction; + strncpy (TabStr,Txt_TABS_FULL_TXT[Act_Actions[SuperAction].Tab],128); TabStr[128] = '\0'; strncpy (MenuStr,Title,128); MenuStr[128] = '\0'; diff --git a/swad_action.c b/swad_action.c index 0bf87ebca..bab66746b 100644 --- a/swad_action.c +++ b/swad_action.c @@ -4472,10 +4472,12 @@ bool Act_CheckIfIHavePermissionToExecuteAction (Act_Action_t Action) const char *Act_GetTitleAction (Act_Action_t Action) { extern const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; - Act_Action_t SuperAction = Act_Actions[Action].SuperAction; + Act_Action_t SuperAction; if (Action < 0 || Action >= Act_NUM_ACTIONS) return NULL; + + SuperAction = Act_Actions[Action].SuperAction; return Txt_MENU_TITLE[Act_Actions[SuperAction].Tab][Act_Actions[SuperAction].IndexInMenu]; } @@ -4486,10 +4488,13 @@ const char *Act_GetTitleAction (Act_Action_t Action) const char *Act_GetSubtitleAction (Act_Action_t Action) { extern const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB]; + Act_Action_t SuperAction; if (Action < 0 || Action >= Act_NUM_ACTIONS) return NULL; - return Txt_MENU_SUBTITLE[Act_Actions[Act_Actions[Action].SuperAction].Tab][Act_Actions[Act_Actions[Action].SuperAction].IndexInMenu]; + + SuperAction = Act_Actions[Action].SuperAction; + return Txt_MENU_SUBTITLE[Act_Actions[SuperAction].Tab][Act_Actions[SuperAction].IndexInMenu]; } /*****************************************************************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 177068c3b..33826d7ba 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -150,14 +150,15 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.30 (2016-10-20)" +#define Log_PLATFORM_VERSION "SWAD 16.30.1 (2016-10-20)" #define CSS_FILE "swad16.25.css" #define JS_FILE "swad15.238.1.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 /* - Version 16.30: Oct 20, 2016 Removed country in edition of institutions. (? lines) + Version 16.30.1: Oct 20, 2016 Code refactoring related to tabs. (205077 lines) + Version 16.30: Oct 20, 2016 Removed country in edition of institutions. (205058 lines) 1 change necessary in database: UPDATE actions SET Obsolete='Y' WHERE ActCod='865'; diff --git a/swad_report.c b/swad_report.c index 48288e95e..6b65449bb 100644 --- a/swad_report.c +++ b/swad_report.c @@ -763,6 +763,7 @@ static void Rep_WriteSectionHitsPerAction (struct Rep_Report *Report) unsigned long NumRow; long ActCod; Act_Action_t Action; + Act_Action_t SuperAction; Tab_Tab_t Tab; char ActTxt[Act_MAX_LENGTH_ACTION_TXT+1]; unsigned long NumClicks; @@ -809,7 +810,8 @@ static void Rep_WriteSectionHitsPerAction (struct Rep_Report *Report) Action = Act_FromActCodToAction[ActCod]; if (Action >= 0) { - Tab = Act_Actions[Act_Actions[Action].SuperAction].Tab; + SuperAction = Act_Actions[Action].SuperAction; + Tab = Act_Actions[SuperAction].Tab; if (Txt_TABS_FULL_TXT[Tab]) fprintf (Gbl.F.Rep,"%s > ",Txt_TABS_FULL_TXT[Tab]); } diff --git a/swad_statistic.c b/swad_statistic.c index 8c0944435..9cb3604e0 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -727,7 +727,9 @@ static void Sta_WriteSelectorAction (void) extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *Txt_Action; extern const char *Txt_TABS_SHORT_TXT[Tab_NUM_TABS]; - Act_Action_t NumAction; + Act_Action_t Action; + Act_Action_t SuperAction; + Tab_Tab_t Tab; char ActTxt[Act_MAX_LENGTH_ACTION_TXT+1]; fprintf (Gbl.F.Out,"" @@ -738,21 +740,22 @@ static void Sta_WriteSelectorAction (void) "" diff --git a/swad_tab.c b/swad_tab.c index 142162353..3aaf144fa 100644 --- a/swad_tab.c +++ b/swad_tab.c @@ -262,8 +262,7 @@ static void Tab_WriteBreadcrumbTab (void) Act_LinkFormSubmit (Txt_TABS_FULL_TXT[Gbl.Action.Tab],The_ClassTxtTabOn[Gbl.Prefs.Theme],NULL); /***** Title and end of form *****/ - fprintf (Gbl.F.Out,"%s", - Txt_TABS_FULL_TXT[Gbl.Action.Tab]); + fprintf (Gbl.F.Out,"%s",Txt_TABS_FULL_TXT[Gbl.Action.Tab]); Act_FormEnd (); } @@ -294,8 +293,10 @@ static void Tab_WriteBreadcrumbAction (void) void Tab_SetCurrentTab (void) { extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS]; + Act_Action_t SuperAction; - Gbl.Action.Tab = Act_Actions[Gbl.Action.Act].Tab; + SuperAction = Act_Actions[Gbl.Action.Act].SuperAction; + Gbl.Action.Tab = Act_Actions[SuperAction].Tab; /***** Change action and tab if country, institution, centre or degree are incompatible with the current tab *****/ @@ -341,7 +342,9 @@ void Tab_SetCurrentTab (void) default: break; } - Gbl.Action.Tab = Act_Actions[Gbl.Action.Act].Tab; + + SuperAction = Act_Actions[Gbl.Action.Act].SuperAction; + Gbl.Action.Tab = Act_Actions[SuperAction].Tab; Tab_DisableIncompatibleTabs (); }