");
for (NumAnn = 0;
NumAnn < NumAnnouncements;
NumAnn++)
{
row = mysql_fetch_row (mysql_res);
/* Get announcement code (row[0]) */
if (sscanf (row[0],"%ld",&AnnCod) != 1)
Lay_ShowErrorAndExit ("Wrong code of announcement.");
/* Get the content (row[1]) */
Str_Copy (Subject,row[1],
Cns_MAX_BYTES_SUBJECT);
/* Get the content (row[2]) and insert links */
Str_Copy (Content,row[2],
Cns_MAX_BYTES_TEXT);
Str_InsertLinks (Content,Cns_MAX_BYTES_TEXT,50);
/* Show the announcement */
Ann_DrawAnAnnouncement (AnnCod,Ann_ACTIVE_ANNOUNCEMENT,Subject,Content,
0,false,false);
}
fprintf (Gbl.F.Out,"
");
}
}
/*****************************************************************************/
/****************** Draw an announcement as a yellow note ********************/
/*****************************************************************************/
static void Ann_DrawAnAnnouncement (long AnnCod,Ann_Status_t Status,
const char *Subject,const char *Content,
unsigned Roles,
bool ShowAllAnnouncements,
bool ICanEdit)
{
extern const char *Txt_Users;
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_NOTICE_Active_Mark_as_obsolete;
extern const char *Txt_NOTICE_Obsolete_Mark_as_active;
extern const char *Txt_Do_not_show_again;
static const char *ContainerClass[Ann_NUM_STATUS] =
{
"NOTICE_CONTAINER_ACTIVE", // Ann_ACTIVE_ANNOUNCEMENT
"NOTICE_CONTAINER_OBSOLETE", // Ann_OBSOLETE_ANNOUNCEMENT
};
static const char *SubjectClass[Ann_NUM_STATUS] =
{
"NOTICE_SUBJECT_ACTIVE", // Ann_ACTIVE_ANNOUNCEMENT
"NOTICE_SUBJECT_OBSOLETE", // Ann_OBSOLETE_ANNOUNCEMENT
};
static const char *ContentClass[Ann_NUM_STATUS] =
{
"NOTICE_TEXT_ACTIVE", // Ann_ACTIVE_ANNOUNCEMENT
"NOTICE_TEXT_OBSOLETE", // Ann_OBSOLETE_ANNOUNCEMENT
};
static const char *UsersClass[Ann_NUM_STATUS] =
{
"NOTICE_AUTHOR_ACTIVE", // Ann_ACTIVE_ANNOUNCEMENT
"NOTICE_AUTHOR_OBSOLETE", // Ann_OBSOLETE_ANNOUNCEMENT
};
Rol_Role_t Role;
bool SomeRolesAreSelected;
Gbl.Announcements.AnnCod = AnnCod; // Parameter for forms
/***** Start yellow note *****/
fprintf (Gbl.F.Out,"",
ContainerClass[Status]);
if (ICanEdit)
{
/***** Put form to remove announcement *****/
Ico_PutContextualIconToRemove (ActRemAnn,Ann_PutParams);
/***** Put form to change the status of the announcement *****/
switch (Status)
{
case Ann_ACTIVE_ANNOUNCEMENT:
Lay_PutContextualLink (ActHidAnn,NULL,Ann_PutParams,
"eye-on64x64.png",
Txt_NOTICE_Active_Mark_as_obsolete,NULL,
NULL);
break;
case Ann_OBSOLETE_ANNOUNCEMENT:
Lay_PutContextualLink (ActRevAnn,NULL,Ann_PutParams,
"eye-slash-on64x64.png",
Txt_NOTICE_Obsolete_Mark_as_active,NULL,
NULL);
break;
}
}
/***** Write the subject of the announcement *****/
fprintf (Gbl.F.Out,"
%s
",
SubjectClass[Status],Subject);
/***** Write the content of the announcement *****/
fprintf (Gbl.F.Out,"
%s
",
ContentClass[Status],Content);
/***** Write form *****/
fprintf (Gbl.F.Out,"
");
if (ShowAllAnnouncements)
{
/* Users' roles who can view this announcement */
fprintf (Gbl.F.Out,"
%s:",
UsersClass[Status],Txt_Users);
for (Role = Rol_UNK, SomeRolesAreSelected = false;
Role <= Rol_TCH;
Role++)
if (Roles & (1 << Role))
{
if (SomeRolesAreSelected)
fprintf (Gbl.F.Out,",");
SomeRolesAreSelected = true;
fprintf (Gbl.F.Out," %s",Txt_ROLES_PLURAL_abc[Role][Usr_SEX_UNKNOWN]);
}
fprintf (Gbl.F.Out,"
");
}
else
/***** Put form to mark announcement as seen *****/
Lay_PutContextualLink (ActAnnSee,NULL,Ann_PutParams,
"remove-on64x64.png",
Txt_Do_not_show_again,Txt_Do_not_show_again,
NULL);
fprintf (Gbl.F.Out,"
");
/***** End yellow note *****/
fprintf (Gbl.F.Out,"
");
}
/*****************************************************************************/
/******************** Params used to edit an assignment **********************/
/*****************************************************************************/
static void Ann_PutParams (void)
{
Par_PutHiddenParamLong ("AnnCod",Gbl.Announcements.AnnCod);
}
/*****************************************************************************/
/************** Get parameter with the code of an announcement ***************/
/*****************************************************************************/
static long Ann_GetParamAnnCod (void)
{
long AnnCod;
/***** Get announcement code *****/
if ((AnnCod = Par_GetParToLong ("AnnCod")) <= 0)
Lay_ShowErrorAndExit ("Wrong code of announcement.");
return AnnCod;
}
/*****************************************************************************/
/***************** Show form to create a new announcement ********************/
/*****************************************************************************/
void Ann_ShowFormAnnouncement (void)
{
extern const char *Hlp_MESSAGES_Announcements;
extern const char *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_New_announcement;
extern const char *Txt_MSG_Subject;
extern const char *Txt_MSG_Content;
extern const char *Txt_Users;
extern const char *Txt_Create_announcement;
/***** Start form *****/
Act_StartForm (ActRcvAnn);
/***** Start box and table *****/
Box_StartBoxTable (NULL,Txt_New_announcement,NULL,
Hlp_MESSAGES_Announcements,Box_NOT_CLOSABLE,2);
/***** Announcement subject and body *****/
Ann_PutSubjectMessage ("Subject",Txt_MSG_Subject, 2);
Ann_PutSubjectMessage ("Content",Txt_MSG_Content,20);
/***** Users' roles who can view the announcement *****/
fprintf (Gbl.F.Out,"