mirror of https://github.com/acanas/swad-core.git
Version 20.68.8: Apr 30, 2021 Code refactoring in timeline.
This commit is contained in:
parent
573bcd95b3
commit
f296981e43
|
@ -600,13 +600,14 @@ TODO: Salvador Romero Cort
|
||||||
|
|
||||||
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
|
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 20.68.7 (2021-04-29)"
|
#define Log_PLATFORM_VERSION "SWAD 20.68.8 (2021-04-30)"
|
||||||
#define CSS_FILE "swad20.45.css"
|
#define CSS_FILE "swad20.45.css"
|
||||||
#define JS_FILE "swad20.6.2.js"
|
#define JS_FILE "swad20.6.2.js"
|
||||||
/*
|
/*
|
||||||
TODO: Rename CENTRE to CENTER in help wiki.
|
TODO: Rename CENTRE to CENTER in help wiki.
|
||||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||||
|
|
||||||
|
Version 20.68.8: Apr 30, 2021 Code refactoring in timeline. (309751 lines)
|
||||||
Version 20.68.7: Apr 29, 2021 Code refactoring in timeline. (309749 lines)
|
Version 20.68.7: Apr 29, 2021 Code refactoring in timeline. (309749 lines)
|
||||||
Version 20.68.6: Apr 29, 2021 Code refactoring in timeline. (309738 lines)
|
Version 20.68.6: Apr 29, 2021 Code refactoring in timeline. (309738 lines)
|
||||||
Version 20.68.5: Apr 29, 2021 Fixed bug in matches. Reported by Jesús Garrido Alcázar. (309746 lines)
|
Version 20.68.5: Apr 29, 2021 Fixed bug in matches. Reported by Jesús Garrido Alcázar. (309746 lines)
|
||||||
|
|
|
@ -848,8 +848,8 @@ static void Tml_Not_WriteFavShaRem (const struct Tml_Timeline *Timeline,
|
||||||
" class=\"TL_SHA_NOT TL_SHA_NOT_WIDTH\"",
|
" class=\"TL_SHA_NOT TL_SHA_NOT_WIDTH\"",
|
||||||
Gbl.UniqueNameEncrypted,NumDiv);
|
Gbl.UniqueNameEncrypted,NumDiv);
|
||||||
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
||||||
Not->NotCod,Not->UsrCod,Not->NumShared,
|
Not->NotCod,Not->UsrCod,Not->NumShared,
|
||||||
Tml_Usr_SHOW_FEW_USRS);
|
Tml_Usr_SHOW_FEW_USRS);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
/***** Foot column 3: icon to remove this note *****/
|
/***** Foot column 3: icon to remove this note *****/
|
||||||
|
@ -1045,8 +1045,8 @@ void Tml_Not_MarkNotesChildrenOfFolderAsUnavailable (const char *Path)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (NoteType,
|
Tml_DB_MarkNotesChildrenOfFolderAsUnavailable (NoteType,
|
||||||
FileBrowser,Brw_GetCodForFiles (),
|
FileBrowser,Brw_GetCodForFiles (),
|
||||||
Path);
|
Path);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -1139,15 +1139,15 @@ static void Tml_Not_RequestRemovalNote (struct Tml_Timeline *Timeline)
|
||||||
NULL,Box_CLOSABLE);
|
NULL,Box_CLOSABLE);
|
||||||
HTM_DIV_Begin ("class=\"TL_WIDTH\"");
|
HTM_DIV_Begin ("class=\"TL_WIDTH\"");
|
||||||
Tml_Not_CheckAndWriteNoteWithTopMsg (Timeline,&Not,
|
Tml_Not_CheckAndWriteNoteWithTopMsg (Timeline,&Not,
|
||||||
Tml_TOP_MESSAGE_NONE,
|
Tml_TOP_MESSAGE_NONE,
|
||||||
-1L);
|
-1L);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
Box_BoxEnd ();
|
Box_BoxEnd ();
|
||||||
|
|
||||||
/* End alert */
|
/* End alert */
|
||||||
Timeline->NotCod = Not.NotCod; // Note to be removed
|
Timeline->NotCod = Not.NotCod; // Note to be removed
|
||||||
Tml_Frm_EndAlertRemove (Timeline,Tml_Frm_REM_NOTE,
|
Tml_Frm_EndAlertRemove (Timeline,Tml_Frm_REM_NOTE,
|
||||||
Tml_Not_PutParamsRemoveNote);
|
Tml_Not_PutParamsRemoveNote);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1213,6 +1213,7 @@ void Tml_Not_RemoveNoteGbl (void)
|
||||||
static void Tml_Not_RemoveNote (void)
|
static void Tml_Not_RemoveNote (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_post_no_longer_exists;
|
extern const char *Txt_The_post_no_longer_exists;
|
||||||
|
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
|
||||||
extern const char *Txt_TIMELINE_Post_removed;
|
extern const char *Txt_TIMELINE_Post_removed;
|
||||||
struct Tml_Not_Note Not;
|
struct Tml_Not_Note Not;
|
||||||
|
|
||||||
|
@ -1230,7 +1231,7 @@ static void Tml_Not_RemoveNote (void)
|
||||||
/***** Trivial check 2: Am I the author of this note *****/
|
/***** Trivial check 2: Am I the author of this note *****/
|
||||||
if (!Usr_ItsMe (Not.UsrCod))
|
if (!Usr_ItsMe (Not.UsrCod))
|
||||||
{
|
{
|
||||||
Ale_ShowAlert (Ale_ERROR,"You are not the author.");
|
Ale_ShowAlert (Ale_ERROR,Txt_You_dont_have_permission_to_perform_this_action);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1318,7 +1319,7 @@ static void Tml_Not_GetDataOfNoteFromRow (MYSQL_ROW row,struct Tml_Not_Note *Not
|
||||||
row[3]: UsrCod
|
row[3]: UsrCod
|
||||||
row[4]: HieCod
|
row[4]: HieCod
|
||||||
row[5]: Unavailable
|
row[5]: Unavailable
|
||||||
row[5]: UNIX_TIMESTAMP(TimeNote)
|
row[6]: UNIX_TIMESTAMP(TimeNote)
|
||||||
*/
|
*/
|
||||||
/***** Get code (row[0]) *****/
|
/***** Get code (row[0]) *****/
|
||||||
Not->NotCod = Str_ConvertStrCodToLongCod (row[0]);
|
Not->NotCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
@ -1342,11 +1343,11 @@ static void Tml_Not_GetDataOfNoteFromRow (MYSQL_ROW row,struct Tml_Not_Note *Not
|
||||||
Not->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[6]);
|
Not->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[6]);
|
||||||
|
|
||||||
/***** Get number of times this note has been shared *****/
|
/***** Get number of times this note has been shared *****/
|
||||||
Not->NumShared = Tml_DB_GetNumSharers (Not->NotCod,Not->UsrCod);
|
Not->NumShared = Tml_DB_GetNumSharers (Not->NotCod,Not->UsrCod);
|
||||||
|
|
||||||
/***** Get number of times this note has been favourited *****/
|
/***** Get number of times this note has been favourited *****/
|
||||||
Not->NumFavs = Tml_DB_GetNumFavers (Tml_Usr_FAV_UNF_NOTE,
|
Not->NumFavs = Tml_DB_GetNumFavers (Tml_Usr_FAV_UNF_NOTE,
|
||||||
Not->NotCod,Not->UsrCod);
|
Not->NotCod,Not->UsrCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -117,7 +117,7 @@ void Tml_Ntf_GetNotifPublication (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||||
|
|
||||||
/***** Return nothing on error *****/
|
/***** Return nothing on error *****/
|
||||||
Pub.PubType = Tml_Pub_UNKNOWN;
|
Pub.PubType = Tml_Pub_UNKNOWN;
|
||||||
SummaryStr[0] = '\0'; // Return nothing on error
|
SummaryStr[0] = '\0'; // Return nothing on error
|
||||||
Content.Txt[0] = '\0';
|
Content.Txt[0] = '\0';
|
||||||
|
|
||||||
/***** Get summary and content from post from database *****/
|
/***** Get summary and content from post from database *****/
|
||||||
|
|
|
@ -140,7 +140,7 @@ static void Tml_Pst_ShowPostContent (struct Tml_Pst_Content *Content)
|
||||||
/***** Show media *****/
|
/***** Show media *****/
|
||||||
Med_ShowMedia (&Content->Media,"TL_PST_MED_CONT TL_RIGHT_WIDTH",
|
Med_ShowMedia (&Content->Media,"TL_PST_MED_CONT TL_RIGHT_WIDTH",
|
||||||
"TL_PST_MED TL_RIGHT_WIDTH");
|
"TL_PST_MED TL_RIGHT_WIDTH");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Form to write a new publication **********************/
|
/********************** Form to write a new publication **********************/
|
||||||
|
|
|
@ -60,7 +60,7 @@ extern struct Globals Gbl;
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Tml_Pub_InitializeRangeOfPubs (Tml_WhatToGet_t WhatToGet,
|
static void Tml_Pub_InitializeRangeOfPubs (Tml_WhatToGet_t WhatToGet,
|
||||||
struct Tml_Pub_RangePubsToGet *RangePubsToGet);
|
struct Tml_Pub_RangePubsToGet *RangePubsToGet);
|
||||||
|
|
||||||
static unsigned Tml_Pub_GetMaxPubsToGet (const struct Tml_Timeline *Timeline);
|
static unsigned Tml_Pub_GetMaxPubsToGet (const struct Tml_Timeline *Timeline);
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ void Tml_Pub_GetListPubsToShowInTimeline (struct Tml_Timeline *Timeline)
|
||||||
Timeline->Pubs.Bottom = Pub; // Update pointer to bottom publication
|
Timeline->Pubs.Bottom = Pub; // Update pointer to bottom publication
|
||||||
|
|
||||||
if (Pub == NULL) // Nothing got ==> abort loop
|
if (Pub == NULL) // Nothing got ==> abort loop
|
||||||
break; // Last publication
|
break; // Last publication
|
||||||
|
|
||||||
/* Insert note in temporary tables with just retrieved notes.
|
/* Insert note in temporary tables with just retrieved notes.
|
||||||
These tables will be used to not get notes already shown */
|
These tables will be used to not get notes already shown */
|
||||||
|
@ -201,7 +201,7 @@ void Tml_Pub_GetListPubsToShowInTimeline (struct Tml_Timeline *Timeline)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Tml_Pub_InitializeRangeOfPubs (Tml_WhatToGet_t WhatToGet,
|
static void Tml_Pub_InitializeRangeOfPubs (Tml_WhatToGet_t WhatToGet,
|
||||||
struct Tml_Pub_RangePubsToGet *RangePubsToGet)
|
struct Tml_Pub_RangePubsToGet *RangePubsToGet)
|
||||||
{
|
{
|
||||||
/* Initialize range of pubs:
|
/* Initialize range of pubs:
|
||||||
|
|
||||||
|
@ -276,16 +276,14 @@ static void Tml_Pub_UpdateFirstLastPubCodesIntoSession (const struct Tml_Timelin
|
||||||
Tml_DB_UpdateLastPubCodInSession ();
|
Tml_DB_UpdateLastPubCodInSession ();
|
||||||
break;
|
break;
|
||||||
case Tml_GET_ONLY_OLD_PUBS: // Get only old publications
|
case Tml_GET_ONLY_OLD_PUBS: // Get only old publications
|
||||||
// The oldest publication code retrieved and shown
|
|
||||||
FirstPubCod = Timeline->Pubs.Bottom ? Timeline->Pubs.Bottom->PubCod :
|
|
||||||
0;
|
|
||||||
Tml_DB_UpdateFirstPubCodInSession (FirstPubCod);
|
|
||||||
break;
|
|
||||||
case Tml_GET_RECENT_TIMELINE: // Get last publications
|
case Tml_GET_RECENT_TIMELINE: // Get last publications
|
||||||
// The oldest publication code retrieved and shown
|
// The oldest publication code retrieved and shown
|
||||||
FirstPubCod = Timeline->Pubs.Bottom ? Timeline->Pubs.Bottom->PubCod :
|
FirstPubCod = Timeline->Pubs.Bottom ? Timeline->Pubs.Bottom->PubCod :
|
||||||
0;
|
0;
|
||||||
Tml_DB_UpdateFirstLastPubCodsInSession (FirstPubCod);
|
if (Timeline->WhatToGet == Tml_GET_ONLY_OLD_PUBS)
|
||||||
|
Tml_DB_UpdateFirstPubCodInSession (FirstPubCod);
|
||||||
|
else
|
||||||
|
Tml_DB_UpdateFirstLastPubCodsInSession (FirstPubCod);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,8 +365,8 @@ void Tml_Pub_InsertNewPubsInTimeline (struct Tml_Timeline *Timeline)
|
||||||
/* Write note */
|
/* Write note */
|
||||||
HTM_LI_Begin ("class=\"TL_WIDTH TL_SEP TL_NEW_PUB\"");
|
HTM_LI_Begin ("class=\"TL_WIDTH TL_SEP TL_NEW_PUB\"");
|
||||||
Tml_Not_CheckAndWriteNoteWithTopMsg (Timeline,&Not,
|
Tml_Not_CheckAndWriteNoteWithTopMsg (Timeline,&Not,
|
||||||
Tml_Pub_GetTopMessage (Pub->PubType),
|
Tml_Pub_GetTopMessage (Pub->PubType),
|
||||||
Pub->PublisherCod);
|
Pub->PublisherCod);
|
||||||
HTM_LI_End ();
|
HTM_LI_End ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -395,8 +393,8 @@ void Tml_Pub_ShowOldPubsInTimeline (struct Tml_Timeline *Timeline)
|
||||||
/* Write note */
|
/* Write note */
|
||||||
HTM_LI_Begin ("class=\"TL_WIDTH TL_SEP\"");
|
HTM_LI_Begin ("class=\"TL_WIDTH TL_SEP\"");
|
||||||
Tml_Not_CheckAndWriteNoteWithTopMsg (Timeline,&Not,
|
Tml_Not_CheckAndWriteNoteWithTopMsg (Timeline,&Not,
|
||||||
Tml_Pub_GetTopMessage (Pub->PubType),
|
Tml_Pub_GetTopMessage (Pub->PubType),
|
||||||
Pub->PublisherCod);
|
Pub->PublisherCod);
|
||||||
HTM_LI_End ();
|
HTM_LI_End ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,8 +81,8 @@ void Tml_Sha_ShowAllSharersNoteGbl (void)
|
||||||
|
|
||||||
/***** Write HTML inside DIV with form to share/unshare *****/
|
/***** Write HTML inside DIV with form to share/unshare *****/
|
||||||
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
||||||
Not.NotCod,Not.UsrCod,Not.NumShared,
|
Not.NotCod,Not.UsrCod,Not.NumShared,
|
||||||
Tml_Usr_SHOW_ALL_USRS);
|
Tml_Usr_SHOW_ALL_USRS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -107,8 +107,8 @@ void Tml_Sha_ShaNoteGbl (void)
|
||||||
|
|
||||||
/***** Write HTML inside DIV with form to unshare *****/
|
/***** Write HTML inside DIV with form to unshare *****/
|
||||||
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
||||||
Not.NotCod,Not.UsrCod,Not.NumShared,
|
Not.NotCod,Not.UsrCod,Not.NumShared,
|
||||||
Tml_Usr_SHOW_FEW_USRS);
|
Tml_Usr_SHOW_FEW_USRS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Tml_Sha_ShaNote (struct Tml_Not_Note *Not)
|
static void Tml_Sha_ShaNote (struct Tml_Not_Note *Not)
|
||||||
|
@ -126,7 +126,7 @@ static void Tml_Sha_ShaNote (struct Tml_Not_Note *Not)
|
||||||
|
|
||||||
/***** Trivial check: Is note already shared by me? *****/
|
/***** Trivial check: Is note already shared by me? *****/
|
||||||
if (Tml_Usr_CheckIfFavedSharedByUsr (Tml_Usr_SHA_UNS_NOTE,Not->NotCod,
|
if (Tml_Usr_CheckIfFavedSharedByUsr (Tml_Usr_SHA_UNS_NOTE,Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod))
|
Gbl.Usrs.Me.UsrDat.UsrCod))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/***** Share (publish note in timeline) *****/
|
/***** Share (publish note in timeline) *****/
|
||||||
|
@ -167,8 +167,8 @@ void Tml_Sha_UnsNoteGbl (void)
|
||||||
|
|
||||||
/***** Write HTML inside DIV with form to share *****/
|
/***** Write HTML inside DIV with form to share *****/
|
||||||
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
Tml_Usr_PutIconFavSha (Tml_Usr_SHA_UNS_NOTE,
|
||||||
Not.NotCod,Not.UsrCod,Not.NumShared,
|
Not.NotCod,Not.UsrCod,Not.NumShared,
|
||||||
Tml_Usr_SHOW_FEW_USRS);
|
Tml_Usr_SHOW_FEW_USRS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Tml_Sha_UnsNote (struct Tml_Not_Note *Not)
|
static void Tml_Sha_UnsNote (struct Tml_Not_Note *Not)
|
||||||
|
|
|
@ -348,6 +348,7 @@ static void Tml_Usr_PutDisabledIconFavSha (Tml_Usr_FavSha_t FavSha,
|
||||||
bool Tml_Usr_CheckIfICanFavSha (long Cod,long UsrCod)
|
bool Tml_Usr_CheckIfICanFavSha (long Cod,long UsrCod)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_post_no_longer_exists;
|
extern const char *Txt_The_post_no_longer_exists;
|
||||||
|
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
|
||||||
|
|
||||||
/***** Trivial check 1: note/comment code should be > 0 *****/
|
/***** Trivial check 1: note/comment code should be > 0 *****/
|
||||||
if (Cod <= 0)
|
if (Cod <= 0)
|
||||||
|
@ -360,8 +361,8 @@ bool Tml_Usr_CheckIfICanFavSha (long Cod,long UsrCod)
|
||||||
I can not fav/share my own notes/comments *****/
|
I can not fav/share my own notes/comments *****/
|
||||||
if (!Gbl.Usrs.Me.Logged || Usr_ItsMe (UsrCod))
|
if (!Gbl.Usrs.Me.Logged || Usr_ItsMe (UsrCod))
|
||||||
{
|
{
|
||||||
Err_NoPermissionExit ();
|
Ale_ShowAlert (Ale_ERROR,Txt_You_dont_have_permission_to_perform_this_action);
|
||||||
return false; // Not reached
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -374,6 +375,7 @@ bool Tml_Usr_CheckIfICanFavSha (long Cod,long UsrCod)
|
||||||
bool Tml_Usr_CheckIfICanRemove (long Cod,long UsrCod)
|
bool Tml_Usr_CheckIfICanRemove (long Cod,long UsrCod)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_post_no_longer_exists;
|
extern const char *Txt_The_post_no_longer_exists;
|
||||||
|
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
|
||||||
|
|
||||||
/***** Trivial check 1: note/comment code should be > 0 *****/
|
/***** Trivial check 1: note/comment code should be > 0 *****/
|
||||||
if (Cod <= 0)
|
if (Cod <= 0)
|
||||||
|
@ -386,8 +388,8 @@ bool Tml_Usr_CheckIfICanRemove (long Cod,long UsrCod)
|
||||||
I can only remove my own notes/comments *****/
|
I can only remove my own notes/comments *****/
|
||||||
if (!Gbl.Usrs.Me.Logged || !Usr_ItsMe (UsrCod))
|
if (!Gbl.Usrs.Me.Logged || !Usr_ItsMe (UsrCod))
|
||||||
{
|
{
|
||||||
Err_NoPermissionExit ();
|
Ale_ShowAlert (Ale_ERROR,Txt_You_dont_have_permission_to_perform_this_action);
|
||||||
return false; // Not reached
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue