From af9a391f65b9d644e2a5550674a7d85d63bc6b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 19 Apr 2019 13:11:54 +0200 Subject: [PATCH] Version18.116 --- swad_ID.c | 4 ++-- swad_action.c | 52 ++++++++++++++++++++++++------------------------ swad_action.h | 3 +++ swad_changelog.h | 5 ++--- swad_layout.c | 6 ------ swad_main.c | 25 +++++++++++++++++++++-- swad_parameter.c | 40 ++++++++++++------------------------- swad_photo.c | 9 ++++++--- swad_plugin.c | 13 ------------ swad_plugin.h | 1 - swad_project.c | 6 ------ swad_timeline.c | 33 ------------------------------ 12 files changed, 75 insertions(+), 122 deletions(-) diff --git a/swad_ID.c b/swad_ID.c index 9351b0ba..b8788612 100644 --- a/swad_ID.c +++ b/swad_ID.c @@ -375,8 +375,8 @@ void ID_WriteUsrIDs (struct UsrData *UsrDat,const char *Anchor) ICanSeeUsrID = ID_ICanSeeOtherUsrIDs (UsrDat); ICanConfirmUsrID = ICanSeeUsrID && - (UsrDat->UsrCod != Gbl.Usrs.Me.UsrDat.UsrCod) && // Not me - !Gbl.Form.Inside && // Not inside another form + (UsrDat->UsrCod != Gbl.Usrs.Me.UsrDat.UsrCod) && // Not me + !Gbl.Form.Inside && // Not inside another form Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB; // Only in main browser tab for (NumID = 0; diff --git a/swad_action.c b/swad_action.c index ba3d3d84..eb978d58 100644 --- a/swad_action.c +++ b/swad_action.c @@ -1612,12 +1612,12 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActAll */{ 645,-1,TabUnk,ActAll ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL}, // Used for statistics /* ActUnk */{ 194,-1,TabUnk,ActUnk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL}, /* ActMnu */{ 2,-1,TabUnk,ActMnu ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL}, - /* ActRefCon */{ 845,-1,TabUnk,ActRefCon ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lay_RefreshNotifsAndConnected ,NULL}, - /* ActRefLstClk */{ 994,-1,TabUnk,ActRefLstClk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lay_RefreshLastClicks ,NULL}, - /* ActRefNewSocPubGbl*/{1509,-1,TabUnk,ActRefNewSocPubGbl ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_RefreshNewTimelineGbl ,NULL}, - /* ActRefOldSocPubGbl*/{1510,-1,TabUnk,ActRefOldSocPubGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_RefreshOldTimelineGbl ,NULL}, - /* ActRefOldSocPubUsr*/{1511,-1,TabUnk,ActRefOldSocPubUsr ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_RefreshOldTimelineUsr ,NULL}, - /* ActWebSvc */{ 892,-1,TabUnk,ActWebSvc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Plg_WebService ,NULL}, + /* ActRefCon */{ 845,-1,TabUnk,ActRefCon ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_AJAX_RFRESH,NULL ,Lay_RefreshNotifsAndConnected ,NULL}, + /* ActRefLstClk */{ 994,-1,TabUnk,ActRefLstClk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_AJAX_RFRESH,NULL ,Lay_RefreshLastClicks ,NULL}, + /* ActRefNewSocPubGbl*/{1509,-1,TabUnk,ActRefNewSocPubGbl ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_AJAX_RFRESH,NULL ,TL_RefreshNewTimelineGbl ,NULL}, + /* ActRefOldSocPubGbl*/{1510,-1,TabUnk,ActRefOldSocPubGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_RefreshOldTimelineGbl ,NULL}, + /* ActRefOldSocPubUsr*/{1511,-1,TabUnk,ActRefOldSocPubUsr ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_RefreshOldTimelineUsr ,NULL}, + /* ActWebSvc */{ 892,-1,TabUnk,ActWebSvc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_WEB_SERVICE,NULL ,Svc_WebService ,NULL}, // TabStr ****************************************************************** /* ActFrmLogIn */{1521, 0,TabStr,ActFrmLogIn , 0,0x001,0x001,0x001,0x001,0x001,0x001,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WriteLandingPage ,"power-off" }, @@ -1639,15 +1639,15 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActRcvSocPstGbl */{1492,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,TL_ShowTimelineGbl1 ,TL_ReceivePostGbl ,NULL}, /* ActRcvSocComGbl */{1503,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,TL_ShowTimelineGbl1 ,TL_ReceiveCommentGbl ,NULL}, - /* ActAllShaSocNotGbl*/{1766,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShowAllSharersNoteGbl ,NULL}, - /* ActAllFavSocNotGbl*/{1767,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShowAllFaversNoteGbl ,NULL}, - /* ActAllFavSocComGbl*/{1768,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShowAllFaversComGbl ,NULL}, - /* ActShaSocNotGbl */{1495,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShaNoteGbl ,NULL}, - /* ActUnsSocNotGbl */{1496,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_UnsNoteGbl ,NULL}, - /* ActFavSocNotGbl */{1512,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_FavNoteGbl ,NULL}, - /* ActUnfSocNotGbl */{1513,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_UnfNoteGbl ,NULL}, - /* ActFavSocComGbl */{1516,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_FavCommentGbl ,NULL}, - /* ActUnfSocComGbl */{1517,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_UnfCommentGbl ,NULL}, + /* ActAllShaSocNotGbl*/{1766,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShowAllSharersNoteGbl ,NULL}, + /* ActAllFavSocNotGbl*/{1767,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShowAllFaversNoteGbl ,NULL}, + /* ActAllFavSocComGbl*/{1768,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShowAllFaversComGbl ,NULL}, + /* ActShaSocNotGbl */{1495,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShaNoteGbl ,NULL}, + /* ActUnsSocNotGbl */{1496,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_UnsNoteGbl ,NULL}, + /* ActFavSocNotGbl */{1512,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_FavNoteGbl ,NULL}, + /* ActUnfSocNotGbl */{1513,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_UnfNoteGbl ,NULL}, + /* ActFavSocComGbl */{1516,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_FavCommentGbl ,NULL}, + /* ActUnfSocComGbl */{1517,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_UnfCommentGbl ,NULL}, /* ActReqRemSocPubGbl*/{1494,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TL_ShowTimelineGbl1 ,TL_RequestRemNoteGbl ,NULL}, /* ActRemSocPubGbl */{1493,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TL_ShowTimelineGbl1 ,TL_RemoveNoteGbl ,NULL}, /* ActReqRemSocComGbl*/{1505,-1,TabUnk,ActSeeSocTmlGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TL_ShowTimelineGbl1 ,TL_RequestRemComGbl ,NULL}, @@ -1657,15 +1657,15 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActRcvSocPstUsr */{1498,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TL_ReceivePostUsr ,NULL}, /* ActRcvSocComUsr */{1504,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TL_ReceiveCommentUsr ,NULL}, - /* ActAllShaSocNotUsr*/{1769,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShowAllSharersNoteUsr ,NULL}, - /* ActAllFavSocNotUsr*/{1770,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShowAllFaversNoteUsr ,NULL}, - /* ActAllFavSocComUsr*/{1771,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShowAllFaversComUsr ,NULL}, - /* ActShaSocNotUsr */{1499,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_ShaNoteUsr ,NULL}, - /* ActUnsSocNotUsr */{1500,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_UnsNoteUsr ,NULL}, - /* ActFavSocNotUsr */{1514,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_FavNoteUsr ,NULL}, - /* ActUnfSocNotUsr */{1515,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_UnfNoteUsr ,NULL}, - /* ActFavSocComUsr */{1518,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_FavCommentUsr ,NULL}, - /* ActUnfSocComUsr */{1519,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_UnfCommentUsr ,NULL}, + /* ActAllShaSocNotUsr*/{1769,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShowAllSharersNoteUsr ,NULL}, + /* ActAllFavSocNotUsr*/{1770,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShowAllFaversNoteUsr ,NULL}, + /* ActAllFavSocComUsr*/{1771,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShowAllFaversComUsr ,NULL}, + /* ActShaSocNotUsr */{1499,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_ShaNoteUsr ,NULL}, + /* ActUnsSocNotUsr */{1500,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_UnsNoteUsr ,NULL}, + /* ActFavSocNotUsr */{1514,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_FavNoteUsr ,NULL}, + /* ActUnfSocNotUsr */{1515,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_UnfNoteUsr ,NULL}, + /* ActFavSocComUsr */{1518,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_FavCommentUsr ,NULL}, + /* ActUnfSocComUsr */{1519,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TL_UnfCommentUsr ,NULL}, /* ActReqRemSocPubUsr*/{1501,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_RequestRemNoteUsr ,NULL}, /* ActRemSocPubUsr */{1502,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_RemoveNoteUsr ,NULL}, /* ActReqRemSocComGbl*/{1506,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TL_RequestRemComUsr ,NULL}, @@ -2049,8 +2049,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActRemPrj */{1681,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemoveProject ,NULL}, /* ActHidPrj */{1682,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_HideProject ,NULL}, /* ActShoPrj */{1683,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProject ,NULL}, - /* ActLckPrj */{1773,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_LockProjectEdition ,NULL}, - /* ActUnlPrj */{1774,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_UnlockProjectEdition ,NULL}, + /* ActLckPrj */{1773,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,Prj_LockProjectEdition ,NULL}, + /* ActUnlPrj */{1774,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,Prj_UnlockProjectEdition ,NULL}, /* ActReqLckAllPrj */{1775,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqLockAllProjectsEdition ,NULL}, /* ActReqUnlAllPrj */{1776,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqUnlockAllProjectsEdition,NULL}, /* ActLckAllPrj */{1777,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_LockAllProjectsEdition ,NULL}, diff --git a/swad_action.h b/swad_action.h index 8e88fd34..8e821e7a 100644 --- a/swad_action.h +++ b/swad_action.h @@ -54,9 +54,12 @@ typedef enum Act_BRW_1ST_TAB, // The main (original, first) tab in the browser Act_BRW_NEW_TAB, // A new (second) blank tab in the browser Act_BRW_2ND_TAB, // The second tab in the browser + Act_AJAX_NORMAL, // Update a zone of the page using AJAX + Act_AJAX_RFRESH, // Update a zone of the page using AJAX, with auto-refresh Act_UPLOAD_FILE, // Upload a file. Do not write HTML content. Write Status code instead for Dropzone.js Act_DOWNLD_FILE, // Download a file in a new tab. Do not write HTML content. Act_204_NO_CONT, // Do not write HTML content. HTTP will return Status 204 No Content + Act_WEB_SERVICE, // Web service. Send output to client using SOAP. } Act_BrowserTab_t; typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action diff --git a/swad_changelog.h b/swad_changelog.h index 7e3104f6..3b76512b 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -425,8 +425,6 @@ Lo de mutear anuncios, en principio prefiero hacer una opci // TODO: Check if Feedback is set to "(null)" when importing test questions. Change columns Feedback "(null)" to "" in test questions -// TODO: Select users individually in action to send email - // TODO: Allow timeline posting only for users belonging to courses or admins to avoid user who create accounts only to post // TODO: Ver cómo recibir un fichero desde el cliente (SWADroid) en gsoap @@ -450,10 +448,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.115 (2019-04-18)" +#define Log_PLATFORM_VERSION "SWAD 18.116 (2019-04-19)" #define CSS_FILE "swad18.112.1.css" #define JS_FILE "swad18.114.js" /* + Version 18.116: Apr 18, 2019 Code refactoring related to actions and AJAX. (243246 lines) Version 18.115: Apr 18, 2019 Contextual buttons to lock/unlock edition of all projects, suggested by Pedro Villar Castro. (243275 lines) Version 18.114.3: Apr 18, 2019 Locked edition of a project. (243025 lines) Version 18.114.2: Apr 18, 2019 Icons to inform about locked/unlocked project edition. (243023 lines) diff --git a/swad_layout.c b/swad_layout.c index a450b221..e1753dec 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -1486,9 +1486,6 @@ void Lay_RefreshNotifsAndConnected (void) NumUsr < Gbl.Usrs.Connected.NumUsrsToList; NumUsr++) fprintf (Gbl.F.Out,"%ld|",Gbl.Usrs.Connected.Lst[NumUsr].TimeDiff); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } /*****************************************************************************/ @@ -1505,9 +1502,6 @@ void Lay_RefreshLastClicks (void) /***** Get and show last clicks *****/ Sta_GetAndShowLastClicks (); } - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } /*****************************************************************************/ diff --git a/swad_main.c b/swad_main.c index f27a77e5..1f5ed789 100644 --- a/swad_main.c +++ b/swad_main.c @@ -131,8 +131,15 @@ int main (void) Con_RemoveOldConnected (); /***** Get number of sessions *****/ - if (Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB) - Ses_GetNumSessions (); + switch (Act_GetBrowserTab (Gbl.Action.Act)) + { + case Act_BRW_1ST_TAB: + case Act_AJAX_RFRESH: + Ses_GetNumSessions (); + break; + default: + break; + } /***** Check user and get user's data *****/ Usr_ChkUsrAndGetUsrData (); @@ -176,6 +183,20 @@ int main (void) FunctionPosteriori = Act_GetFunctionPosteriori (Gbl.Action.Act); if (FunctionPosteriori != NULL) FunctionPosteriori (); + + /* When updating a small zone via AJAX, all output is already done */ + switch (Act_GetBrowserTab (Gbl.Action.Act)) + { + case Act_AJAX_NORMAL: + case Act_AJAX_RFRESH: + case Act_WEB_SERVICE: + /* All the output is made, so don't write anymore */ + Gbl.Layout.DivsEndWritten = + Gbl.Layout.HTMLEndWritten = true; + break; + default: + break; + } } /***** Cleanup and exit *****/ diff --git a/swad_parameter.c b/swad_parameter.c index 490dbfab..924e9b5b 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -718,38 +718,24 @@ void Par_GetMainParameters (void) /***** Get action to perform *****/ ActCod = Par_GetParToLong ("act"); - // if (ActCod < 0) - // ActCod = Par_GetParToLong ("ActCod"); // Obsolete, old parameter now replaced by "act" if (ActCod >= 0 && ActCod <= Act_MAX_ACTION_COD) Gbl.Action.Act = Gbl.Action.Original = Act_FromActCodToAction[ActCod]; /***** Some preliminary adjusts depending on action *****/ - if (Gbl.Action.Act == ActRefCon || - Gbl.Action.Act == ActRefLstClk || - Gbl.Action.Act == ActRefNewSocPubGbl) - { - Gbl.Action.UsesAJAX = true; - Gbl.Action.IsAJAXAutoRefresh = true; - } - else if (Gbl.Action.Act == ActRefOldSocPubGbl || Gbl.Action.Act == ActRefOldSocPubUsr || - Gbl.Action.Act == ActAllShaSocNotGbl || Gbl.Action.Act == ActAllShaSocNotUsr || - Gbl.Action.Act == ActAllFavSocNotGbl || Gbl.Action.Act == ActAllFavSocNotUsr || - Gbl.Action.Act == ActAllFavSocComGbl || Gbl.Action.Act == ActAllFavSocComUsr || - Gbl.Action.Act == ActShaSocNotGbl || Gbl.Action.Act == ActShaSocNotUsr || - Gbl.Action.Act == ActUnsSocNotGbl || Gbl.Action.Act == ActUnsSocNotUsr || - Gbl.Action.Act == ActFavSocNotGbl || Gbl.Action.Act == ActFavSocNotUsr || - Gbl.Action.Act == ActUnfSocNotGbl || Gbl.Action.Act == ActUnfSocNotUsr || - Gbl.Action.Act == ActFavSocComGbl || Gbl.Action.Act == ActFavSocComUsr || - Gbl.Action.Act == ActUnfSocComGbl || Gbl.Action.Act == ActUnfSocComUsr || - Gbl.Action.Act == ActLckPrj || Gbl.Action.Act == ActUnlPrj) + switch (Act_GetBrowserTab (Gbl.Action.Act)) { - Gbl.Action.UsesAJAX = true; - Gbl.Action.IsAJAXAutoRefresh = false; - } - else - { - Gbl.Action.UsesAJAX = false; - Gbl.Action.IsAJAXAutoRefresh = false; + case Act_AJAX_NORMAL: + Gbl.Action.UsesAJAX = true; + Gbl.Action.IsAJAXAutoRefresh = false; + break; + case Act_AJAX_RFRESH: + Gbl.Action.UsesAJAX = true; + Gbl.Action.IsAJAXAutoRefresh = true; + break; + default: + Gbl.Action.UsesAJAX = false; + Gbl.Action.IsAJAXAutoRefresh = false; + break; } /***** Get session identifier, if exists *****/ diff --git a/swad_photo.c b/swad_photo.c index 2032a11e..801d728a 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -1172,11 +1172,14 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, unsigned NumFollowing; unsigned NumFollowers; bool PhotoExists; - bool BrowserTabIs1stTab = Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB; + Act_BrowserTab_t BrowserTab = Act_GetBrowserTab (Gbl.Action.Act); + bool BrowserTabIs1stTab = (BrowserTab == Act_BRW_1ST_TAB || + BrowserTab == Act_AJAX_NORMAL || + BrowserTab == Act_AJAX_RFRESH); bool PutLinkToPublicProfile = !Gbl.Form.Inside && // Only if not inside another form - BrowserTabIs1stTab; // Only in main browser tab + BrowserTabIs1stTab; // Only in main browser tab (or AJAX) bool PutZoomCode = (Zoom == Pho_ZOOM) && // Make zoom - BrowserTabIs1stTab; // Only in main browser tab + BrowserTabIs1stTab; // Only in main browser tab (or AJAX) char IdCaption[Frm_MAX_BYTES_ID + 1]; char MainDegreeShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; Rol_Role_t MaxRole; // Maximum user's role in his/her main degree diff --git a/swad_plugin.c b/swad_plugin.c index bf750819..293d4060 100644 --- a/swad_plugin.c +++ b/swad_plugin.c @@ -1100,19 +1100,6 @@ static void Plg_CreatePlugin (struct Plugin *Plg) Plg->AppKey,Plg->URL,Plg->IP); } -/*****************************************************************************/ -/******** Function called when a web service if required by a plugin *********/ -/*****************************************************************************/ - -void Plg_WebService (void) - { - /***** Call soap service *****/ - Svc_WebService (); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; - } - /*****************************************************************************/ /************************ Plugin constructor/destructor **********************/ /*****************************************************************************/ diff --git a/swad_plugin.h b/swad_plugin.h index 232f562e..b5f3b518 100644 --- a/swad_plugin.h +++ b/swad_plugin.h @@ -77,6 +77,5 @@ void Plg_ChangePlgIP (void); void Plg_ContEditAfterChgPlg (void); void Plg_RecFormNewPlg (void); -void Plg_WebService (void); #endif diff --git a/swad_project.c b/swad_project.c index c22702ba..762463d6 100644 --- a/swad_project.c +++ b/swad_project.c @@ -3018,9 +3018,6 @@ void Prj_LockProjectEdition (void) /***** Free memory of the project *****/ Prj_FreeMemProject (&Prj); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } static void Prj_LockProjectEditionInDB (long PrjCod) @@ -3064,9 +3061,6 @@ void Prj_UnlockProjectEdition (void) /***** Free memory of the project *****/ Prj_FreeMemProject (&Prj); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } static void Prj_UnlockProjectEditionInDB (long PrjCod) diff --git a/swad_timeline.c b/swad_timeline.c index 9fb5968f..8813cb7d 100644 --- a/swad_timeline.c +++ b/swad_timeline.c @@ -470,9 +470,6 @@ void TL_RefreshNewTimelineGbl (void) /***** Drop temporary tables *****/ TL_DropTemporaryTablesUsedToQueryTimeline (); } - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } /*****************************************************************************/ @@ -514,9 +511,6 @@ static void TL_GetAndShowOldTimeline (TL_TimelineUsrOrGbl_t TimelineUsrOrGbl) /***** Drop temporary tables *****/ TL_DropTemporaryTablesUsedToQueryTimeline (); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } /*****************************************************************************/ @@ -3238,9 +3232,6 @@ void TL_ShowAllSharersNoteGbl (void) /***** Write HTML inside DIV with form to share/unshare *****/ TL_PutFormToShaUnsNote (&SocNot,TL_SHOW_ALL_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } void TL_ShaNoteUsr (void) @@ -3261,9 +3252,6 @@ void TL_ShaNoteGbl (void) /***** Write HTML inside DIV with form to unshare *****/ TL_PutFormToShaUnsNote (&SocNot,TL_SHOW_A_FEW_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } static void TL_PutFormToShaUnsNote (const struct TL_Note *SocNot, @@ -3354,9 +3342,6 @@ void TL_ShowAllFaversNoteGbl (void) /***** Write HTML inside DIV with form to fav/unfav *****/ TL_PutFormToFavUnfNote (&SocNot,TL_SHOW_ALL_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } void TL_FavNoteUsr (void) @@ -3377,9 +3362,6 @@ void TL_FavNoteGbl (void) /***** Write HTML inside DIV with form to unfav *****/ TL_PutFormToFavUnfNote (&SocNot,TL_SHOW_A_FEW_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } void TL_UnfNoteUsr (void) @@ -3400,9 +3382,6 @@ void TL_UnfNoteGbl (void) /***** Write HTML inside DIV with form to fav *****/ TL_PutFormToFavUnfNote (&SocNot,TL_SHOW_A_FEW_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } static void TL_PutFormToFavUnfNote (const struct TL_Note *SocNot, @@ -3531,9 +3510,6 @@ void TL_ShowAllFaversComGbl (void) /***** Write HTML inside DIV with form to fav/unfav *****/ TL_PutFormToFavUnfComment (&SocCom,TL_SHOW_ALL_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } void TL_FavCommentUsr (void) @@ -3554,9 +3530,6 @@ void TL_FavCommentGbl (void) /***** Write HTML inside DIV with form to unfav *****/ TL_PutFormToFavUnfComment (&SocCom,TL_SHOW_A_FEW_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } void TL_UnfCommentUsr (void) @@ -3577,9 +3550,6 @@ void TL_UnfCommentGbl (void) /***** Write HTML inside DIV with form to fav *****/ TL_PutFormToFavUnfComment (&SocCom,TL_SHOW_A_FEW_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } static void TL_PutFormToFavUnfComment (const struct TL_Comment *SocCom, @@ -3747,9 +3717,6 @@ void TL_UnsNoteGbl (void) /***** Write HTML inside DIV with form to share *****/ TL_PutFormToShaUnsNote (&SocNot,TL_SHOW_A_FEW_USRS); - - /***** All the output is made, so don't write anymore *****/ - Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true; } static void TL_UnsNote (struct TL_Note *SocNot)