mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-11 11:15:27 +02:00
Version 20.33.7: Feb 22, 2021 Code refactoring related to writing a timeline note.
This commit is contained in:
parent
e84b341ebf
commit
36d878fa90
|
@ -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.33.6 (2021-02-22)"
|
#define Log_PLATFORM_VERSION "SWAD 20.33.7 (2021-02-22)"
|
||||||
#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.33.7: Feb 22, 2021 Code refactoring related to writing a timeline note. (304923 lines)
|
||||||
Version 20.33.6: Feb 22, 2021 Code refactoring related to writing a timeline note. (304898 lines)
|
Version 20.33.6: Feb 22, 2021 Code refactoring related to writing a timeline note. (304898 lines)
|
||||||
Version 20.33.5: Feb 22, 2021 Code refactoring related to writing a timeline note. (304889 lines)
|
Version 20.33.5: Feb 22, 2021 Code refactoring related to writing a timeline note. (304889 lines)
|
||||||
Version 20.33.4: Feb 22, 2021 Some actions renamed. (304883 lines)
|
Version 20.33.4: Feb 22, 2021 Some actions renamed. (304883 lines)
|
||||||
|
|
|
@ -66,18 +66,20 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static unsigned long TL_Com_GetNumCommentsInNote (long NotCod);
|
||||||
|
|
||||||
static unsigned TL_Com_WriteHiddenComments (struct TL_Timeline *Timeline,
|
static unsigned TL_Com_WriteHiddenComments (struct TL_Timeline *Timeline,
|
||||||
long NotCod,
|
long NotCod,
|
||||||
char IdComments[Frm_MAX_BYTES_ID + 1],
|
char IdComments[Frm_MAX_BYTES_ID + 1],
|
||||||
unsigned NumInitialCommentsToGet);
|
unsigned NumInitialCommentsToGet);
|
||||||
static void TL_Com_WriteOneCommentInList (struct TL_Timeline *Timeline,
|
static void TL_Com_WriteOneCommentInList (const struct TL_Timeline *Timeline,
|
||||||
MYSQL_RES *mysql_res);
|
MYSQL_RES *mysql_res);
|
||||||
static void TL_Com_LinkToShowOnlyLatestComments (const char IdComments[Frm_MAX_BYTES_ID + 1]);
|
static void TL_Com_LinkToShowOnlyLatestComments (const char IdComments[Frm_MAX_BYTES_ID + 1]);
|
||||||
static void TL_Com_LinkToShowPreviousComments (const char IdComments[Frm_MAX_BYTES_ID + 1],
|
static void TL_Com_LinkToShowPreviousComments (const char IdComments[Frm_MAX_BYTES_ID + 1],
|
||||||
unsigned NumInitialComments);
|
unsigned NumInitialComments);
|
||||||
static void TL_Com_PutIconToToggleComments (const char *UniqueId,
|
static void TL_Com_PutIconToToggleComments (const char *UniqueId,
|
||||||
const char *Icon,const char *Text);
|
const char *Icon,const char *Text);
|
||||||
static void TL_Com_WriteComment (struct TL_Timeline *Timeline,
|
static void TL_Com_WriteComment (const struct TL_Timeline *Timeline,
|
||||||
struct TL_Com_Comment *Com,
|
struct TL_Com_Comment *Com,
|
||||||
TL_ShowAlone_t ShowCommentAlone); // Comment is shown alone, not in a list
|
TL_ShowAlone_t ShowCommentAlone); // Comment is shown alone, not in a list
|
||||||
static void TL_Com_WriteAuthorComment (struct UsrData *UsrDat);
|
static void TL_Com_WriteAuthorComment (struct UsrData *UsrDat);
|
||||||
|
@ -173,33 +175,28 @@ void TL_Com_PutHiddenFormToWriteNewComment (const struct TL_Timeline *Timeline,
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************* Get number of comments in a note **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
unsigned long TL_Com_GetNumCommentsInNote (long NotCod)
|
|
||||||
{
|
|
||||||
return DB_QueryCOUNT ("can not get number of comments in a note",
|
|
||||||
"SELECT COUNT(*) FROM tl_pubs"
|
|
||||||
" WHERE NotCod=%ld AND PubType=%u",
|
|
||||||
NotCod,(unsigned) TL_Pub_COMMENT_TO_NOTE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Write comments in a note ****************************/
|
/*********************** Write comments in a note ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void TL_Com_WriteCommentsInNote (struct TL_Timeline *Timeline,
|
void TL_Com_WriteCommentsInNote (const struct TL_Timeline *Timeline,
|
||||||
const struct TL_Not_Note *Not,
|
const struct TL_Not_Note *Not)
|
||||||
unsigned NumComments)
|
|
||||||
{
|
{
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
|
unsigned NumComments;
|
||||||
unsigned NumInitialComments;
|
unsigned NumInitialComments;
|
||||||
unsigned NumFinalCommentsToGet;
|
unsigned NumFinalCommentsToGet;
|
||||||
unsigned NumFinalCommentsGot;
|
unsigned NumFinalCommentsGot;
|
||||||
unsigned NumCom;
|
unsigned NumCom;
|
||||||
char IdComments[Frm_MAX_BYTES_ID + 1];
|
char IdComments[Frm_MAX_BYTES_ID + 1];
|
||||||
|
|
||||||
|
/***** Get number of comments in note *****/
|
||||||
|
NumComments = TL_Com_GetNumCommentsInNote (Not->NotCod);
|
||||||
|
|
||||||
|
/***** Trivial check: if no comments ==> nothing to do *****/
|
||||||
|
if (!NumComments)
|
||||||
|
return;
|
||||||
|
|
||||||
/***** Compute how many initial comments will be hidden
|
/***** Compute how many initial comments will be hidden
|
||||||
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
|
||||||
|
@ -311,6 +308,18 @@ void TL_Com_WriteCommentsInNote (struct TL_Timeline *Timeline,
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************* Get number of comments in a note **********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static unsigned long TL_Com_GetNumCommentsInNote (long NotCod)
|
||||||
|
{
|
||||||
|
return DB_QueryCOUNT ("can not get number of comments in a note",
|
||||||
|
"SELECT COUNT(*) FROM tl_pubs"
|
||||||
|
" WHERE NotCod=%ld AND PubType=%u",
|
||||||
|
NotCod,(unsigned) TL_Pub_COMMENT_TO_NOTE);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Write hidden comments via AJAX ***********************/
|
/********************** Write hidden comments via AJAX ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -404,7 +413,7 @@ static unsigned TL_Com_WriteHiddenComments (struct TL_Timeline *Timeline,
|
||||||
/************************* Write a comment in list ***************************/
|
/************************* Write a comment in list ***************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void TL_Com_WriteOneCommentInList (struct TL_Timeline *Timeline,
|
static void TL_Com_WriteOneCommentInList (const struct TL_Timeline *Timeline,
|
||||||
MYSQL_RES *mysql_res)
|
MYSQL_RES *mysql_res)
|
||||||
{
|
{
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
@ -487,7 +496,7 @@ static void TL_Com_PutIconToToggleComments (const char *UniqueId,
|
||||||
/******************************** Write comment ******************************/
|
/******************************** Write comment ******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void TL_Com_WriteComment (struct TL_Timeline *Timeline,
|
static void TL_Com_WriteComment (const struct TL_Timeline *Timeline,
|
||||||
struct TL_Com_Comment *Com,
|
struct TL_Com_Comment *Com,
|
||||||
TL_ShowAlone_t ShowCommentAlone) // Comment is shown alone, not in a list
|
TL_ShowAlone_t ShowCommentAlone) // Comment is shown alone, not in a list
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,11 +58,9 @@ void TL_Com_PutIconCommentDisabled (void);
|
||||||
void TL_Com_PutHiddenFormToWriteNewComment (const struct TL_Timeline *Timeline,
|
void TL_Com_PutHiddenFormToWriteNewComment (const struct TL_Timeline *Timeline,
|
||||||
long NotCod,
|
long NotCod,
|
||||||
const char IdNewComment[Frm_MAX_BYTES_ID + 1]);
|
const char IdNewComment[Frm_MAX_BYTES_ID + 1]);
|
||||||
unsigned long TL_Com_GetNumCommentsInNote (long NotCod);
|
|
||||||
|
|
||||||
void TL_Com_WriteCommentsInNote (struct TL_Timeline *Timeline,
|
void TL_Com_WriteCommentsInNote (const struct TL_Timeline *Timeline,
|
||||||
const struct TL_Not_Note *Not,
|
const struct TL_Not_Note *Not);
|
||||||
unsigned NumComments);
|
|
||||||
|
|
||||||
void TL_Com_ShowHiddenCommentsUsr (void);
|
void TL_Com_ShowHiddenCommentsUsr (void);
|
||||||
void TL_Com_ShowHiddenCommentsGbl (void);
|
void TL_Com_ShowHiddenCommentsGbl (void);
|
||||||
|
|
|
@ -83,6 +83,13 @@ static void TL_Not_WriteLocationInHierarchy (const struct TL_Not_Note *Not,
|
||||||
static void TL_Not_PutFormGoToAction (const struct TL_Not_Note *Not,
|
static void TL_Not_PutFormGoToAction (const struct TL_Not_Note *Not,
|
||||||
const struct For_Forums *Forums);
|
const struct For_Forums *Forums);
|
||||||
|
|
||||||
|
static void TL_Not_WriteFootAndComments (const struct TL_Timeline *Timeline,
|
||||||
|
const struct TL_Not_Note *Not,
|
||||||
|
long AuthorUsrCod);
|
||||||
|
static void TL_Not_WriteFoot (const struct TL_Timeline *Timeline,
|
||||||
|
const struct TL_Not_Note *Not,
|
||||||
|
long AuthorUsrCod);
|
||||||
|
|
||||||
static void TL_Not_PutFormToRemoveNote (const struct TL_Timeline *Timeline,
|
static void TL_Not_PutFormToRemoveNote (const struct TL_Timeline *Timeline,
|
||||||
long NotCod);
|
long NotCod);
|
||||||
|
|
||||||
|
@ -196,12 +203,7 @@ void TL_Not_WriteNote (struct TL_Timeline *Timeline,
|
||||||
TL_ShowAlone_t ShowNoteAlone) // Note is shown alone, not in a list
|
TL_ShowAlone_t ShowNoteAlone) // Note is shown alone, not in a list
|
||||||
{
|
{
|
||||||
struct UsrData AuthorDat;
|
struct UsrData AuthorDat;
|
||||||
bool IAmTheAuthor;
|
|
||||||
unsigned NumComments;
|
|
||||||
char IdNewComment[Frm_MAX_BYTES_ID + 1];
|
char IdNewComment[Frm_MAX_BYTES_ID + 1];
|
||||||
static unsigned NumDiv = 0; // Used to create unique div id for fav and shared
|
|
||||||
|
|
||||||
NumDiv++;
|
|
||||||
|
|
||||||
/***** Begin box ****/
|
/***** Begin box ****/
|
||||||
if (ShowNoteAlone == TL_SHOW_ALONE)
|
if (ShowNoteAlone == TL_SHOW_ALONE)
|
||||||
|
@ -237,7 +239,6 @@ void TL_Not_WriteNote (struct TL_Timeline *Timeline,
|
||||||
/***** Get author data *****/
|
/***** Get author data *****/
|
||||||
AuthorDat.UsrCod = Not->UsrCod;
|
AuthorDat.UsrCod = Not->UsrCod;
|
||||||
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&AuthorDat,Usr_DONT_GET_PREFS);
|
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&AuthorDat,Usr_DONT_GET_PREFS);
|
||||||
IAmTheAuthor = Usr_ItsMe (AuthorDat.UsrCod);
|
|
||||||
|
|
||||||
/***** Left: write author's photo *****/
|
/***** Left: write author's photo *****/
|
||||||
TL_Not_ShowAuthorPhoto (&AuthorDat);
|
TL_Not_ShowAuthorPhoto (&AuthorDat);
|
||||||
|
@ -265,9 +266,6 @@ void TL_Not_WriteNote (struct TL_Timeline *Timeline,
|
||||||
/* Create unique id for new comment */
|
/* Create unique id for new comment */
|
||||||
Frm_SetUniqueId (IdNewComment);
|
Frm_SetUniqueId (IdNewComment);
|
||||||
|
|
||||||
/* Get number of comments in this note */
|
|
||||||
NumComments = TL_Com_GetNumCommentsInNote (Not->NotCod);
|
|
||||||
|
|
||||||
/* Put icon to add a comment */
|
/* Put icon to add a comment */
|
||||||
HTM_DIV_Begin ("class=\"TL_BOTTOM_LEFT\"");
|
HTM_DIV_Begin ("class=\"TL_BOTTOM_LEFT\"");
|
||||||
if (Not->Unavailable) // Unavailable notes can not be commented
|
if (Not->Unavailable) // Unavailable notes can not be commented
|
||||||
|
@ -276,39 +274,8 @@ void TL_Not_WriteNote (struct TL_Timeline *Timeline,
|
||||||
TL_Com_PutIconToToggleComment (IdNewComment);
|
TL_Com_PutIconToToggleComment (IdNewComment);
|
||||||
HTM_DIV_End ();
|
HTM_DIV_End ();
|
||||||
|
|
||||||
/* Start container for buttons and comments */
|
/* Write foot and comments */
|
||||||
HTM_DIV_Begin ("class=\"TL_BOTTOM_RIGHT TL_RIGHT_WIDTH\"");
|
TL_Not_WriteFootAndComments (Timeline,Not,AuthorDat.UsrCod);
|
||||||
|
|
||||||
/* Start foot container */
|
|
||||||
HTM_DIV_Begin ("class=\"TL_FOOT TL_RIGHT_WIDTH\"");
|
|
||||||
|
|
||||||
/* Foot column 1: Fav zone */
|
|
||||||
HTM_DIV_Begin ("id=\"fav_not_%s_%u\" class=\"TL_FAV_NOT TL_FAV_NOT_WIDTH\"",
|
|
||||||
Gbl.UniqueNameEncrypted,NumDiv);
|
|
||||||
TL_Fav_PutFormToFavUnfNote (Not,TL_Usr_SHOW_FEW_USRS);
|
|
||||||
HTM_DIV_End ();
|
|
||||||
|
|
||||||
/* Foot column 2: Share zone */
|
|
||||||
HTM_DIV_Begin ("id=\"sha_not_%s_%u\" class=\"TL_SHA_NOT TL_SHA_NOT_WIDTH\"",
|
|
||||||
Gbl.UniqueNameEncrypted,NumDiv);
|
|
||||||
TL_Sha_PutFormToShaUnsNote (Not,TL_Usr_SHOW_FEW_USRS);
|
|
||||||
HTM_DIV_End ();
|
|
||||||
|
|
||||||
/* Foot column 3: Icon to remove this note */
|
|
||||||
HTM_DIV_Begin ("class=\"TL_REM\"");
|
|
||||||
if (IAmTheAuthor)
|
|
||||||
TL_Not_PutFormToRemoveNote (Timeline,Not->NotCod);
|
|
||||||
HTM_DIV_End ();
|
|
||||||
|
|
||||||
/* End foot container */
|
|
||||||
HTM_DIV_End ();
|
|
||||||
|
|
||||||
/* Comments */
|
|
||||||
if (NumComments)
|
|
||||||
TL_Com_WriteCommentsInNote (Timeline,Not,NumComments);
|
|
||||||
|
|
||||||
/* End container for buttons and comments */
|
|
||||||
HTM_DIV_End ();
|
|
||||||
|
|
||||||
/* Put hidden form to write a new comment */
|
/* Put hidden form to write a new comment */
|
||||||
TL_Com_PutHiddenFormToWriteNewComment (Timeline,Not->NotCod,IdNewComment);
|
TL_Com_PutHiddenFormToWriteNewComment (Timeline,Not->NotCod,IdNewComment);
|
||||||
|
@ -754,6 +721,80 @@ void TL_Not_GetNoteSummary (const struct TL_Not_Note *Not,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Write foot and comments of a note **********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void TL_Not_WriteFootAndComments (const struct TL_Timeline *Timeline,
|
||||||
|
const struct TL_Not_Note *Not,
|
||||||
|
long AuthorUsrCod)
|
||||||
|
{
|
||||||
|
/***** Begin container for foot and comments *****/
|
||||||
|
HTM_DIV_Begin ("class=\"TL_BOTTOM_RIGHT TL_RIGHT_WIDTH\"");
|
||||||
|
|
||||||
|
/***** Write foot of a note *****/
|
||||||
|
TL_Not_WriteFoot (Timeline,Not,AuthorUsrCod);
|
||||||
|
|
||||||
|
/***** Comments *****/
|
||||||
|
TL_Com_WriteCommentsInNote (Timeline,Not);
|
||||||
|
|
||||||
|
/***** End container for buttons and comments *****/
|
||||||
|
HTM_DIV_End ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*************************** Write foot of a note ****************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void TL_Not_WriteFoot (const struct TL_Timeline *Timeline,
|
||||||
|
const struct TL_Not_Note *Not,
|
||||||
|
long AuthorUsrCod)
|
||||||
|
{
|
||||||
|
static unsigned NumDiv = 0; // Used to create unique div id for fav and shared
|
||||||
|
|
||||||
|
NumDiv++;
|
||||||
|
|
||||||
|
/***** Begin foot container *****/
|
||||||
|
HTM_DIV_Begin ("class=\"TL_FOOT TL_RIGHT_WIDTH\"");
|
||||||
|
|
||||||
|
/***** Foot column 1: Fav zone *****/
|
||||||
|
HTM_DIV_Begin ("id=\"fav_not_%s_%u\" class=\"TL_FAV_NOT TL_FAV_NOT_WIDTH\"",
|
||||||
|
Gbl.UniqueNameEncrypted,NumDiv);
|
||||||
|
TL_Fav_PutFormToFavUnfNote (Not,TL_Usr_SHOW_FEW_USRS);
|
||||||
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
/***** Foot column 2: Share zone *****/
|
||||||
|
HTM_DIV_Begin ("id=\"sha_not_%s_%u\" class=\"TL_SHA_NOT TL_SHA_NOT_WIDTH\"",
|
||||||
|
Gbl.UniqueNameEncrypted,NumDiv);
|
||||||
|
TL_Sha_PutFormToShaUnsNote (Not,TL_Usr_SHOW_FEW_USRS);
|
||||||
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
/***** Foot column 3: Icon to remove this note *****/
|
||||||
|
HTM_DIV_Begin ("class=\"TL_REM\"");
|
||||||
|
if (Usr_ItsMe (AuthorUsrCod)) // I am the author
|
||||||
|
TL_Not_PutFormToRemoveNote (Timeline,Not->NotCod);
|
||||||
|
HTM_DIV_End ();
|
||||||
|
|
||||||
|
/***** End foot container *****/
|
||||||
|
HTM_DIV_End ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**************************** Form to remove note ****************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void TL_Not_PutFormToRemoveNote (const struct TL_Timeline *Timeline,
|
||||||
|
long NotCod)
|
||||||
|
{
|
||||||
|
extern const char *Txt_Remove;
|
||||||
|
|
||||||
|
/***** Form to remove publication *****/
|
||||||
|
TL_Frm_FormStart (Timeline,TL_Frm_REQ_REM_NOTE);
|
||||||
|
TL_Not_PutHiddenParamNotCod (NotCod);
|
||||||
|
Ico_PutIconLink ("trash.svg",Txt_Remove);
|
||||||
|
Frm_EndForm ();
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Store and publish a note into database ********************/
|
/***************** Store and publish a note into database ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -952,22 +993,6 @@ void TL_Not_MarkNotesChildrenOfFolderAsUnavailable (const char *Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************************ Form to remove publication *************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void TL_Not_PutFormToRemoveNote (const struct TL_Timeline *Timeline,
|
|
||||||
long NotCod)
|
|
||||||
{
|
|
||||||
extern const char *Txt_Remove;
|
|
||||||
|
|
||||||
/***** Form to remove publication *****/
|
|
||||||
TL_Frm_FormStart (Timeline,TL_Frm_REQ_REM_NOTE);
|
|
||||||
TL_Not_PutHiddenParamNotCod (NotCod);
|
|
||||||
Ico_PutIconLink ("trash.svg",Txt_Remove);
|
|
||||||
Frm_EndForm ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************** Put parameter with the code of a note ********************/
|
/****************** Put parameter with the code of a note ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user