mirror of https://github.com/acanas/swad-core.git
Version20.29.1
This commit is contained in:
parent
1d8eaf3cc7
commit
66bcd78571
|
@ -553,7 +553,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
||||||
En OpenSWAD:
|
En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 20.29 (2021-02-11)"
|
#define Log_PLATFORM_VERSION "SWAD 20.29.1 (2021-02-11)"
|
||||||
#define CSS_FILE "swad20.8.css"
|
#define CSS_FILE "swad20.8.css"
|
||||||
#define JS_FILE "swad20.6.2.js"
|
#define JS_FILE "swad20.6.2.js"
|
||||||
/*
|
/*
|
||||||
|
@ -601,6 +601,7 @@ TODO: DNI de un estudiante sale err
|
||||||
TODO: BUG: Cuando un tipo de grupo sólo tiene un grupo, inscribirse es voluntario, el estudiante sólo puede pertenecer a un grupo, y se inscribe en él, debería poder desapuntarse. Ahora no puede.
|
TODO: BUG: Cuando un tipo de grupo sólo tiene un grupo, inscribirse es voluntario, el estudiante sólo puede pertenecer a un grupo, y se inscribe en él, debería poder desapuntarse. Ahora no puede.
|
||||||
TODO: Salvador Romero Cortés: @acanas opción para editar posts
|
TODO: Salvador Romero Cortés: @acanas opción para editar posts
|
||||||
|
|
||||||
|
Version 20.29.1: Feb 11, 2021 Code refactoring in timeline. (305780 lines)
|
||||||
Version 20.29: Feb 11, 2021 New module swad_timeline_notification. (305767 lines)
|
Version 20.29: Feb 11, 2021 New module swad_timeline_notification. (305767 lines)
|
||||||
Version 20.28: Feb 11, 2021 New module swad_timeline_user. (305675 lines)
|
Version 20.28: Feb 11, 2021 New module swad_timeline_user. (305675 lines)
|
||||||
Version 20.27: Feb 11, 2021 New module swad_timeline_post. (305593 lines)
|
Version 20.27: Feb 11, 2021 New module swad_timeline_post. (305593 lines)
|
||||||
|
|
|
@ -470,7 +470,7 @@ static void TL_ShowTimeline (struct TL_Timeline *Timeline,
|
||||||
|
|
||||||
/* Write note */
|
/* Write note */
|
||||||
TL_Not_WriteNote (Timeline,&Not,
|
TL_Not_WriteNote (Timeline,&Not,
|
||||||
Pub->TopMessage,Pub->PublisherCod,
|
TL_Pub_GetTopMessage (Pub->PubType),Pub->PublisherCod,
|
||||||
Not.NotCod == NotCodToHighlight ? TL_HIGHLIGHT :
|
Not.NotCod == NotCodToHighlight ? TL_HIGHLIGHT :
|
||||||
TL_DONT_HIGHLIGHT,
|
TL_DONT_HIGHLIGHT,
|
||||||
TL_DONT_SHOW_ALONE);
|
TL_DONT_SHOW_ALONE);
|
||||||
|
@ -513,11 +513,13 @@ void TL_FormStart (const struct TL_Timeline *Timeline,
|
||||||
{
|
{
|
||||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||||
{
|
{
|
||||||
|
/***** Start form in user timeline *****/
|
||||||
Frm_StartFormAnchor (ActionUsr,"timeline");
|
Frm_StartFormAnchor (ActionUsr,"timeline");
|
||||||
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
|
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/***** Start form in global timeline *****/
|
||||||
Frm_StartForm (ActionGbl);
|
Frm_StartForm (ActionGbl);
|
||||||
Usr_PutHiddenParamWho (Timeline->Who);
|
Usr_PutHiddenParamWho (Timeline->Who);
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
/************************* Private constants and types ***********************/
|
/************************* Private constants and types ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define TL_COM_NUM_VISIBLE_COMMENTS 3 // Maximum number of comments visible before expanding them
|
#define TL_Com_NUM_VISIBLE_COMMENTS 3 // Maximum number of comments visible before expanding them
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** External global variables from others modules ****************/
|
/************** External global variables from others modules ****************/
|
||||||
|
@ -208,15 +208,15 @@ void TL_Com_WriteCommentsInNote (struct TL_Timeline *Timeline,
|
||||||
and how many final comments will be visible *****/
|
and how many final comments will be visible *****/
|
||||||
// Never hide only one comment
|
// Never hide only one comment
|
||||||
// So, the number of comments initially hidden must be 0 or >= 2
|
// So, the number of comments initially hidden must be 0 or >= 2
|
||||||
if (NumComments <= TL_COM_NUM_VISIBLE_COMMENTS + 1)
|
if (NumComments <= TL_Com_NUM_VISIBLE_COMMENTS + 1)
|
||||||
{
|
{
|
||||||
NumInitialComments = 0;
|
NumInitialComments = 0;
|
||||||
NumFinalCommentsToGet = NumComments;
|
NumFinalCommentsToGet = NumComments;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NumInitialComments = NumComments - TL_COM_NUM_VISIBLE_COMMENTS;
|
NumInitialComments = NumComments - TL_Com_NUM_VISIBLE_COMMENTS;
|
||||||
NumFinalCommentsToGet = TL_COM_NUM_VISIBLE_COMMENTS;
|
NumFinalCommentsToGet = TL_Com_NUM_VISIBLE_COMMENTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get last comments of this note from database *****/
|
/***** Get last comments of this note from database *****/
|
||||||
|
@ -419,7 +419,7 @@ void TL_Com_ShowHiddenCommentsGbl (void)
|
||||||
|
|
||||||
/***** Write HTML inside DIV with hidden comments *****/
|
/***** Write HTML inside DIV with hidden comments *****/
|
||||||
NumInitialCommentsGot = TL_Com_WriteHiddenComments (&Timeline,
|
NumInitialCommentsGot = TL_Com_WriteHiddenComments (&Timeline,
|
||||||
NotCod,IdComments,NumInitialCommentsToGet);
|
NotCod,IdComments,NumInitialCommentsToGet);
|
||||||
|
|
||||||
/***** Link to show the first comments *****/
|
/***** Link to show the first comments *****/
|
||||||
TL_Com_LinkToShowPreviousComments (IdComments,NumInitialCommentsGot);
|
TL_Com_LinkToShowPreviousComments (IdComments,NumInitialCommentsGot);
|
||||||
|
@ -812,7 +812,6 @@ static long TL_Com_ReceiveComment (void)
|
||||||
return Not.NotCod;
|
return Not.NotCod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************** Request the removal of a comment in a note *****************/
|
/**************** Request the removal of a comment in a note *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -40,8 +40,8 @@
|
||||||
/************************* Private constants and types ***********************/
|
/************************* Private constants and types ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define TL_ICON_FAV "heart.svg"
|
#define TL_Fav_ICON_FAV "heart.svg"
|
||||||
#define TL_ICON_FAVED "heart-red.svg"
|
#define TL_Fav_ICON_FAVED "heart-red.svg"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** External global variables from others modules ****************/
|
/************** External global variables from others modules ****************/
|
||||||
|
@ -91,13 +91,13 @@ static void TL_Fav_PutDisabledIconFav (unsigned NumFavs)
|
||||||
/***** Disabled icon to mark as favourite *****/
|
/***** Disabled icon to mark as favourite *****/
|
||||||
if (NumFavs)
|
if (NumFavs)
|
||||||
{
|
{
|
||||||
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,
|
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_Fav_ICON_FAV,
|
||||||
Str_BuildStringLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
|
Str_BuildStringLong (Txt_TIMELINE_NOTE_Favourited_by_X_USERS,
|
||||||
(long) NumFavs));
|
(long) NumFavs));
|
||||||
Str_FreeString ();
|
Str_FreeString ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_FAV,
|
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_Fav_ICON_FAV,
|
||||||
Txt_TIMELINE_NOTE_Not_favourited_by_anyone);
|
Txt_TIMELINE_NOTE_Not_favourited_by_anyone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,9 +110,10 @@ static void TL_Fav_PutFormToFavNote (long ParamCod)
|
||||||
extern const char *Txt_Mark_as_favourite;
|
extern const char *Txt_Mark_as_favourite;
|
||||||
|
|
||||||
/***** Form and icon to mark note as favourite *****/
|
/***** Form and icon to mark note as favourite *****/
|
||||||
TL_Usr_FormFavSha (ActFavTL_NotGbl,ActFavTL_NotUsr,
|
TL_Usr_FormFavSha (ActFavTL_NotGbl,
|
||||||
"NotCod=%ld",ParamCod,
|
ActFavTL_NotUsr,
|
||||||
TL_ICON_FAV,Txt_Mark_as_favourite);
|
"NotCod=%ld",ParamCod,
|
||||||
|
TL_Fav_ICON_FAV,Txt_Mark_as_favourite);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TL_Fav_PutFormToUnfNote (long ParamCod)
|
static void TL_Fav_PutFormToUnfNote (long ParamCod)
|
||||||
|
@ -120,9 +121,10 @@ static void TL_Fav_PutFormToUnfNote (long ParamCod)
|
||||||
extern const char *Txt_TIMELINE_NOTE_Favourite;
|
extern const char *Txt_TIMELINE_NOTE_Favourite;
|
||||||
|
|
||||||
/***** Form and icon to unfav (remove mark as favourite) note *****/
|
/***** Form and icon to unfav (remove mark as favourite) note *****/
|
||||||
TL_Usr_FormFavSha (ActUnfTL_NotGbl,ActUnfTL_NotUsr,
|
TL_Usr_FormFavSha (ActUnfTL_NotGbl,
|
||||||
"NotCod=%ld",ParamCod,
|
ActUnfTL_NotUsr,
|
||||||
TL_ICON_FAVED,Txt_TIMELINE_NOTE_Favourite);
|
"NotCod=%ld",ParamCod,
|
||||||
|
TL_Fav_ICON_FAVED,Txt_TIMELINE_NOTE_Favourite);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -134,9 +136,10 @@ static void TL_Fav_PutFormToFavComment (long ParamCod)
|
||||||
extern const char *Txt_Mark_as_favourite;
|
extern const char *Txt_Mark_as_favourite;
|
||||||
|
|
||||||
/***** Form and icon to mark comment as favourite *****/
|
/***** Form and icon to mark comment as favourite *****/
|
||||||
TL_Usr_FormFavSha (ActFavTL_ComGbl,ActFavTL_ComUsr,
|
TL_Usr_FormFavSha (ActFavTL_ComGbl,
|
||||||
"PubCod=%ld",ParamCod,
|
ActFavTL_ComUsr,
|
||||||
TL_ICON_FAV,Txt_Mark_as_favourite);
|
"PubCod=%ld",ParamCod,
|
||||||
|
TL_Fav_ICON_FAV,Txt_Mark_as_favourite);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TL_Fav_PutFormToUnfComment (long ParamCod)
|
static void TL_Fav_PutFormToUnfComment (long ParamCod)
|
||||||
|
@ -144,9 +147,10 @@ static void TL_Fav_PutFormToUnfComment (long ParamCod)
|
||||||
extern const char *Txt_TIMELINE_NOTE_Favourite;
|
extern const char *Txt_TIMELINE_NOTE_Favourite;
|
||||||
|
|
||||||
/***** Form and icon to unfav (remove mark as favourite) comment *****/
|
/***** Form and icon to unfav (remove mark as favourite) comment *****/
|
||||||
TL_Usr_FormFavSha (ActUnfTL_ComGbl,ActUnfTL_ComUsr,
|
TL_Usr_FormFavSha (ActUnfTL_ComGbl,
|
||||||
"PubCod=%ld",ParamCod,
|
ActUnfTL_ComUsr,
|
||||||
TL_ICON_FAVED,Txt_TIMELINE_NOTE_Favourite);
|
"PubCod=%ld",ParamCod,
|
||||||
|
TL_Fav_ICON_FAVED,Txt_TIMELINE_NOTE_Favourite);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -231,10 +235,10 @@ void TL_Fav_PutFormToFavUnfNote (const struct TL_Not_Note *Not,
|
||||||
{
|
{
|
||||||
/* Put icon to fav/unfav */
|
/* Put icon to fav/unfav */
|
||||||
IAmAFaverOfThisNot = TL_Fav_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
IAmAFaverOfThisNot = TL_Fav_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
if (IAmAFaverOfThisNot) // I have favourited this note
|
if (IAmAFaverOfThisNot) // I have favourited this note
|
||||||
TL_Fav_PutFormToUnfNote (Not->NotCod);
|
TL_Fav_PutFormToUnfNote (Not->NotCod);
|
||||||
else // I am not a faver of this note
|
else // I am not a faver of this note
|
||||||
TL_Fav_PutFormToFavNote (Not->NotCod);
|
TL_Fav_PutFormToFavNote (Not->NotCod);
|
||||||
}
|
}
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
@ -257,7 +261,7 @@ static void TL_Fav_FavNote (struct TL_Not_Note *Not)
|
||||||
ItsMe = Usr_ItsMe (Not->UsrCod);
|
ItsMe = Usr_ItsMe (Not->UsrCod);
|
||||||
if (Gbl.Usrs.Me.Logged && !ItsMe) // I am not the author
|
if (Gbl.Usrs.Me.Logged && !ItsMe) // I am not the author
|
||||||
if (!TL_Fav_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
if (!TL_Fav_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have not yet favourited the note
|
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have not yet favourited the note
|
||||||
{
|
{
|
||||||
/***** Mark as favourite in database *****/
|
/***** Mark as favourite in database *****/
|
||||||
DB_QueryINSERT ("can not favourite note",
|
DB_QueryINSERT ("can not favourite note",
|
||||||
|
@ -275,7 +279,8 @@ static void TL_Fav_FavNote (struct TL_Not_Note *Not)
|
||||||
for the author of the post *****/
|
for the author of the post *****/
|
||||||
OriginalPubCod = TL_Not_GetPubCodOfOriginalNote (Not->NotCod);
|
OriginalPubCod = TL_Not_GetPubCodOfOriginalNote (Not->NotCod);
|
||||||
if (OriginalPubCod > 0)
|
if (OriginalPubCod > 0)
|
||||||
TL_Ntf_CreateNotifToAuthor (Not->UsrCod,OriginalPubCod,Ntf_EVENT_TIMELINE_FAV);
|
TL_Ntf_CreateNotifToAuthor (Not->UsrCod,OriginalPubCod,
|
||||||
|
Ntf_EVENT_TIMELINE_FAV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -295,7 +300,7 @@ static void TL_Fav_UnfNote (struct TL_Not_Note *Not)
|
||||||
if (Not->NumFavs &&
|
if (Not->NumFavs &&
|
||||||
Gbl.Usrs.Me.Logged && !ItsMe) // I am not the author
|
Gbl.Usrs.Me.Logged && !ItsMe) // I am not the author
|
||||||
if (TL_Fav_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
if (TL_Fav_CheckIfNoteIsFavedByUsr (Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have favourited the note
|
Gbl.Usrs.Me.UsrDat.UsrCod)) // I have favourited the note
|
||||||
{
|
{
|
||||||
/***** Delete the mark as favourite from database *****/
|
/***** Delete the mark as favourite from database *****/
|
||||||
DB_QueryDELETE ("can not unfavourite note",
|
DB_QueryDELETE ("can not unfavourite note",
|
||||||
|
@ -398,7 +403,7 @@ void TL_Fav_PutFormToFavUnfComment (const struct TL_Com_Comment *Com,
|
||||||
{
|
{
|
||||||
/* Put icon to mark this comment as favourite */
|
/* Put icon to mark this comment as favourite */
|
||||||
IAmAFaverOfThisCom = TL_Fav_CheckIfCommIsFavedByUsr (Com->PubCod,
|
IAmAFaverOfThisCom = TL_Fav_CheckIfCommIsFavedByUsr (Com->PubCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
if (IAmAFaverOfThisCom) // I have favourited this comment
|
if (IAmAFaverOfThisCom) // I have favourited this comment
|
||||||
/* Put icon to unfav this publication and list of users */
|
/* Put icon to unfav this publication and list of users */
|
||||||
TL_Fav_PutFormToUnfComment (Com->PubCod);
|
TL_Fav_PutFormToUnfComment (Com->PubCod);
|
||||||
|
@ -444,7 +449,8 @@ static void TL_Fav_FavComment (struct TL_Com_Comment *Com)
|
||||||
|
|
||||||
/**** Create notification about favourite post
|
/**** Create notification about favourite post
|
||||||
for the author of the post ***/
|
for the author of the post ***/
|
||||||
TL_Ntf_CreateNotifToAuthor (Com->UsrCod,Com->PubCod,Ntf_EVENT_TIMELINE_FAV);
|
TL_Ntf_CreateNotifToAuthor (Com->UsrCod,Com->PubCod,
|
||||||
|
Ntf_EVENT_TIMELINE_FAV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -572,7 +578,7 @@ static void TL_Fav_ShowUsrsWhoHaveMarkedNoteAsFav (const struct TL_Not_Note *Not
|
||||||
Not->NotCod,
|
Not->NotCod,
|
||||||
Not->UsrCod,
|
Not->UsrCod,
|
||||||
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
||||||
TL_Usr_MAX_USRS_SHOWN);
|
TL_Usr_MAX_USRS_SHOWN);
|
||||||
else
|
else
|
||||||
NumFirstUsrs = 0;
|
NumFirstUsrs = 0;
|
||||||
|
|
||||||
|
@ -587,9 +593,10 @@ static void TL_Fav_ShowUsrsWhoHaveMarkedNoteAsFav (const struct TL_Not_Note *Not
|
||||||
TL_Usr_ShowSharersOrFavers (&mysql_res,Not->NumFavs,NumFirstUsrs);
|
TL_Usr_ShowSharersOrFavers (&mysql_res,Not->NumFavs,NumFirstUsrs);
|
||||||
if (NumFirstUsrs < Not->NumFavs) // Not all are shown
|
if (NumFirstUsrs < Not->NumFavs) // Not all are shown
|
||||||
/* Clickable ellipsis to show all users */
|
/* Clickable ellipsis to show all users */
|
||||||
TL_Usr_PutFormToSeeAllFaversSharers (ActAllFavTL_NotGbl,ActAllFavTL_NotUsr,
|
TL_Usr_PutFormToSeeAllFaversSharers (ActAllFavTL_NotGbl,
|
||||||
"NotCod=%ld",Not->NotCod,
|
ActAllFavTL_NotUsr,
|
||||||
HowManyUsrs);
|
"NotCod=%ld",Not->NotCod,
|
||||||
|
HowManyUsrs);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
|
@ -619,7 +626,7 @@ static void TL_Fav_ShowUsrsWhoHaveMarkedCommAsFav (const struct TL_Com_Comment *
|
||||||
Com->PubCod,
|
Com->PubCod,
|
||||||
Com->UsrCod,
|
Com->UsrCod,
|
||||||
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
||||||
TL_Usr_MAX_USRS_SHOWN);
|
TL_Usr_MAX_USRS_SHOWN);
|
||||||
else
|
else
|
||||||
NumFirstUsrs = 0;
|
NumFirstUsrs = 0;
|
||||||
|
|
||||||
|
@ -634,9 +641,10 @@ static void TL_Fav_ShowUsrsWhoHaveMarkedCommAsFav (const struct TL_Com_Comment *
|
||||||
TL_Usr_ShowSharersOrFavers (&mysql_res,Com->NumFavs,NumFirstUsrs);
|
TL_Usr_ShowSharersOrFavers (&mysql_res,Com->NumFavs,NumFirstUsrs);
|
||||||
if (NumFirstUsrs < Com->NumFavs)
|
if (NumFirstUsrs < Com->NumFavs)
|
||||||
/* Clickable ellipsis to show all users */
|
/* Clickable ellipsis to show all users */
|
||||||
TL_Usr_PutFormToSeeAllFaversSharers (ActAllFavTL_ComGbl,ActAllFavTL_ComUsr,
|
TL_Usr_PutFormToSeeAllFaversSharers (ActAllFavTL_ComGbl,
|
||||||
"PubCod=%ld",Com->PubCod,
|
ActAllFavTL_ComUsr,
|
||||||
HowManyUsrs);
|
"PubCod=%ld",Com->PubCod,
|
||||||
|
HowManyUsrs);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
|
|
|
@ -753,7 +753,7 @@ void TL_Not_StoreAndPublishNoteInternal (TL_Not_NoteType_t NoteType,long Cod,str
|
||||||
|
|
||||||
/***** Publish note in timeline *****/
|
/***** Publish note in timeline *****/
|
||||||
Pub->PublisherCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
Pub->PublisherCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||||
Pub->PubType = TL_PUB_ORIGINAL_NOTE;
|
Pub->PubType = TL_Pub_ORIGINAL_NOTE;
|
||||||
TL_Pub_PublishPubInTimeline (Pub);
|
TL_Pub_PublishPubInTimeline (Pub);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1156,10 +1156,10 @@ static void TL_Not_RemoveNoteMediaAndDBEntries (struct TL_Not_Note *Not)
|
||||||
{
|
{
|
||||||
/* Remove media associated to a post from database */
|
/* Remove media associated to a post from database */
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get media",
|
if (DB_QuerySELECT (&mysql_res,"can not get media",
|
||||||
"SELECT MedCod" // row[0]
|
"SELECT MedCod" // row[0]
|
||||||
" FROM tl_posts"
|
" FROM tl_posts"
|
||||||
" WHERE PstCod=%ld",
|
" WHERE PstCod=%ld",
|
||||||
Not->Cod) == 1) // Result should have a unique row
|
Not->Cod) == 1) // Result should have a unique row
|
||||||
{
|
{
|
||||||
/* Get media code */
|
/* Get media code */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -1300,7 +1300,7 @@ long TL_Not_GetPubCodOfOriginalNote (long NotCod)
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get code of publication",
|
if (DB_QuerySELECT (&mysql_res,"can not get code of publication",
|
||||||
"SELECT PubCod FROM tl_pubs"
|
"SELECT PubCod FROM tl_pubs"
|
||||||
" WHERE NotCod=%ld AND PubType=%u",
|
" WHERE NotCod=%ld AND PubType=%u",
|
||||||
NotCod,(unsigned) TL_PUB_ORIGINAL_NOTE) == 1) // Result should have a unique row
|
NotCod,(unsigned) TL_Pub_ORIGINAL_NOTE) == 1) // Result should have a unique row
|
||||||
{
|
{
|
||||||
/* Get code of publication (row[0]) */
|
/* Get code of publication (row[0]) */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
|
@ -26,19 +26,15 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#include <stdbool.h> // For boolean type
|
#include <stdbool.h> // For boolean type
|
||||||
// #include <stdlib.h> // For malloc and free
|
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_global.h"
|
#include "swad_global.h"
|
||||||
// #include "swad_profile.h"
|
|
||||||
#include "swad_timeline.h"
|
#include "swad_timeline.h"
|
||||||
// #include "swad_timeline_favourite.h"
|
|
||||||
#include "swad_timeline_note.h"
|
#include "swad_timeline_note.h"
|
||||||
#include "swad_timeline_notification.h"
|
#include "swad_timeline_notification.h"
|
||||||
#include "swad_timeline_post.h"
|
#include "swad_timeline_post.h"
|
||||||
#include "swad_timeline_publication.h"
|
#include "swad_timeline_publication.h"
|
||||||
// #include "swad_timeline_share.h"
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
|
@ -118,7 +114,7 @@ void TL_Ntf_GetNotifPublication (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||||
bool ContentCopied = false;
|
bool ContentCopied = false;
|
||||||
|
|
||||||
/***** Return nothing on error *****/
|
/***** Return nothing on error *****/
|
||||||
Pub.PubType = TL_PUB_UNKNOWN;
|
Pub.PubType = TL_Pub_UNKNOWN;
|
||||||
SummaryStr[0] = '\0'; // Return nothing on error
|
SummaryStr[0] = '\0'; // Return nothing on error
|
||||||
Content.Txt[0] = '\0';
|
Content.Txt[0] = '\0';
|
||||||
|
|
||||||
|
@ -139,10 +135,10 @@ void TL_Ntf_GetNotifPublication (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||||
/***** Get summary and content *****/
|
/***** Get summary and content *****/
|
||||||
switch (Pub.PubType)
|
switch (Pub.PubType)
|
||||||
{
|
{
|
||||||
case TL_PUB_UNKNOWN:
|
case TL_Pub_UNKNOWN:
|
||||||
break;
|
break;
|
||||||
case TL_PUB_ORIGINAL_NOTE:
|
case TL_Pub_ORIGINAL_NOTE:
|
||||||
case TL_PUB_SHARED_NOTE:
|
case TL_Pub_SHARED_NOTE:
|
||||||
/* Get data of note */
|
/* Get data of note */
|
||||||
Not.NotCod = Pub.NotCod;
|
Not.NotCod = Pub.NotCod;
|
||||||
TL_Not_GetDataOfNoteByCod (&Not);
|
TL_Not_GetDataOfNoteByCod (&Not);
|
||||||
|
|
|
@ -27,10 +27,7 @@
|
||||||
/********************************** Headers **********************************/
|
/********************************** Headers **********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
// #include "swad_form.h"
|
|
||||||
// #include "swad_media.h"
|
|
||||||
#include "swad_notification.h"
|
#include "swad_notification.h"
|
||||||
// #include "swad_user.h"
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
|
|
|
@ -26,12 +26,7 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************************** Headers **********************************/
|
/********************************** Headers **********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*
|
|
||||||
#include "swad_form.h"
|
|
||||||
#include "swad_media.h"
|
|
||||||
#include "swad_notification.h"
|
|
||||||
#include "swad_user.h"
|
|
||||||
*/
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -577,7 +577,7 @@ void TL_Pub_InsertNewPubsInTimeline (struct TL_Timeline *Timeline)
|
||||||
|
|
||||||
/* Write note */
|
/* Write note */
|
||||||
TL_Not_WriteNote (Timeline,&Not,
|
TL_Not_WriteNote (Timeline,&Not,
|
||||||
Pub->TopMessage,Pub->PublisherCod,
|
TL_Pub_GetTopMessage (Pub->PubType),Pub->PublisherCod,
|
||||||
TL_DONT_HIGHLIGHT,
|
TL_DONT_HIGHLIGHT,
|
||||||
TL_DONT_SHOW_ALONE);
|
TL_DONT_SHOW_ALONE);
|
||||||
}
|
}
|
||||||
|
@ -604,12 +604,29 @@ void TL_Pub_ShowOldPubsInTimeline (struct TL_Timeline *Timeline)
|
||||||
|
|
||||||
/* Write note */
|
/* Write note */
|
||||||
TL_Not_WriteNote (Timeline,&Not,
|
TL_Not_WriteNote (Timeline,&Not,
|
||||||
Pub->TopMessage,Pub->PublisherCod,
|
TL_Pub_GetTopMessage (Pub->PubType),Pub->PublisherCod,
|
||||||
TL_DONT_HIGHLIGHT,
|
TL_DONT_HIGHLIGHT,
|
||||||
TL_DONT_SHOW_ALONE);
|
TL_DONT_SHOW_ALONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************* Get a top message given the type of publication ***************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
TL_TopMessage_t TL_Pub_GetTopMessage (TL_Pub_PubType_t PubType)
|
||||||
|
{
|
||||||
|
static const TL_TopMessage_t TopMessages[TL_Pub_NUM_PUB_TYPES] =
|
||||||
|
{
|
||||||
|
[TL_Pub_UNKNOWN ] = TL_TOP_MESSAGE_NONE,
|
||||||
|
[TL_Pub_ORIGINAL_NOTE ] = TL_TOP_MESSAGE_NONE,
|
||||||
|
[TL_Pub_SHARED_NOTE ] = TL_TOP_MESSAGE_SHARED,
|
||||||
|
[TL_Pub_COMMENT_TO_NOTE] = TL_TOP_MESSAGE_COMMENTED,
|
||||||
|
};
|
||||||
|
|
||||||
|
return TopMessages[PubType];
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Put link to view new publications in timeline *************/
|
/***************** Put link to view new publications in timeline *************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -718,13 +735,6 @@ long TL_Pub_GetNotCodFromPubCod (long PubCod)
|
||||||
void TL_Pub_GetDataOfPublicationFromNextRow (MYSQL_RES *mysql_res,
|
void TL_Pub_GetDataOfPublicationFromNextRow (MYSQL_RES *mysql_res,
|
||||||
struct TL_Pub_Publication *Pub)
|
struct TL_Pub_Publication *Pub)
|
||||||
{
|
{
|
||||||
static const TL_TopMessage_t TopMessages[TL_NUM_PUB_TYPES] =
|
|
||||||
{
|
|
||||||
[TL_PUB_UNKNOWN ] = TL_TOP_MESSAGE_NONE,
|
|
||||||
[TL_PUB_ORIGINAL_NOTE ] = TL_TOP_MESSAGE_NONE,
|
|
||||||
[TL_PUB_SHARED_NOTE ] = TL_TOP_MESSAGE_SHARED,
|
|
||||||
[TL_Pub_COMMENT_TO_NOTE] = TL_TOP_MESSAGE_COMMENTED,
|
|
||||||
};
|
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
|
||||||
/***** Get next row from result *****/
|
/***** Get next row from result *****/
|
||||||
|
@ -747,7 +757,6 @@ void TL_Pub_GetDataOfPublicationFromNextRow (MYSQL_RES *mysql_res,
|
||||||
|
|
||||||
/***** Get type of publication (row[3]) *****/
|
/***** Get type of publication (row[3]) *****/
|
||||||
Pub->PubType = TL_Pub_GetPubTypeFromStr ((const char *) row[3]);
|
Pub->PubType = TL_Pub_GetPubTypeFromStr ((const char *) row[3]);
|
||||||
Pub->TopMessage = TopMessages[Pub->PubType];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -759,10 +768,10 @@ static TL_Pub_PubType_t TL_Pub_GetPubTypeFromStr (const char *Str)
|
||||||
unsigned UnsignedNum;
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
if (sscanf (Str,"%u",&UnsignedNum) == 1)
|
if (sscanf (Str,"%u",&UnsignedNum) == 1)
|
||||||
if (UnsignedNum < TL_NUM_PUB_TYPES)
|
if (UnsignedNum < TL_Pub_NUM_PUB_TYPES)
|
||||||
return (TL_Pub_PubType_t) UnsignedNum;
|
return (TL_Pub_PubType_t) UnsignedNum;
|
||||||
|
|
||||||
return TL_PUB_UNKNOWN;
|
return TL_Pub_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -45,14 +45,14 @@
|
||||||
/******************************** Public types *******************************/
|
/******************************** Public types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define TL_NUM_PUB_TYPES 4
|
#define TL_Pub_NUM_PUB_TYPES 4
|
||||||
// If the numbers assigned to each event type change,
|
// If the numbers assigned to each event type change,
|
||||||
// it is necessary to change old numbers to new ones in database table tl_notes
|
// it is necessary to change old numbers to new ones in database table tl_notes
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TL_PUB_UNKNOWN = 0,
|
TL_Pub_UNKNOWN = 0,
|
||||||
TL_PUB_ORIGINAL_NOTE = 1,
|
TL_Pub_ORIGINAL_NOTE = 1,
|
||||||
TL_PUB_SHARED_NOTE = 2,
|
TL_Pub_SHARED_NOTE = 2,
|
||||||
TL_Pub_COMMENT_TO_NOTE = 3,
|
TL_Pub_COMMENT_TO_NOTE = 3,
|
||||||
} TL_Pub_PubType_t;
|
} TL_Pub_PubType_t;
|
||||||
|
|
||||||
|
@ -60,9 +60,8 @@ struct TL_Pub_Publication
|
||||||
{
|
{
|
||||||
long PubCod;
|
long PubCod;
|
||||||
long NotCod;
|
long NotCod;
|
||||||
long PublisherCod; // Sharer or writer of the publication
|
long PublisherCod; // Sharer or writer of the publication
|
||||||
TL_Pub_PubType_t PubType;
|
TL_Pub_PubType_t PubType;
|
||||||
TL_TopMessage_t TopMessage; // Used to show feedback on the action made
|
|
||||||
struct TL_Pub_Publication *Next; // Used for chained list
|
struct TL_Pub_Publication *Next; // Used for chained list
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,6 +75,8 @@ void TL_Pub_FreeListPubs (struct TL_Timeline *Timeline);
|
||||||
void TL_Pub_InsertNewPubsInTimeline (struct TL_Timeline *Timeline);
|
void TL_Pub_InsertNewPubsInTimeline (struct TL_Timeline *Timeline);
|
||||||
void TL_Pub_ShowOldPubsInTimeline (struct TL_Timeline *Timeline);
|
void TL_Pub_ShowOldPubsInTimeline (struct TL_Timeline *Timeline);
|
||||||
|
|
||||||
|
TL_TopMessage_t TL_Pub_GetTopMessage (TL_Pub_PubType_t PubType);
|
||||||
|
|
||||||
void TL_Pub_PutLinkToViewNewPublications (void);
|
void TL_Pub_PutLinkToViewNewPublications (void);
|
||||||
void TL_Pub_PutLinkToViewOldPublications (void);
|
void TL_Pub_PutLinkToViewOldPublications (void);
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,8 @@
|
||||||
/************************* Private constants and types ***********************/
|
/************************* Private constants and types ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define TL_ICON_SHARE "share-alt.svg"
|
#define TL_Sha_ICON_SHARE "share-alt.svg"
|
||||||
#define TL_ICON_SHARED "share-alt-green.svg"
|
#define TL_Sha_ICON_SHARED "share-alt-green.svg"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** External global variables from others modules ****************/
|
/************** External global variables from others modules ****************/
|
||||||
|
@ -82,13 +82,13 @@ static void TL_Sha_PutDisabledIconShare (unsigned NumShared)
|
||||||
/***** Disabled icon to share *****/
|
/***** Disabled icon to share *****/
|
||||||
if (NumShared)
|
if (NumShared)
|
||||||
{
|
{
|
||||||
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
|
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_Sha_ICON_SHARE,
|
||||||
Str_BuildStringLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS,
|
Str_BuildStringLong (Txt_TIMELINE_NOTE_Shared_by_X_USERS,
|
||||||
(long) NumShared));
|
(long) NumShared));
|
||||||
Str_FreeString ();
|
Str_FreeString ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_ICON_SHARE,
|
Ico_PutDivIcon ("TL_ICO_DISABLED",TL_Sha_ICON_SHARE,
|
||||||
Txt_TIMELINE_NOTE_Not_shared_by_anyone);
|
Txt_TIMELINE_NOTE_Not_shared_by_anyone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,9 +101,10 @@ static void TL_Sha_PutFormToShaNote (long ParamCod)
|
||||||
extern const char *Txt_Share;
|
extern const char *Txt_Share;
|
||||||
|
|
||||||
/***** Form and icon to mark note as favourite *****/
|
/***** Form and icon to mark note as favourite *****/
|
||||||
TL_Usr_FormFavSha (ActShaTL_NotGbl,ActShaTL_NotUsr,
|
TL_Usr_FormFavSha (ActShaTL_NotGbl,
|
||||||
"NotCod=%ld",ParamCod,
|
ActShaTL_NotUsr,
|
||||||
TL_ICON_SHARE,Txt_Share);
|
"NotCod=%ld",ParamCod,
|
||||||
|
TL_Sha_ICON_SHARE,Txt_Share);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TL_Sha_PutFormToUnsNote (long ParamCod)
|
static void TL_Sha_PutFormToUnsNote (long ParamCod)
|
||||||
|
@ -111,9 +112,10 @@ static void TL_Sha_PutFormToUnsNote (long ParamCod)
|
||||||
extern const char *Txt_TIMELINE_NOTE_Shared;
|
extern const char *Txt_TIMELINE_NOTE_Shared;
|
||||||
|
|
||||||
/***** Form and icon to mark note as favourite *****/
|
/***** Form and icon to mark note as favourite *****/
|
||||||
TL_Usr_FormFavSha (ActUnsTL_NotGbl,ActUnsTL_NotUsr,
|
TL_Usr_FormFavSha (ActUnsTL_NotGbl,
|
||||||
"NotCod=%ld",ParamCod,
|
ActUnsTL_NotUsr,
|
||||||
TL_ICON_SHARED,Txt_TIMELINE_NOTE_Shared);
|
"NotCod=%ld",ParamCod,
|
||||||
|
TL_Sha_ICON_SHARED,Txt_TIMELINE_NOTE_Shared);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -181,7 +183,7 @@ static void TL_Sha_ShaNote (struct TL_Not_Note *Not)
|
||||||
/***** Share (publish note in timeline) *****/
|
/***** Share (publish note in timeline) *****/
|
||||||
Pub.NotCod = Not->NotCod;
|
Pub.NotCod = Not->NotCod;
|
||||||
Pub.PublisherCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
Pub.PublisherCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||||
Pub.PubType = TL_PUB_SHARED_NOTE;
|
Pub.PubType = TL_Pub_SHARED_NOTE;
|
||||||
TL_Pub_PublishPubInTimeline (&Pub); // Set Pub.PubCod
|
TL_Pub_PublishPubInTimeline (&Pub); // Set Pub.PubCod
|
||||||
|
|
||||||
/* Update number of times this note is shared */
|
/* Update number of times this note is shared */
|
||||||
|
@ -191,7 +193,8 @@ static void TL_Sha_ShaNote (struct TL_Not_Note *Not)
|
||||||
for the author of the post ***/
|
for the author of the post ***/
|
||||||
OriginalPubCod = TL_Not_GetPubCodOfOriginalNote (Not->NotCod);
|
OriginalPubCod = TL_Not_GetPubCodOfOriginalNote (Not->NotCod);
|
||||||
if (OriginalPubCod > 0)
|
if (OriginalPubCod > 0)
|
||||||
TL_Ntf_CreateNotifToAuthor (Not->UsrCod,OriginalPubCod,Ntf_EVENT_TIMELINE_SHARE);
|
TL_Ntf_CreateNotifToAuthor (Not->UsrCod,OriginalPubCod,
|
||||||
|
Ntf_EVENT_TIMELINE_SHARE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,7 +249,7 @@ static void TL_Sha_UnsNote (struct TL_Not_Note *Not)
|
||||||
" AND PubType=%u",
|
" AND PubType=%u",
|
||||||
Not->NotCod,
|
Not->NotCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
(unsigned) TL_PUB_SHARED_NOTE);
|
(unsigned) TL_Pub_SHARED_NOTE);
|
||||||
|
|
||||||
/***** Update number of times this note is shared *****/
|
/***** Update number of times this note is shared *****/
|
||||||
TL_Sha_UpdateNumTimesANoteHasBeenShared (Not);
|
TL_Sha_UpdateNumTimesANoteHasBeenShared (Not);
|
||||||
|
@ -301,7 +304,7 @@ static bool TL_Sha_CheckIfNoteIsSharedByUsr (long NotCod,long UsrCod)
|
||||||
" AND PubType=%u",
|
" AND PubType=%u",
|
||||||
NotCod,
|
NotCod,
|
||||||
UsrCod,
|
UsrCod,
|
||||||
(unsigned) TL_PUB_SHARED_NOTE) != 0);
|
(unsigned) TL_Pub_SHARED_NOTE) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -320,7 +323,7 @@ void TL_Sha_UpdateNumTimesANoteHasBeenShared (struct TL_Not_Note *Not)
|
||||||
" AND PubType=%u",
|
" AND PubType=%u",
|
||||||
Not->NotCod,
|
Not->NotCod,
|
||||||
Not->UsrCod, // The author
|
Not->UsrCod, // The author
|
||||||
(unsigned) TL_PUB_SHARED_NOTE);
|
(unsigned) TL_Pub_SHARED_NOTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -344,7 +347,7 @@ static void TL_Sha_ShowUsrsWhoHaveSharedNote (const struct TL_Not_Note *Not,
|
||||||
" ORDER BY PubCod LIMIT %u",
|
" ORDER BY PubCod LIMIT %u",
|
||||||
Not->NotCod,
|
Not->NotCod,
|
||||||
Not->UsrCod,
|
Not->UsrCod,
|
||||||
(unsigned) TL_PUB_SHARED_NOTE,
|
(unsigned) TL_Pub_SHARED_NOTE,
|
||||||
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
HowManyUsrs == TL_Usr_SHOW_FEW_USRS ? TL_Usr_DEF_USRS_SHOWN :
|
||||||
TL_Usr_MAX_USRS_SHOWN);
|
TL_Usr_MAX_USRS_SHOWN);
|
||||||
else
|
else
|
||||||
|
@ -361,9 +364,10 @@ static void TL_Sha_ShowUsrsWhoHaveSharedNote (const struct TL_Not_Note *Not,
|
||||||
TL_Usr_ShowSharersOrFavers (&mysql_res,Not->NumShared,NumFirstUsrs);
|
TL_Usr_ShowSharersOrFavers (&mysql_res,Not->NumShared,NumFirstUsrs);
|
||||||
if (NumFirstUsrs < Not->NumShared)
|
if (NumFirstUsrs < Not->NumShared)
|
||||||
/* Clickable ellipsis to show all users */
|
/* Clickable ellipsis to show all users */
|
||||||
TL_Usr_PutFormToSeeAllFaversSharers (ActAllShaTL_NotGbl,ActAllShaTL_NotUsr,
|
TL_Usr_PutFormToSeeAllFaversSharers (ActAllShaTL_NotGbl,
|
||||||
"NotCod=%ld",Not->NotCod,
|
ActAllShaTL_NotUsr,
|
||||||
HowManyUsrs);
|
"NotCod=%ld",Not->NotCod,
|
||||||
|
HowManyUsrs);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
|
|
|
@ -229,7 +229,8 @@ void TL_Usr_ShowSharersOrFavers (MYSQL_RES **mysql_res,
|
||||||
/********************* Form to show all favers/sharers ***********************/
|
/********************* Form to show all favers/sharers ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void TL_Usr_PutFormToSeeAllFaversSharers (Act_Action_t ActionGbl,Act_Action_t ActionUsr,
|
void TL_Usr_PutFormToSeeAllFaversSharers (Act_Action_t ActionGbl,
|
||||||
|
Act_Action_t ActionUsr,
|
||||||
const char *ParamFormat,long ParamCod,
|
const char *ParamFormat,long ParamCod,
|
||||||
TL_Usr_HowManyUsrs_t HowManyUsrs)
|
TL_Usr_HowManyUsrs_t HowManyUsrs)
|
||||||
{
|
{
|
||||||
|
@ -239,9 +240,10 @@ void TL_Usr_PutFormToSeeAllFaversSharers (Act_Action_t ActionGbl,Act_Action_t Ac
|
||||||
{
|
{
|
||||||
case TL_Usr_SHOW_FEW_USRS:
|
case TL_Usr_SHOW_FEW_USRS:
|
||||||
/***** Form and icon to mark note as favourite *****/
|
/***** Form and icon to mark note as favourite *****/
|
||||||
TL_Usr_FormFavSha (ActionGbl,ActionUsr,
|
TL_Usr_FormFavSha (ActionGbl,
|
||||||
ParamFormat,ParamCod,
|
ActionUsr,
|
||||||
TL_Usr_ICON_ELLIPSIS,Txt_View_all_USERS);
|
ParamFormat,ParamCod,
|
||||||
|
TL_Usr_ICON_ELLIPSIS,Txt_View_all_USERS);
|
||||||
break;
|
break;
|
||||||
case TL_Usr_SHOW_ALL_USRS:
|
case TL_Usr_SHOW_ALL_USRS:
|
||||||
Ico_PutIconOff (TL_Usr_ICON_ELLIPSIS,Txt_View_all_USERS);
|
Ico_PutIconOff (TL_Usr_ICON_ELLIPSIS,Txt_View_all_USERS);
|
||||||
|
@ -253,7 +255,8 @@ void TL_Usr_PutFormToSeeAllFaversSharers (Act_Action_t ActionGbl,Act_Action_t Ac
|
||||||
/******* Form to fav/unfav or share/unshare in global or user timeline *******/
|
/******* Form to fav/unfav or share/unshare in global or user timeline *******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void TL_Usr_FormFavSha (Act_Action_t ActionGbl,Act_Action_t ActionUsr,
|
void TL_Usr_FormFavSha (Act_Action_t ActionGbl,
|
||||||
|
Act_Action_t ActionUsr,
|
||||||
const char *ParamFormat,long ParamCod,
|
const char *ParamFormat,long ParamCod,
|
||||||
const char *Icon,const char *Title)
|
const char *Icon,const char *Title)
|
||||||
{
|
{
|
||||||
|
|
|
@ -66,10 +66,12 @@ void TL_Usr_RemoveUsrContent (long UsrCod);
|
||||||
void TL_Usr_ShowNumSharersOrFavers (unsigned NumUsrs);
|
void TL_Usr_ShowNumSharersOrFavers (unsigned NumUsrs);
|
||||||
void TL_Usr_ShowSharersOrFavers (MYSQL_RES **mysql_res,
|
void TL_Usr_ShowSharersOrFavers (MYSQL_RES **mysql_res,
|
||||||
unsigned NumUsrs,unsigned NumFirstUsrs);
|
unsigned NumUsrs,unsigned NumFirstUsrs);
|
||||||
void TL_Usr_PutFormToSeeAllFaversSharers (Act_Action_t ActionGbl,Act_Action_t ActionUsr,
|
void TL_Usr_PutFormToSeeAllFaversSharers (Act_Action_t ActionGbl,
|
||||||
|
Act_Action_t ActionUsr,
|
||||||
const char *ParamFormat,long ParamCod,
|
const char *ParamFormat,long ParamCod,
|
||||||
TL_Usr_HowManyUsrs_t HowManyUsrs);
|
TL_Usr_HowManyUsrs_t HowManyUsrs);
|
||||||
void TL_Usr_FormFavSha (Act_Action_t ActionGbl,Act_Action_t ActionUsr,
|
void TL_Usr_FormFavSha (Act_Action_t ActionGbl,
|
||||||
|
Act_Action_t ActionUsr,
|
||||||
const char *ParamFormat,long ParamCod,
|
const char *ParamFormat,long ParamCod,
|
||||||
const char *Icon,const char *Title);
|
const char *Icon,const char *Title);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue