mirror of https://github.com/acanas/swad-core.git
Version19.31.24
This commit is contained in:
parent
f12ab4bc97
commit
cd479d7d59
|
@ -487,7 +487,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.31.23 (2019-10-08)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.31.24 (2019-10-08)"
|
||||
#define CSS_FILE "swad19.29.css"
|
||||
#define JS_FILE "swad19.30.js"
|
||||
/*
|
||||
|
@ -495,6 +495,7 @@ ps2pdf source.ps destination.pdf
|
|||
// TODO: Un TFG preasignado sin estudiante tiene que salir un triángulo amarillo
|
||||
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
|
||||
|
||||
Version 19.31.24: Oct 08, 2019 Code refactoring in HTML tables. (246882 lines)
|
||||
Version 19.31.23: Oct 08, 2019 Code refactoring in HTML tables. (247076 lines)
|
||||
Version 19.31.22: Oct 08, 2019 Code refactoring in HTML tables. (247099 lines)
|
||||
Version 19.31.21: Oct 08, 2019 Code refactoring in HTML tables. (247124 lines)
|
||||
|
|
|
@ -148,17 +148,16 @@ void Dpt_SeeDepts (void)
|
|||
/* Write data of this department */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<a href=\"%s\" target=\"_blank\" class=\"DAT\">"
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"DAT\">"
|
||||
"%s"
|
||||
"</a>",
|
||||
Gbl.Dpts.Lst[NumDpt].WWW,
|
||||
Gbl.Dpts.Lst[NumDpt].FullName);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||
"%u",
|
||||
Gbl.Dpts.Lst[NumDpt].NumTchs);
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u",Gbl.Dpts.Lst[NumDpt].NumTchs);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
@ -170,8 +169,8 @@ void Dpt_SeeDepts (void)
|
|||
|
||||
/***** Separation row *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"3\" class=\"DAT\">"
|
||||
" ");
|
||||
Tbl_StartCellAttr ("colspan=\"3\" class=\"DAT\"");
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
Tbl_EndRow ();
|
||||
|
||||
|
@ -179,14 +178,12 @@ void Dpt_SeeDepts (void)
|
|||
NumTchsInOtherDpts = Usr_GetNumTchsCurrentInsInDepartment (0);
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%s",
|
||||
Txt_Other_departments);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%s",Txt_Other_departments);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||
"%u",
|
||||
NumTchsInOtherDpts);
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u",NumTchsInOtherDpts);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
@ -195,13 +192,12 @@ void Dpt_SeeDepts (void)
|
|||
/***** Write teachers with no department *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%s",
|
||||
Txt_Department_unspecified);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%s",Txt_Department_unspecified);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||
"%u",
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u",
|
||||
Usr_GetTotalNumberOfUsersInCourses (Hie_INS,
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH) -
|
||||
|
@ -518,9 +514,10 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
Ins.InsCod = Dpt->InsCod;
|
||||
Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA);
|
||||
|
||||
/* Put icon to remove department */
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM\">");
|
||||
|
||||
/* Put icon to remove department */
|
||||
Tbl_StartCellAttr ("class=\"BM\"");
|
||||
if (Dpt->NumTchs) // Department has teachers ==> deletion forbidden
|
||||
Ico_PutIconRemovalNotAllowed ();
|
||||
else
|
||||
|
@ -533,13 +530,12 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/* Department code */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||
"%ld ",
|
||||
Dpt->DptCod);
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%ld ",Dpt->DptCod);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Institution */
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
Frm_StartForm (ActChgDptIns);
|
||||
Dpt_PutParamDptCod (Dpt->DptCod);
|
||||
fprintf (Gbl.F.Out,"<select name=\"OthInsCod\" style=\"width:62px;\""
|
||||
|
@ -562,7 +558,7 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/* Department short name */
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
Frm_StartForm (ActRenDptSho);
|
||||
Dpt_PutParamDptCod (Dpt->DptCod);
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"ShortName\""
|
||||
|
@ -574,7 +570,7 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/* Department full name */
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
Frm_StartForm (ActRenDptFul);
|
||||
Dpt_PutParamDptCod (Dpt->DptCod);
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"FullName\""
|
||||
|
@ -586,7 +582,7 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/* Department WWW */
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
Frm_StartForm (ActChgDptWWW);
|
||||
Dpt_PutParamDptCod (Dpt->DptCod);
|
||||
fprintf (Gbl.F.Out,"<input type=\"url\" name=\"WWW\""
|
||||
|
@ -598,9 +594,8 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/* Number of teachers */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_MIDDLE\">"
|
||||
"%u",
|
||||
Dpt->NumTchs);
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u",Dpt->NumTchs);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
@ -940,8 +935,8 @@ static void Dpt_PutFormToCreateDepartment (void)
|
|||
Tbl_StartRow ();
|
||||
|
||||
/***** Institution *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||
"<select name=\"OthInsCod\" style=\"width:62px;\">"
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<select name=\"OthInsCod\" style=\"width:62px;\">"
|
||||
"<option value=\"0\"");
|
||||
if (Dpt_EditingDpt->InsCod == 0)
|
||||
fprintf (Gbl.F.Out," selected=\"selected\"");
|
||||
|
@ -958,8 +953,8 @@ static void Dpt_PutFormToCreateDepartment (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Department short name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||
"<input type=\"text\" name=\"ShortName\""
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"ShortName\""
|
||||
" maxlength=\"%u\" value=\"%s\""
|
||||
" class=\"INPUT_SHORT_NAME\""
|
||||
" required=\"required\" />",
|
||||
|
@ -967,8 +962,8 @@ static void Dpt_PutFormToCreateDepartment (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Department full name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||
"<input type=\"text\" name=\"FullName\""
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"FullName\""
|
||||
" maxlength=\"%u\" value=\"%s\""
|
||||
" class=\"INPUT_FULL_NAME\""
|
||||
" required=\"required\" />",
|
||||
|
@ -976,8 +971,8 @@ static void Dpt_PutFormToCreateDepartment (void)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Department WWW *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||
"<input type=\"url\" name=\"WWW\""
|
||||
Tbl_StartCellAttr ("class=\"CENTER_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<input type=\"url\" name=\"WWW\""
|
||||
" maxlength=\"%u\" value=\"%s\""
|
||||
" class=\"INPUT_WWW\""
|
||||
" required=\"required\" />",
|
||||
|
|
|
@ -187,14 +187,12 @@ void Dup_ListDuplicateUsrs (void)
|
|||
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"%u\""
|
||||
" class=\"DAT LEFT_MIDDLE COLOR%u\">",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"%u\" class=\"DAT LEFT_MIDDLE COLOR%u\"",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
|
||||
/* Write number of informants (row[1]) if greater than 1 */
|
||||
if (sscanf (row[1],"%u",&NumInformants) != 1)
|
||||
|
@ -324,13 +322,12 @@ static void Dup_ListSimilarUsrs (void)
|
|||
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"%u\" class=\"COLOR%u\">",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"%u\" class=\"COLOR%u\"",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
|
||||
/* Show details of user's profile */
|
||||
Prf_ShowDetailsUserProfile (&UsrDat);
|
||||
|
@ -341,18 +338,18 @@ static void Dup_ListSimilarUsrs (void)
|
|||
Crs_GetAndWriteCrssOfAUsr (&UsrDat,Rol_STD);
|
||||
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"%u\" class=\"LEFT_TOP COLOR%u\""
|
||||
" style=\"padding-bottom:20px;\">",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"%u\" class=\"LEFT_TOP COLOR%u\""
|
||||
" style=\"padding-bottom:20px;\"",
|
||||
Usr_NUM_MAIN_FIELDS_DATA_USR-2,
|
||||
Gbl.RowEvenOdd);
|
||||
|
||||
/* Button to remove this user */
|
||||
if (Acc_CheckIfICanEliminateAccount (UsrDat.UsrCod))
|
||||
|
|
|
@ -930,14 +930,14 @@ static void Enr_PutAreaToEnterUsrsIDs (void)
|
|||
Tbl_StartTableCenterPadding (2);
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"UsrsIDs\" class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"UsrsIDs\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_List_of_nicks_emails_or_IDs);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<textarea id=\"UsrsIDs\" name=\"UsrsIDs\""
|
||||
Tbl_StartCellAttr ("class=\"LEFT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"UsrsIDs\" name=\"UsrsIDs\""
|
||||
" cols=\"60\" rows=\"10\">"
|
||||
"</textarea>");
|
||||
Tbl_EndCell ();
|
||||
|
@ -2299,12 +2299,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
/* Scope (whole platform, current centre, current degree or current course) */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"ScopeEnr\" class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"ScopeEnr\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Scope);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\"");
|
||||
Sco_PutSelectorScope ("ScopeEnr",true);
|
||||
Tbl_EndCell ();
|
||||
|
||||
|
@ -2313,12 +2313,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
/* Users' roles in listing */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Users);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
Rol_WriteSelectorRoles (1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH,
|
||||
|
@ -2871,16 +2871,15 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
{
|
||||
/***** Number *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_TOP\">"
|
||||
"%lu",
|
||||
NumReqs - NumReq);
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"%lu",NumReqs - NumReq);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Link to course *****/
|
||||
Crs_GetDataOfCourseByCod (&Crs);
|
||||
Deg.DegCod = Crs.DegCod;
|
||||
Deg_GetDataOfDegreeByCod (&Deg);
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP\"");
|
||||
Frm_StartFormGoTo (ActSeeCrsInf);
|
||||
Crs_PutParamCrsCod (Crs.CrsCod);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
|
@ -2894,14 +2893,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Number of teachers in the course *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_TOP\">"
|
||||
"%u",
|
||||
Crs.NumUsrs[Rol_TCH]);
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"%u",Crs.NumUsrs[Rol_TCH]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** User photo *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT CENTER_TOP\""
|
||||
" style=\"width:22px;\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT CENTER_TOP\" style=\"width:22px;\"");
|
||||
ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (&UsrDat,PhotoURL);
|
||||
Pho_ShowUsrPhoto (&UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
|
@ -2909,23 +2906,22 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** User name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">"
|
||||
"<div class=\"REQUESTER_NAME\">"); // Limited width
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<div class=\"REQUESTER_NAME\">"); // Limited width
|
||||
Usr_WriteFirstNameBRSurnames (&UsrDat);
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Requested role (row[3]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">"
|
||||
"%s",
|
||||
Txt_ROLES_SINGUL_abc[DesiredRole][UsrDat.Sex]);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"%s",Txt_ROLES_SINGUL_abc[DesiredRole][UsrDat.Sex]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Request time (row[4]) *****/
|
||||
Msg_WriteMsgDate (Dat_GetUNIXTimeFromStr (row[4]),"DAT");
|
||||
|
||||
/***** Button to confirm the request *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP\"");
|
||||
switch (DesiredRole)
|
||||
{
|
||||
case Rol_STD:
|
||||
|
@ -2950,13 +2946,14 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Button to reject the request *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP\"");
|
||||
Frm_StartForm (ActReqRejSignUp);
|
||||
Crs_PutParamCrsCod (Crs.CrsCod);
|
||||
Usr_PutParamUsrCodEncrypted (UsrDat.EncryptedUsrCod);
|
||||
Btn_PutRemoveButtonInline (Txt_Reject);
|
||||
Frm_EndForm ();
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Mark possible notification as seen *****/
|
||||
|
|
144
swad_exam.c
144
swad_exam.c
|
@ -1045,7 +1045,7 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
|
||||
/***** Institution logo *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"CENTER_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"CENTER_MIDDLE\"");
|
||||
if (TypeViewExamAnnouncement == Exa_PRINT_VIEW)
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\">",StyleTitle);
|
||||
else
|
||||
|
@ -1061,8 +1061,7 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
|
||||
/***** Degree *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"%s CENTER_MIDDLE\">",
|
||||
StyleTitle);
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"%s CENTER_MIDDLE\"",StyleTitle);
|
||||
if (TypeViewExamAnnouncement == Exa_NORMAL_VIEW)
|
||||
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\" class=\"%s\">",
|
||||
Gbl.Hierarchy.Deg.WWW,StyleTitle);
|
||||
|
@ -1074,31 +1073,28 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
|
||||
/***** Title *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"%s CENTER_MIDDLE\">"
|
||||
" <br />"
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"%s CENTER_MIDDLE\"",StyleNormal);
|
||||
fprintf (Gbl.F.Out," <br />"
|
||||
"<strong>%s</strong>",
|
||||
StyleNormal,Txt_EXAM_ANNOUNCEMENT);
|
||||
Txt_EXAM_ANNOUNCEMENT);
|
||||
Tbl_EndCell ();
|
||||
Tbl_EndRow ();
|
||||
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"%s LEFT_MIDDLE\">"
|
||||
" ",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"%s LEFT_MIDDLE\"",StyleNormal);
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Tbl_EndCell ();
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Name of the course *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_BOTTOM\">"
|
||||
"<label for=\"CrsName\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Course);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_BOTTOM\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"CrsName\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Course);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_BOTTOM\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_BOTTOM\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" id=\"CrsName\" name=\"CrsName\""
|
||||
|
@ -1115,14 +1111,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Year/semester (N.A., 1º, 2º, 3º, 4º, 5º...) *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_BOTTOM\">"
|
||||
"<label for=\"Year\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Year_or_semester);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_BOTTOM\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"Year\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Year_or_semester);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_BOTTOM\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_BOTTOM\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<select id=\"Year\" name=\"Year\">");
|
||||
|
@ -1150,14 +1144,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Exam session *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_BOTTOM\">"
|
||||
"<label for=\"ExamSession\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Session);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_BOTTOM\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"ExamSession\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Session);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_BOTTOM\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_BOTTOM\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\""
|
||||
" id=\"ExamSession\" name=\"ExamSession\""
|
||||
|
@ -1172,15 +1164,13 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Date of the exam *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_BOTTOM\">"
|
||||
"%s:",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Exam_date);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_BOTTOM\"",StyleForm);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_EXAM_ANNOUNCEMENT_Exam_date);
|
||||
Tbl_EndCell ();
|
||||
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_BOTTOM\">");
|
||||
Tbl_StartCellAttr ("class=\"LEFT_BOTTOM\"");
|
||||
Dat_WriteFormDate (Gbl.ExamAnns.ExaDat.ExamDate.Year < Gbl.Now.Date.Year ? Gbl.ExamAnns.ExaDat.ExamDate.Year :
|
||||
Gbl.Now.Date.Year,
|
||||
Gbl.Now.Date.Year + 1,"Exam",
|
||||
|
@ -1192,9 +1182,8 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
{
|
||||
Dat_ConvDateToDateStr (&Gbl.ExamAnns.ExaDat.ExamDate,
|
||||
StrExamDate);
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_BOTTOM\">"
|
||||
"%s",
|
||||
StyleNormal,StrExamDate);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_BOTTOM\"",StyleNormal);
|
||||
fprintf (Gbl.F.Out,"%s",StrExamDate);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
Tbl_EndRow ();
|
||||
|
@ -1202,14 +1191,11 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Start time *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_BOTTOM\">"
|
||||
"%s:",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Start_time);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_BOTTOM\"",StyleForm);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_EXAM_ANNOUNCEMENT_Start_time);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_BOTTOM\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_BOTTOM\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<select name=\"ExamHour\">"
|
||||
|
@ -1251,14 +1237,11 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Approximate duration of the exam *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_BOTTOM\">"
|
||||
"%s:",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Approximate_duration);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_BOTTOM\"",StyleForm);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_EXAM_ANNOUNCEMENT_Approximate_duration);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_BOTTOM\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_BOTTOM\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<select name=\"DurationHour\">");
|
||||
|
@ -1320,14 +1303,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Place where the exam will be made *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"Place\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Place_of_exam);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"Place\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Place_of_exam);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"Place\" name=\"Place\""
|
||||
" cols=\"40\" rows=\"4\">"
|
||||
|
@ -1348,14 +1329,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Exam mode *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"ExamMode\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Mode);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"ExamMode\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Mode);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"ExamMode\" name=\"ExamMode\""
|
||||
" cols=\"40\" rows=\"2\">"
|
||||
|
@ -1376,14 +1355,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Structure of the exam *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"Structure\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Structure_of_the_exam);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"Structure\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Structure_of_the_exam);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"Structure\" name=\"Structure\""
|
||||
" cols=\"40\" rows=\"8\">"
|
||||
|
@ -1404,14 +1381,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Documentation required *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"DocRequired\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Documentation_required);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"DocRequired\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Documentation_required);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"DocRequired\" name=\"DocRequired\""
|
||||
" cols=\"40\" rows=\"2\">"
|
||||
|
@ -1432,14 +1407,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Material required *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"MatRequired\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Material_required);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"MatRequired\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Material_required);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"MatRequired\" name=\"MatRequired\""
|
||||
" cols=\"40\" rows=\"4\">"
|
||||
|
@ -1460,14 +1433,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Material allowed *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"MatAllowed\" class=\"%s\">%s:</label>",
|
||||
StyleForm,
|
||||
Txt_EXAM_ANNOUNCEMENT_Material_allowed);
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"MatAllowed\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Material_allowed);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"MatAllowed\" name=\"MatAllowed\""
|
||||
" cols=\"40\" rows=\"4\">"
|
||||
|
@ -1488,13 +1459,12 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
|
|||
/***** Other information to students *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"OtherInfo\" class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"OtherInfo\" class=\"%s\">%s:</label>",
|
||||
StyleForm,Txt_EXAM_ANNOUNCEMENT_Other_information);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
StyleNormal);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",StyleNormal);
|
||||
if (TypeViewExamAnnouncement == Exa_FORM_VIEW)
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"OtherInfo\" name=\"OtherInfo\""
|
||||
" cols=\"40\" rows=\"5\">"
|
||||
|
|
745
swad_figure.c
745
swad_figure.c
File diff suppressed because it is too large
Load Diff
|
@ -3187,7 +3187,7 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void)
|
|||
Tbl_StartRow ();
|
||||
Brw_ShowDataOwnerAsgWrk (&Gbl.Usrs.Other.UsrDat);
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||
Tbl_StartCellAttr ("class=\"LEFT_TOP\"");
|
||||
|
||||
/***** Show the tree with the assignments *****/
|
||||
Gbl.FileBrowser.Type = Brw_ADMI_ASG_CRS;
|
||||
|
@ -3362,7 +3362,7 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
|||
Act_Action_t NextAction;
|
||||
|
||||
/***** Show user's photo *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"OWNER_WORKS_PHOTO\">");
|
||||
Tbl_StartCellAttr ("class=\"OWNER_WORKS_PHOTO\"");
|
||||
ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (UsrDat,PhotoURL);
|
||||
Pho_ShowUsrPhoto (UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
|
@ -3370,7 +3370,7 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Start form to send a message to this user *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">");
|
||||
Tbl_StartCellAttr ("class=\"LEFT_TOP\"");
|
||||
|
||||
fprintf (Gbl.F.Out,"<div class=\"OWNER_WORKS_DATA AUTHOR_TXT\"");
|
||||
|
||||
|
@ -5588,9 +5588,9 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
|
|||
|
||||
/***** Indentation depending on level, icon, and file/folder name *****/
|
||||
/* Start column */
|
||||
fprintf (Gbl.F.Out,"<td class=\"NO_BR LEFT_TOP COLOR%u\""
|
||||
" style=\"width:99%%;\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"NO_BR LEFT_TOP COLOR%u\" style=\"width:99%%;\"",
|
||||
Gbl.RowEvenOdd);
|
||||
|
||||
Tbl_StartTable ();
|
||||
Tbl_StartRow ();
|
||||
|
||||
|
@ -5614,7 +5614,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
|
|||
else // File or link
|
||||
{
|
||||
/* Icon with file type or link */
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
Brw_PutIconFileWithLinkToViewMetadata (16,&FileMetadata);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
@ -5646,7 +5646,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
|
|||
if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER)
|
||||
{
|
||||
/***** Put icon to download ZIP of folder *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
if (Gbl.Usrs.Me.Role.Logged >= Rol_STD && // Only ZIP folders if I am student, teacher...
|
||||
!SeeMarks && // Do not ZIP folders when seeing marks
|
||||
!(SeeDocsZone && RowSetAsHidden)) // When seeing docs, if folder is not hidden (this could happen for Level == 0)
|
||||
|
@ -5743,7 +5743,7 @@ static bool Brw_CheckIfCanPasteIn (unsigned Level)
|
|||
|
||||
static void Brw_PutIconRemove (void)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
|
||||
if (Gbl.FileBrowser.ICanEditFileOrFolder) // Can I remove this?
|
||||
switch (Gbl.FileBrowser.FilFolLnk.Type)
|
||||
|
@ -5774,7 +5774,7 @@ static void Brw_PutIconRemove (void)
|
|||
|
||||
static void Brw_PutIconCopy (void)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
|
||||
/***** Form to copy into the clipboard *****/
|
||||
Ico_PutContextualIconToCopy (Brw_ActCopy[Gbl.FileBrowser.Type],
|
||||
|
@ -5791,7 +5791,7 @@ static void Brw_PutIconPaste (unsigned Level)
|
|||
{
|
||||
extern const char *Txt_Copy_not_allowed;
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
|
||||
if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER) // Can't paste in a file or link
|
||||
{
|
||||
|
@ -5818,13 +5818,13 @@ static void Brw_IndentAndWriteIconExpandContract (unsigned Level,
|
|||
const char *FileBrowserId,const char *RowId,
|
||||
Brw_IconTree_t IconThisRow)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\"");
|
||||
Tbl_StartTable ();
|
||||
Tbl_StartRow ();
|
||||
Brw_IndentDependingOnLevel (Level);
|
||||
|
||||
/***** Icon to expand/contract *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
switch (IconThisRow)
|
||||
{
|
||||
case Brw_ICON_TREE_NOTHING:
|
||||
|
@ -5871,11 +5871,10 @@ static void Brw_IndentDependingOnLevel (unsigned Level)
|
|||
i < Level;
|
||||
i++)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">"
|
||||
"<img src=\"%s/tr16x16.gif\""
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/tr16x16.gif\""
|
||||
" alt=\"\" title=\"\""
|
||||
" class=\"ICO20x20\" />",
|
||||
Gbl.RowEvenOdd,
|
||||
Cfg_URL_ICON_PUBLIC);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
|
@ -5951,7 +5950,7 @@ static void Brw_PutIconToContractFolder (const char *FileBrowserId,const char *R
|
|||
|
||||
static void Brw_PutIconShow (const char *Anchor)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
Ico_PutContextualIconToUnhide (Brw_ActShow[Gbl.FileBrowser.Type],Anchor,
|
||||
Brw_PutImplicitParamsFileBrowser);
|
||||
Tbl_EndCell ();
|
||||
|
@ -5963,7 +5962,7 @@ static void Brw_PutIconShow (const char *Anchor)
|
|||
|
||||
static void Brw_PutIconHide (const char *Anchor)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
Ico_PutContextualIconToHide (Brw_ActHide[Gbl.FileBrowser.Type],Anchor,
|
||||
Brw_PutImplicitParamsFileBrowser);
|
||||
Tbl_EndCell ();
|
||||
|
@ -5997,8 +5996,7 @@ static void Brw_PutIconFolder (unsigned Level,
|
|||
bool ICanCreate;
|
||||
|
||||
/***** Start cell *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
|
||||
Level * 20);
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\" style=\"width:%upx;\"",Level * 20);
|
||||
|
||||
/***** Put icon to create a new file or folder *****/
|
||||
if ((ICanCreate = Brw_CheckIfICanCreateIntoFolder (Level))) // I can create a new file or folder
|
||||
|
@ -6126,11 +6124,11 @@ static void Brw_PutIconNewFileOrFolder (void)
|
|||
extern const char *Txt_New_FILE_OR_FOLDER;
|
||||
|
||||
/***** Icon that indicates new file *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">"
|
||||
"<img src=\"%s/star16x16.gif\""
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/star16x16.gif\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" class=\"ICO20x20\" />",
|
||||
Gbl.RowEvenOdd,Cfg_URL_ICON_PUBLIC,
|
||||
Cfg_URL_ICON_PUBLIC,
|
||||
Txt_New_FILE_OR_FOLDER,
|
||||
Txt_New_FILE_OR_FOLDER);
|
||||
Tbl_EndCell ();
|
||||
|
@ -6240,11 +6238,12 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic)
|
|||
if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER)
|
||||
{
|
||||
/***** Start cell *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE",
|
||||
Gbl.FileBrowser.TxtStyle);
|
||||
if (Gbl.FileBrowser.Clipboard.IsThisFile)
|
||||
fprintf (Gbl.F.Out," LIGHT_GREEN");
|
||||
fprintf (Gbl.F.Out,"\" style=\"width:99%%;\">");
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_MIDDLE LIGHT_GREEN\" style=\"width:99%%;\"",
|
||||
Gbl.FileBrowser.TxtStyle);
|
||||
else
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_MIDDLE\" style=\"width:99%%;\"",
|
||||
Gbl.FileBrowser.TxtStyle);
|
||||
|
||||
fprintf (Gbl.F.Out,"<div class=\"FILENAME\">");
|
||||
|
||||
|
@ -6291,13 +6290,15 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic)
|
|||
}
|
||||
else // File or link
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_MIDDLE",
|
||||
Gbl.FileBrowser.TxtStyle);
|
||||
if (Gbl.FileBrowser.Clipboard.IsThisFile)
|
||||
fprintf (Gbl.F.Out," LIGHT_GREEN");
|
||||
fprintf (Gbl.F.Out,"\" style=\"width:99%%;\"> ");
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_MIDDLE LIGHT_GREEN\" style=\"width:99%%;\"",
|
||||
Gbl.FileBrowser.TxtStyle);
|
||||
else
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_MIDDLE\" style=\"width:99%%;\"",
|
||||
Gbl.FileBrowser.TxtStyle);
|
||||
|
||||
fprintf (Gbl.F.Out,"<div class=\"FILENAME\">");
|
||||
fprintf (Gbl.F.Out," "
|
||||
"<div class=\"FILENAME\">");
|
||||
|
||||
Frm_StartForm (Brw_ActDowFile[Gbl.FileBrowser.Type]);
|
||||
Brw_PutImplicitParamsFileBrowser ();
|
||||
|
@ -6382,11 +6383,10 @@ static void Brw_WriteDatesAssignment (void)
|
|||
extern const char *Txt_unknown_assignment;
|
||||
static unsigned UniqueId = 0;
|
||||
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\""
|
||||
" class=\"%s RIGHT_MIDDLE COLOR%u\">",
|
||||
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
|
||||
"ASG_LST_DATE_RED",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"%s RIGHT_MIDDLE COLOR%u\"",
|
||||
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
|
||||
"ASG_LST_DATE_RED",
|
||||
Gbl.RowEvenOdd);
|
||||
|
||||
if (Gbl.FileBrowser.Asg.AsgCod > 0)
|
||||
{
|
||||
|
@ -6434,16 +6434,15 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
|
|||
Fil_WriteFileSizeBrief ((double) FileMetadata->Size,FileSizeStr);
|
||||
else
|
||||
FileSizeStr[0] = '\0';
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE COLOR%u\">"
|
||||
" %s",
|
||||
Gbl.FileBrowser.TxtStyle,Gbl.RowEvenOdd,
|
||||
FileSizeStr);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE COLOR%u\"",
|
||||
Gbl.FileBrowser.TxtStyle,Gbl.RowEvenOdd);
|
||||
fprintf (Gbl.F.Out," %s",FileSizeStr);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write the date *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE COLOR%u\">"
|
||||
" ",
|
||||
Gbl.FileBrowser.TxtStyle,Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE COLOR%u\"",
|
||||
Gbl.FileBrowser.TxtStyle,Gbl.RowEvenOdd);
|
||||
fprintf (Gbl.F.Out," ");
|
||||
if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FILE ||
|
||||
Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_LINK)
|
||||
{
|
||||
|
@ -6482,7 +6481,7 @@ static void Brw_WriteFileOrFolderPublisher (unsigned Level,unsigned long UsrCod)
|
|||
ShowUsr = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS); // Get user's data from database
|
||||
}
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"BM%u\">",Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"BM%u\"",Gbl.RowEvenOdd);
|
||||
if (ShowUsr)
|
||||
{
|
||||
/***** Show photo *****/
|
||||
|
@ -8510,35 +8509,41 @@ static void Brw_PutFormToCreateALink (const char *FileNameToShow)
|
|||
/***** URL *****/
|
||||
Tbl_StartTable ();
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"NewLinkURL\" class=\"%s\">"
|
||||
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"NewLinkURL\" class=\"%s\">"
|
||||
"%s: "
|
||||
"</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_URL);
|
||||
Tbl_EndCell ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<input type=\"url\""
|
||||
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<input type=\"url\""
|
||||
" id=\"NewLinkURL\" name=\"NewLinkURL\""
|
||||
" size=\"30\" maxlength=\"%u\" value=\"\""
|
||||
" required=\"required\" />",
|
||||
PATH_MAX);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Link name *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"NewLinkName\" class=\"%s\">"
|
||||
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"NewLinkName\" class=\"%s\">"
|
||||
"%s (%s): "
|
||||
"</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Save_as,Txt_optional);
|
||||
Tbl_EndCell ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<input type=\"text\""
|
||||
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\""
|
||||
" id=\"NewLinkName\" name=\"NewLinkName\""
|
||||
" size=\"30\" maxlength=\"%u\" value=\"\" />",
|
||||
Brw_MAX_CHARS_FOLDER);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
Tbl_EndTable ();
|
||||
|
||||
|
@ -9497,30 +9502,36 @@ void Brw_ShowFileMetadata (void)
|
|||
|
||||
/***** Link to download the file *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\""
|
||||
" class=\"FILENAME_TXT CENTER_MIDDLE\">");
|
||||
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"FILENAME_TXT CENTER_MIDDLE\"");
|
||||
Brw_WriteBigLinkToDownloadFile (URL,&FileMetadata,FileNameToShow);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Filename *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Filename);
|
||||
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_Filename);
|
||||
Tbl_EndCell ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
Brw_WriteSmallLinkToDownloadFile (URL,&FileMetadata,FileNameToShow);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Publisher's data *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Uploaded_by);
|
||||
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_Uploaded_by);
|
||||
Tbl_EndCell ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
if (FileHasPublisher)
|
||||
{
|
||||
/* Show photo */
|
||||
|
@ -9537,6 +9548,7 @@ void Brw_ShowFileMetadata (void)
|
|||
/* Unknown publisher */
|
||||
fprintf (Gbl.F.Out,"%s",Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Free memory used for publisher's data *****/
|
||||
|
@ -9546,45 +9558,48 @@ void Brw_ShowFileMetadata (void)
|
|||
/***** Write the file size *****/
|
||||
Fil_WriteFileSizeFull ((double) FileMetadata.Size,FileSizeStr);
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_File_size);
|
||||
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_File_size);
|
||||
Tbl_EndCell ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%s",
|
||||
FileSizeStr);
|
||||
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%s",FileSizeStr);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Write the date *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||
Txt_Date_of_creation);
|
||||
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_Date_of_creation);
|
||||
Tbl_EndCell ();
|
||||
fprintf (Gbl.F.Out,"<td id=\"filedate\" class=\"DAT LEFT_MIDDLE\">"
|
||||
"<script type=\"text/javascript\">"
|
||||
|
||||
Tbl_StartCellAttr ("id=\"filedate\" class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('filedate',%ld,"
|
||||
"%u,', ','%s',true,true,0x7);"
|
||||
"</script>",
|
||||
(long) FileMetadata.Time,
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
||||
/***** Private or public? *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"PublicFile\" class=\"%s\">"
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"PublicFile\" class=\"%s\">"
|
||||
"%s:"
|
||||
"</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Availability);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
if (ICanChangePublic) // I can change file to public
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<select id=\"PublicFile\" name=\"PublicFile\">");
|
||||
|
@ -9612,12 +9627,12 @@ void Brw_ShowFileMetadata (void)
|
|||
/***** License *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"License\" class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"License\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_License);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">");
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
if (ICanEdit) // I can edit file properties
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<select id=\"License\" name=\"License\">");
|
||||
|
@ -9644,14 +9659,13 @@ void Brw_ShowFileMetadata (void)
|
|||
{
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_My_views);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_My_views);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%u",
|
||||
FileMetadata.NumMyViews);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u",FileMetadata.NumMyViews);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
@ -9660,13 +9674,13 @@ void Brw_ShowFileMetadata (void)
|
|||
/***** Write number of identificated views *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Identified_views);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_Identified_views);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%u (%u %s)",
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u (%u %s)",
|
||||
FileMetadata.NumViewsFromLoggedUsrs,
|
||||
FileMetadata.NumLoggedUsrs,
|
||||
(FileMetadata.NumLoggedUsrs == 1) ? Txt_user[Usr_SEX_UNKNOWN] :
|
||||
|
@ -9678,14 +9692,13 @@ void Brw_ShowFileMetadata (void)
|
|||
/***** Write number of public views *****/
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_MIDDLE\">"
|
||||
"%s:",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_Public_views);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_MIDDLE\"",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,"%s:",Txt_Public_views);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_MIDDLE\">"
|
||||
"%u",
|
||||
FileMetadata.NumPublicViews);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"%u",FileMetadata.NumPublicViews);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
@ -11939,14 +11952,12 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
|
|||
Tbl_StartRow ();
|
||||
|
||||
/***** Write number of document in this search *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT RIGHT_TOP %s\">"
|
||||
"%lu",
|
||||
BgColor,++(*NumDocsNotHidden));
|
||||
Tbl_StartCellAttr ("class=\"DAT RIGHT_TOP %s\"",BgColor);
|
||||
fprintf (Gbl.F.Out,"%lu",++(*NumDocsNotHidden));
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write institution logo, institution short name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP %s\">",
|
||||
BgColor);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP %s\"",BgColor);
|
||||
if (InsCod > 0)
|
||||
{
|
||||
Frm_StartFormGoTo (ActSeeInsInf);
|
||||
|
@ -11962,8 +11973,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Write centre logo, centre short name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP %s\">",
|
||||
BgColor);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP %s\"",BgColor);
|
||||
if (CtrCod > 0)
|
||||
{
|
||||
Frm_StartFormGoTo (ActSeeCtrInf);
|
||||
|
@ -11979,8 +11989,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Write degree logo, degree short name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP %s\">",
|
||||
BgColor);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP %s\"",BgColor);
|
||||
if (DegCod > 0)
|
||||
{
|
||||
Frm_StartFormGoTo (ActSeeDegInf);
|
||||
|
@ -11996,8 +12005,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Write course short name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP %s\">",
|
||||
BgColor);
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP %s\"",BgColor);
|
||||
if (CrsCod > 0)
|
||||
{
|
||||
Frm_StartFormGoTo (ActSeeCrsInf);
|
||||
|
@ -12055,9 +12063,9 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
|
|||
Title = "";
|
||||
break;
|
||||
}
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP %s\">"
|
||||
"%s",
|
||||
BgColor,Title);
|
||||
|
||||
Tbl_StartCellAttr ("class=\"DAT LEFT_TOP %s\"",BgColor);
|
||||
fprintf (Gbl.F.Out,"%s",Title);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Get the name of the file to show *****/
|
||||
|
@ -12066,8 +12074,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
|
|||
FileNameToShow);
|
||||
|
||||
/***** Write file name using path (row[1]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_TOP %s\">",
|
||||
BgColor);
|
||||
Tbl_StartCellAttr ("class=\"DAT_N LEFT_TOP %s\"",BgColor);
|
||||
|
||||
/* Start form */
|
||||
Action = Brw_ActReqDatFile[Brw_FileBrowserForFoundDocs[FileMetadata.FileBrowser]];
|
||||
|
|
|
@ -842,7 +842,7 @@ static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat)
|
|||
bool ItsMe = Usr_ItsMe (UsrDat->UsrCod);
|
||||
|
||||
/***** Show user's photo *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"FOLLOW_PHOTO\">");
|
||||
Tbl_StartCellAttr ("class=\"FOLLOW_PHOTO\"");
|
||||
if (Visible)
|
||||
{
|
||||
ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (UsrDat,PhotoURL);
|
||||
|
@ -853,7 +853,7 @@ static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Show user's name and icon to follow/unfollow *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"FOLLOW_USR\">");
|
||||
Tbl_StartCellAttr ("class=\"FOLLOW_USR\"");
|
||||
if (Visible)
|
||||
{
|
||||
/* Put form to go to public profile */
|
||||
|
@ -899,8 +899,7 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat)
|
|||
|
||||
/***** Show user's photo *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"CON_PHOTO COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"CON_PHOTO COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (Visible)
|
||||
{
|
||||
ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (UsrDat,PhotoURL);
|
||||
|
@ -911,8 +910,7 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** User's name *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CON_NAME_FOLLOW CON_CRS COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"CON_NAME_FOLLOW CON_CRS COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (Visible)
|
||||
{
|
||||
/* Put form to go to public profile */
|
||||
|
@ -928,8 +926,7 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat)
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Icon to follow *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CON_ICON_FOLLOW RIGHT_MIDDLE COLOR%u\">",
|
||||
Gbl.RowEvenOdd);
|
||||
Tbl_StartCellAttr ("class=\"CON_ICON_FOLLOW RIGHT_MIDDLE COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (!Gbl.Usrs.Me.Logged || // Not logged
|
||||
ItsMe) // It's me
|
||||
/* Inactive icon to follow/unfollow */
|
||||
|
|
81
swad_forum.c
81
swad_forum.c
|
@ -1177,12 +1177,12 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
|
|||
Tbl_StartRow ();
|
||||
|
||||
/***** Put an icon with post status *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CONTEXT_COL %s\">"
|
||||
"<img src=\"%s/%s\""
|
||||
Tbl_StartCellAttr ("class=\"CONTEXT_COL %s\"",
|
||||
NewPst ? "MSG_TIT_BG_NEW" :
|
||||
"MSG_TIT_BG");
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" class=\"ICO16x16\" />",
|
||||
NewPst ? "MSG_TIT_BG_NEW" :
|
||||
"MSG_TIT_BG",
|
||||
Cfg_URL_ICON_PUBLIC,
|
||||
NewPst ? "envelope.svg" :
|
||||
"envelope-open-text.svg",
|
||||
|
@ -1200,9 +1200,8 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
|
|||
"MSG_TIT_BG");
|
||||
|
||||
/***** Write subject *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP\">",
|
||||
NewPst ? "MSG_TIT_BG_NEW" :
|
||||
"MSG_TIT_BG");
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP\"",NewPst ? "MSG_TIT_BG_NEW" :
|
||||
"MSG_TIT_BG");
|
||||
if (Enabled)
|
||||
{
|
||||
if (Subject[0])
|
||||
|
@ -1217,7 +1216,7 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
|
|||
|
||||
/***** Form to ban/unban post *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"CONTEXT_COL\">");
|
||||
Tbl_StartCellAttr ("class=\"CONTEXT_COL\"");
|
||||
if (ICanModerateForum)
|
||||
{
|
||||
Frm_StartFormAnchor (Enabled ? For_ActionsDisPstFor[Gbl.Forum.ForumSelected.Type] :
|
||||
|
@ -1287,8 +1286,7 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
|
|||
|
||||
/***** Write author *****/
|
||||
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
|
||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"AUTHOR_TXT LEFT_TOP\""
|
||||
" style=\"width:150px;\">");
|
||||
Tbl_StartCellAttr ("colspan=\"2\" class=\"AUTHOR_TXT LEFT_TOP\" style=\"width:150px;\"");
|
||||
Msg_WriteMsgAuthor (&UsrDat,Enabled,NULL);
|
||||
if (Enabled)
|
||||
/* Write number of posts from this user */
|
||||
|
@ -1296,7 +1294,7 @@ static void For_ShowAForumPost (unsigned PstNum,long PstCod,
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Write post content *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"MSG_TXT LEFT_TOP\">");
|
||||
Tbl_StartCellAttr ("class=\"MSG_TXT LEFT_TOP\"");
|
||||
if (Enabled)
|
||||
{
|
||||
Str_Copy (Content,OriginalContent,
|
||||
|
@ -3405,8 +3403,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
|||
|
||||
/***** Show my photo if I have any posts in this thread *****/
|
||||
Tbl_StartRow ();
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP %s\" style=\"width:20px;\">",
|
||||
BgColor);
|
||||
Tbl_StartCellAttr ("class=\"CENTER_TOP %s\" style=\"width:20px;\"",BgColor);
|
||||
if (Thr.NumMyPosts)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<img src=\"");
|
||||
|
@ -3428,11 +3425,10 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Put an icon with thread status *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CONTEXT_COL %s\">"
|
||||
"<img src=\"%s/%s\""
|
||||
Tbl_StartCellAttr ("class=\"CONTEXT_COL %s\"",BgColor);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
" class=\"ICO16x16\" />",
|
||||
BgColor,
|
||||
Cfg_URL_ICON_PUBLIC,
|
||||
Thr.NumUnreadPosts ? "envelope.svg" :
|
||||
"envelope-open-text.svg",
|
||||
|
@ -3479,7 +3475,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
|||
Tbl_EndCell ();
|
||||
|
||||
/***** Write subject and links to thread pages *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP %s\">",BgColor);
|
||||
Tbl_StartCellAttr ("class=\"LEFT_TOP %s\"",BgColor);
|
||||
PaginationPsts.NumItems = Thr.NumPosts;
|
||||
PaginationPsts.CurrentPage = 1; // First page
|
||||
Pag_CalculatePagination (&PaginationPsts);
|
||||
|
@ -3504,19 +3500,19 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
|||
/* Write the author of first or last message */
|
||||
UsrDat.UsrCod = Thr.UsrCod[Order];
|
||||
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP %s\">",Style,BgColor);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP %s\"",Style,BgColor);
|
||||
Msg_WriteMsgAuthor (&UsrDat,Thr.Enabled[Order],BgColor);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/* Write the date of first or last message (it's in YYYYMMDDHHMMSS format) */
|
||||
TimeUTC = Thr.WriteTime[Order];
|
||||
UniqueId++;
|
||||
fprintf (Gbl.F.Out,"<td id=\"thr_date_%u\" class=\"%s LEFT_TOP %s\">"
|
||||
"<script type=\"text/javascript\">"
|
||||
Tbl_StartCellAttr ("id=\"thr_date_%u\" class=\"%s LEFT_TOP %s\"",
|
||||
UniqueId,Style,BgColor);
|
||||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">"
|
||||
"writeLocalDateHMSFromUTC('thr_date_%u',%ld,"
|
||||
"%u,'<br />','%s',true,false,0x6);"
|
||||
"</script>",
|
||||
UniqueId,Style,BgColor,
|
||||
UniqueId,(long) TimeUTC,
|
||||
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
|
||||
Tbl_EndCell ();
|
||||
|
@ -3526,38 +3522,29 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
|
|||
Column <= 2;
|
||||
Column++)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s LEFT_TOP %s\">",
|
||||
Style,BgColor);
|
||||
Tbl_StartCellAttr ("class=\"%s LEFT_TOP %s\"",Style,BgColor);
|
||||
Tbl_EndCell ();
|
||||
}
|
||||
}
|
||||
|
||||
/***** Write number of posts in this thread *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
|
||||
"%u ",
|
||||
Style,BgColor,
|
||||
Thr.NumPosts);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_TOP %s\"",Style,BgColor);
|
||||
fprintf (Gbl.F.Out,"%u ",Thr.NumPosts);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write number of new posts in this thread *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
|
||||
"%u ",
|
||||
Style,BgColor,
|
||||
Thr.NumUnreadPosts);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_TOP %s\"",Style,BgColor);
|
||||
fprintf (Gbl.F.Out,"%u ",Thr.NumUnreadPosts);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write number of users who have write posts in this thread *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
|
||||
"%u ",
|
||||
Style,BgColor,
|
||||
Thr.NumWriters);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_TOP %s\"",Style,BgColor);
|
||||
fprintf (Gbl.F.Out,"%u ",Thr.NumWriters);
|
||||
Tbl_EndCell ();
|
||||
|
||||
/***** Write number of users who have read this thread *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP %s\">"
|
||||
"%u ",
|
||||
Style,BgColor,
|
||||
Thr.NumReaders);
|
||||
Tbl_StartCellAttr ("class=\"%s RIGHT_TOP %s\"",Style,BgColor);
|
||||
fprintf (Gbl.F.Out,"%u ",Thr.NumReaders);
|
||||
Tbl_EndCell ();
|
||||
|
||||
Tbl_EndRow ();
|
||||
|
@ -3968,13 +3955,13 @@ static void For_WriteFormForumPst (bool IsReply,const char *Subject)
|
|||
/* Subject */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"Subject\" class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"Subject\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_MSG_Subject);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
|
||||
"<input type=\"text\" id=\"Subject\" name=\"Subject\""
|
||||
Tbl_StartCellAttr ("class=\"LEFT_MIDDLE\"");
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" id=\"Subject\" name=\"Subject\""
|
||||
" class=\"MSG_SUBJECT\""
|
||||
" maxlength=\"%u\" value=\"%s\""
|
||||
" required=\"required\" />",
|
||||
|
@ -3988,13 +3975,13 @@ static void For_WriteFormForumPst (bool IsReply,const char *Subject)
|
|||
/* Content */
|
||||
Tbl_StartRow ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP\">"
|
||||
"<label for=\"Content\" class=\"%s\">%s:</label>",
|
||||
Tbl_StartCellAttr ("class=\"RIGHT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<label for=\"Content\" class=\"%s\">%s:</label>",
|
||||
The_ClassFormInBox[Gbl.Prefs.Theme],Txt_MSG_Content);
|
||||
Tbl_EndCell ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP\">"
|
||||
"<textarea id=\"Content\" name=\"Content\""
|
||||
Tbl_StartCellAttr ("class=\"LEFT_TOP\"");
|
||||
fprintf (Gbl.F.Out,"<textarea id=\"Content\" name=\"Content\""
|
||||
" class=\"MSG_CONTENT\""
|
||||
" rows=\"10\">"
|
||||
"</textarea>");
|
||||
|
|
Loading…
Reference in New Issue