Version 17.25

This commit is contained in:
Antonio Cañas Vargas 2017-10-10 18:25:59 +02:00
parent 14275af952
commit f26a8a2af6
5 changed files with 273 additions and 139 deletions

View File

@ -2256,6 +2256,9 @@ a:hover img.CENTRE_PHOTO_SHOW
.STATUS_RED {color:red; font-size:12pt;} .STATUS_RED {color:red; font-size:12pt;}
.STATUS_RED_LIGHT {color:#F98A8A; font-size:12pt;} .STATUS_RED_LIGHT {color:#F98A8A; font-size:12pt;}
/********************** Number of question, project, etc. ********************/
.BIG_INDEX {color:#808080; font-size:20pt; font-weight:bold;}
/********************************** Tests ************************************/ /********************************** Tests ************************************/
.TAG_SEL {box-sizing:border-box; width:346px;} .TAG_SEL {box-sizing:border-box; width:346px;}
.TAG_TXT {box-sizing:border-box; width:346px;} .TAG_TXT {box-sizing:border-box; width:346px;}
@ -2272,7 +2275,6 @@ a:hover img.CENTRE_PHOTO_SHOW
text-align:center; text-align:center;
vertical-align:middle; vertical-align:middle;
} }
.TEST_NUM_QST {color:#808080; font-size:20pt; font-weight:bold;}
.TEST_EXA {color:#404040; font-size:12pt;} .TEST_EXA {color:#404040; font-size:12pt;}
.TEST_EXA_LIGHT {color:#A0A0A0; font-size:12pt;} .TEST_EXA_LIGHT {color:#A0A0A0; font-size:12pt;}
.TEST_EDI {color:#404040; font-size:12pt;} .TEST_EDI {color:#404040; font-size:12pt;}

View File

@ -254,13 +254,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 17.24.2 (2017-10-10)" #define Log_PLATFORM_VERSION "SWAD 17.25 (2017-10-10)"
#define CSS_FILE "swad17.0.css" #define CSS_FILE "swad17.25.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 17.25: Oct 10, 2017 New column with the number of the project in listing of projects. (234336 lines)
Version 17.24.2: Oct 10, 2017 Code refactoring in projects filter. (234209 lines) Version 17.24.2: Oct 10, 2017 Code refactoring in projects filter. (234209 lines)
Version 17.24.1: Oct 10, 2017 Changes in pagination of projects. (234228 lines) Version 17.24.1: Oct 10, 2017 Changes in pagination of projects. (234228 lines)
Version 17.24: Oct 10, 2017 Filter projects by department. (234227 lines) Version 17.24: Oct 10, 2017 Filter projects by department. (234227 lines)

View File

@ -2925,7 +2925,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Game *Game,
/* Write number of question */ /* Write number of question */
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
"<div class=\"TEST_NUM_QST\">%s</div>", "<div class=\"BIG_INDEX\">%s</div>",
Gbl.RowEvenOdd, Gbl.RowEvenOdd,
StrNumQst); StrNumQst);

View File

@ -117,14 +117,15 @@ static void Prj_GetHiddenParamHidVis (void);
static void Prj_GetHiddenParamDptCod (void); static void Prj_GetHiddenParamDptCod (void);
static void Prj_GetParams (void); static void Prj_GetParams (void);
static void Prj_ShowProjectsHead (bool PrintView); static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsHead (void); static void Prj_ShowTableAllProjectsHead (void);
static bool Prj_CheckIfICanCreateProjects (void); static bool Prj_CheckIfICanCreateProjects (void);
static void Prj_PutIconsListProjects (void); static void Prj_PutIconsListProjects (void);
static void Prj_PutIconToCreateNewPrj (void); static void Prj_PutIconToCreateNewPrj (void);
static void Prj_PutButtonToCreateNewPrj (void); static void Prj_PutButtonToCreateNewPrj (void);
static void Prj_PutIconToShowAllData (void); static void Prj_PutIconToShowAllData (void);
static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectView); static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
Prj_ProjectView_t ProjectView);
static void Prj_PutIconToToggleProject (unsigned UniqueId, static void Prj_PutIconToToggleProject (unsigned UniqueId,
const char *Icon,const char *Text); const char *Icon,const char *Text);
static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj); static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj);
@ -246,6 +247,7 @@ static void Prj_ShowProjectsInCurrentPage (void)
extern const char *Txt_No_projects; extern const char *Txt_No_projects;
struct Pagination Pagination; struct Pagination Pagination;
unsigned NumPrj; unsigned NumPrj;
unsigned NumIndex;
struct Project Prj; struct Project Prj;
/***** Get list of projects *****/ /***** Get list of projects *****/
@ -289,7 +291,7 @@ static void Prj_ShowProjectsInCurrentPage (void)
/***** Table head *****/ /***** Table head *****/
Tbl_StartTableWideMargin (2); Tbl_StartTableWideMargin (2);
Prj_ShowProjectsHead (false); // Not print view Prj_ShowProjectsHead (Prj_LIST_PROJECTS);
/***** Write all the projects *****/ /***** Write all the projects *****/
for (NumPrj = Pagination.FirstItemVisible; for (NumPrj = Pagination.FirstItemVisible;
@ -300,8 +302,22 @@ static void Prj_ShowProjectsInCurrentPage (void)
Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj - 1]; Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj - 1];
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
/* Number of index */
switch (Gbl.Prjs.SelectedOrder)
{
case Prj_ORDER_START_TIME:
case Prj_ORDER_END_TIME:
// NumPrj: 1, 2, 3 ==> NumIndex = 3, 2, 1
NumIndex = Gbl.Prjs.Num + 1 - NumPrj;
break;
default:
// NumPrj: 1, 2, 3 ==> NumIndex = 1, 2, 3
NumIndex = NumPrj;
break;
}
/* Show project */ /* Show project */
Prj_ShowOneProject (&Prj,Prj_LIST_PROJECTS); Prj_ShowOneProject (NumIndex,&Prj,Prj_LIST_PROJECTS);
} }
/***** End table *****/ /***** End table *****/
@ -640,38 +656,64 @@ static void Prj_GetParams (void)
/******************* Write header with fields of a project *******************/ /******************* Write header with fields of a project *******************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowProjectsHead (bool PrintView) static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView)
{ {
extern const char *Txt_No_INDEX;
extern const char *Txt_PROJECT_ORDER_HELP[Prj_NUM_ORDERS]; extern const char *Txt_PROJECT_ORDER_HELP[Prj_NUM_ORDERS];
extern const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS]; extern const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS];
Prj_Order_t Order; Prj_Order_t Order;
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>");
"<th class=\"CONTEXT_COL\"></th>"); // Column for contextual icons
/***** Column for number of project *****/
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<th class=\"CENTER_MIDDLE\">%s</th>",Txt_No_INDEX);
break;
default:
break;
}
/***** Column for contextual icons *****/
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<th class=\"CONTEXT_COL\"></th>");
break;
default:
break;
}
/***** Rest of columns *****/
for (Order = (Prj_Order_t) 0; for (Order = (Prj_Order_t) 0;
Order <= (Prj_Order_t) (Prj_NUM_ORDERS - 1); Order <= (Prj_Order_t) (Prj_NUM_ORDERS - 1);
Order++) Order++)
{ {
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">"); fprintf (Gbl.F.Out,"<th class=\"CENTER_MIDDLE\">");
if (!PrintView) switch (ProjectView)
{ {
Act_FormStart (ActSeePrj); case Prj_LIST_PROJECTS:
Prj_PutParams (&Gbl.Prjs.Filter, case Prj_FILE_BROWSER_PROJECT:
Order, Act_FormStart (ActSeePrj);
Gbl.Prjs.CurrentPage, Prj_PutParams (&Gbl.Prjs.Filter,
-1L); Order,
Act_LinkFormSubmit (Txt_PROJECT_ORDER_HELP[Order],"TIT_TBL",NULL); Gbl.Prjs.CurrentPage,
if (Order == Gbl.Prjs.SelectedOrder) -1L);
fprintf (Gbl.F.Out,"<u>"); Act_LinkFormSubmit (Txt_PROJECT_ORDER_HELP[Order],"TIT_TBL",NULL);
} if (Order == Gbl.Prjs.SelectedOrder)
fprintf (Gbl.F.Out,"%s",Txt_PROJECT_ORDER[Order]); fprintf (Gbl.F.Out,"<u>");
if (!PrintView) fprintf (Gbl.F.Out,"%s",Txt_PROJECT_ORDER[Order]);
{ if (Order == Gbl.Prjs.SelectedOrder)
if (Order == Gbl.Prjs.SelectedOrder) fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</u>"); fprintf (Gbl.F.Out,"</a>");
fprintf (Gbl.F.Out,"</a>"); Act_FormEnd ();
Act_FormEnd (); break;
default:
fprintf (Gbl.F.Out,"%s",Txt_PROJECT_ORDER[Order]);
break;
} }
fprintf (Gbl.F.Out,"</th>"); fprintf (Gbl.F.Out,"</th>");
@ -821,10 +863,10 @@ void Prj_ShowOneUniqueProject (struct Project *Prj)
Tbl_StartTableWide (2); Tbl_StartTableWide (2);
/***** Write project head *****/ /***** Write project head *****/
Prj_ShowProjectsHead (true); // Print view Prj_ShowProjectsHead (Prj_FILE_BROWSER_PROJECT);
/***** Show project *****/ /***** Show project *****/
Prj_ShowOneProject (Prj,Prj_FILE_BROWSER_PROJECT); Prj_ShowOneProject (0,Prj,Prj_FILE_BROWSER_PROJECT);
/***** End table *****/ /***** End table *****/
Tbl_EndTable (); Tbl_EndTable ();
@ -853,10 +895,10 @@ void Prj_PrintOneProject (void)
/***** Table head *****/ /***** Table head *****/
Tbl_StartTableWideMargin (2); Tbl_StartTableWideMargin (2);
Prj_ShowProjectsHead (true); // Print view Prj_ShowProjectsHead (Prj_PRINT_ONE_PROJECT);
/***** Write project *****/ /***** Write project *****/
Prj_ShowOneProject (&Prj,Prj_PRINT_ONE_PROJECT); Prj_ShowOneProject (0,&Prj,Prj_PRINT_ONE_PROJECT);
/***** End table *****/ /***** End table *****/
Tbl_EndTable (); Tbl_EndTable ();
@ -869,7 +911,8 @@ void Prj_PrintOneProject (void)
/***************************** Show one project ******************************/ /***************************** Show one project ******************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectView) static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
Prj_ProjectView_t ProjectView)
{ {
extern const char *Txt_Today; extern const char *Txt_Today;
extern const char *Txt_Project_files; extern const char *Txt_Project_files;
@ -889,24 +932,43 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
bool ICanViewProjectFiles = Prj_CheckIfICanViewProjectFiles (Prj_GetMyRoleInProject (Prj->PrjCod)); bool ICanViewProjectFiles = Prj_CheckIfICanViewProjectFiles (Prj_GetMyRoleInProject (Prj->PrjCod));
/***** Write first row of data of this project *****/ /***** Write first row of data of this project *****/
/* Forms to remove/edit this project */ fprintf (Gbl.F.Out,"<tr>");
fprintf (Gbl.F.Out,"<tr>"
"<td rowspan=\"3\" class=\"CONTEXT_COL"); /* Number of project */
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); fprintf (Gbl.F.Out,"<td rowspan=\"3\" class=\"%s RIGHT_TOP COLOR%u\">",
// no break Prj->Hidden == Prj_HIDDEN ? "DATE_BLUE_LIGHT" :
case Prj_FILE_BROWSER_PROJECT: "DATE_BLUE",
fprintf (Gbl.F.Out,"\">"); Gbl.RowEvenOdd);
Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden, if (NumIndex > 0)
ICanViewProjectFiles); fprintf (Gbl.F.Out,"<div class=\"BIG_INDEX\">%u</div>",NumIndex);
break; fprintf (Gbl.F.Out,"</td>");
break;
default:
break;
}
/* Forms to remove/edit this project */
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<td rowspan=\"3\" class=\"CONTEXT_COL COLOR%u\">",
Gbl.RowEvenOdd);
Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
ICanViewProjectFiles);
fprintf (Gbl.F.Out,"</td>");
break;
case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<td rowspan=\"3\" class=\"CONTEXT_COL\">");
Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
ICanViewProjectFiles);
fprintf (Gbl.F.Out,"</td>");
break;
default: default:
fprintf (Gbl.F.Out,"\">");
break; break;
} }
fprintf (Gbl.F.Out,"</td>");
/* Creation date/time */ /* Creation date/time */
UniqueId++; UniqueId++;
@ -969,47 +1031,75 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
Prj_ShowOneProjectDepartment (Prj,ProjectView); Prj_ShowOneProjectDepartment (Prj,ProjectView);
/***** Preassigned? *****/ /***** Preassigned? *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>");
"<td colspan=\"2\" class=\"RIGHT_TOP"); switch (ProjectView)
if (ProjectView == Prj_LIST_PROJECTS) {
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"RIGHT_TOP COLOR%u",
Gbl.RowEvenOdd);
break;
default:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"RIGHT_TOP");
break;
}
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
"%s:" "%s:"
"</td>" "</td>",
"<td colspan=\"2\" class=\"LEFT_TOP", Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" : "ASG_LABEL",
"ASG_LABEL", Txt_Preassigned_QUESTION);
Txt_Preassigned_QUESTION); switch (ProjectView)
if (ProjectView == Prj_LIST_PROJECTS) {
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP COLOR%u",
Gbl.RowEvenOdd);
break;
default:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
break;
}
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
"%s&nbsp;", "%s&nbsp;"
"<img src=\"%s/%s\""
" alt=\"%s\" title=\"%s\" class=\"ICO20x20\" />"
"</td>"
"</tr>",
Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" : Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
"DAT", "DAT",
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes : (Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
Txt_No); Txt_No,
fprintf (Gbl.F.Out,"<img src=\"%s/%s\""
" alt=\"%s\" title=\"%s\" class=\"ICO20x20\" />",
Gbl.Prefs.IconsURL,PreassignedNonpreassigImage[Prj->Preassigned], Gbl.Prefs.IconsURL,PreassignedNonpreassigImage[Prj->Preassigned],
Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned], Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned],
Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned]); Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned]);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/***** Number of students *****/ /***** Number of students *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>");
"<td colspan=\"2\" class=\"RIGHT_TOP"); switch (ProjectView)
if (ProjectView == Prj_LIST_PROJECTS) {
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"RIGHT_TOP COLOR%u",
Gbl.RowEvenOdd);
break;
default:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"RIGHT_TOP");
break;
}
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
"%s:" "%s:"
"</td>" "</td>",
"<td colspan=\"2\" class=\"LEFT_TOP",
Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" : Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
"ASG_LABEL", "ASG_LABEL",
Txt_Number_of_students); Txt_Number_of_students);
if (ProjectView == Prj_LIST_PROJECTS) switch (ProjectView)
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); {
case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP COLOR%u",
Gbl.RowEvenOdd);
break;
default:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
break;
}
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
"%u" "%u"
"</td>" "</td>"
@ -1025,23 +1115,33 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<tr id=\"prj_exp_%u\">" fprintf (Gbl.F.Out,"<tr id=\"prj_exp_%u\">"
"<td colspan=\"5\" class=\"CENTER_MIDDLE", "<td colspan=\"6\" class=\"CENTER_MIDDLE COLOR%u\">",
UniqueId); UniqueId,
if (ProjectView == Prj_LIST_PROJECTS) Gbl.RowEvenOdd);
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"\">");
Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more); Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "</tr>");
fprintf (Gbl.F.Out,"<tr id=\"prj_con_%u\" style=\"display:none;\">" fprintf (Gbl.F.Out,"<tr id=\"prj_con_%u\" style=\"display:none;\">"
"<td colspan=\"5\" class=\"CENTER_MIDDLE", "<td colspan=\"6\" class=\"CENTER_MIDDLE COLOR%u\">",
UniqueId,
Gbl.RowEvenOdd);
Prj_PutIconToToggleProject (UniqueId,"less64x64.png",Txt_See_less);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
break;
case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<tr id=\"prj_exp_%u\">"
"<td colspan=\"4\" class=\"CENTER_MIDDLE\">",
UniqueId);
Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
fprintf (Gbl.F.Out,"<tr id=\"prj_con_%u\" style=\"display:none;\">"
"<td colspan=\"4\" class=\"CENTER_MIDDLE\">",
UniqueId); UniqueId);
if (ProjectView == Prj_LIST_PROJECTS)
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"\">");
Prj_PutIconToToggleProject (UniqueId,"less64x64.png",Txt_See_less); Prj_PutIconToToggleProject (UniqueId,"less64x64.png",Txt_See_less);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "</tr>");
@ -1054,16 +1154,19 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<tr id=\"prj_pro_%u\" style=\"display:none;\">"
"<td colspan=\"4\" class=\"RIGHT_TOP COLOR%u",
UniqueId,
Gbl.RowEvenOdd);
break;
case Prj_FILE_BROWSER_PROJECT: case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<tr id=\"prj_pro_%u\" style=\"display:none;\">" fprintf (Gbl.F.Out,"<tr id=\"prj_pro_%u\" style=\"display:none;\">"
"<td colspan=\"3\" class=\"RIGHT_TOP", "<td colspan=\"2\" class=\"RIGHT_TOP",
UniqueId); UniqueId);
if (ProjectView == Prj_LIST_PROJECTS)
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
break; break;
default: default:
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"3\" class=\"RIGHT_TOP"); "<td colspan=\"2\" class=\"RIGHT_TOP");
} }
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
"%s:" "%s:"
@ -1248,7 +1351,9 @@ static void Prj_ShowOneProjectDepartment (const struct Project *Prj,
Dpt_GetDataOfDepartmentByCod (&Dpt); Dpt_GetDataOfDepartmentByCod (&Dpt);
/***** Show department *****/ /***** Show department *****/
PutLink = (ProjectView == Prj_LIST_PROJECTS && Dpt.WWW[0]); PutLink = (Dpt.WWW[0] &&
(ProjectView == Prj_LIST_PROJECTS ||
ProjectView == Prj_FILE_BROWSER_PROJECT));
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP"); fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP");
if (ProjectView == Prj_LIST_PROJECTS) if (ProjectView == Prj_LIST_PROJECTS)
@ -1299,23 +1404,35 @@ static void Prj_ShowOneProjectTxtField (struct Project *Prj,
/***** Change format *****/ /***** Change format *****/
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
TxtField,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful HTML TxtField,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful HTML
if (ProjectView == Prj_LIST_PROJECTS) switch (ProjectView)
Str_InsertLinks (TxtField,Cns_MAX_BYTES_TEXT,60); // Insert links {
case Prj_LIST_PROJECTS:
case Prj_FILE_BROWSER_PROJECT:
Str_InsertLinks (TxtField,Cns_MAX_BYTES_TEXT,60); // Insert links
break;
default:
break;
}
/***** Write row with label and text *****/ /***** Write row with label and text *****/
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">"
"<td colspan=\"4\" class=\"RIGHT_TOP COLOR%u",
id,UniqueId,Gbl.RowEvenOdd);
break;
case Prj_FILE_BROWSER_PROJECT: case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">" fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">"
"<td colspan=\"3\" class=\"RIGHT_TOP", "<td colspan=\"2\" class=\"RIGHT_TOP",
id,UniqueId); id,UniqueId);
if (ProjectView == Prj_LIST_PROJECTS) break;
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); case Prj_PRINT_ONE_PROJECT:
fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"2\" class=\"RIGHT_TOP");
break; break;
default: default:
fprintf (Gbl.F.Out,"<tr>" // Not applicable
"<td colspan=\"3\" class=\"RIGHT_TOP");
break; break;
} }
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
@ -1362,24 +1479,29 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
const char *id,unsigned UniqueId) const char *id,unsigned UniqueId)
{ {
extern const char *Txt_URL; extern const char *Txt_URL;
bool PutLink; bool PutLink = (Prj->URL[0] &&
(ProjectView == Prj_LIST_PROJECTS ||
ProjectView == Prj_FILE_BROWSER_PROJECT));
/***** Write row with label and text *****/ /***** Write row with label and text *****/
PutLink = (ProjectView == Prj_LIST_PROJECTS && Prj->URL[0]);
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">"
"<td colspan=\"4\" class=\"RIGHT_TOP COLOR%u",
id,UniqueId,Gbl.RowEvenOdd);
break;
case Prj_FILE_BROWSER_PROJECT: case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">" fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">"
"<td colspan=\"3\" class=\"RIGHT_TOP", "<td colspan=\"2\" class=\"RIGHT_TOP",
id,UniqueId); id,UniqueId);
if (ProjectView == Prj_LIST_PROJECTS) break;
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); case Prj_PRINT_ONE_PROJECT:
fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"2\" class=\"RIGHT_TOP");
break; break;
default: default:
fprintf (Gbl.F.Out,"<tr>" // Not applicable
"<td colspan=\"3\" class=\"RIGHT_TOP");
break; break;
} }
fprintf (Gbl.F.Out," %s\">" fprintf (Gbl.F.Out," %s\">"
@ -1395,11 +1517,7 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" : Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
"DAT"); "DAT");
if (PutLink) if (PutLink)
fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\"" fprintf (Gbl.F.Out,"<a href=\"%s\" target=\"_blank\">",Prj->URL);
" class=\"%s\">",
Prj->URL,
Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
"DAT");
fprintf (Gbl.F.Out,"%s",Prj->URL); fprintf (Gbl.F.Out,"%s",Prj->URL);
if (PutLink) if (PutLink)
fprintf (Gbl.F.Out,"</a>"); fprintf (Gbl.F.Out,"</a>");
@ -1483,20 +1601,29 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
case Prj_FILE_BROWSER_PROJECT: fprintf (Gbl.F.Out,"<td colspan=\"4\" class=\"RIGHT_TOP COLOR%u %s\">"
case Prj_PRINT_ONE_PROJECT: "%s:"
fprintf (Gbl.F.Out,"<td colspan=\"3\" class=\"RIGHT_TOP"); "</td>"
if (ProjectView == Prj_LIST_PROJECTS) "<td colspan=\"2\" class=\"LEFT_TOP COLOR%u %s\">",
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); Gbl.RowEvenOdd,
fprintf (Gbl.F.Out," %s\">%s:</td>"
"<td colspan=\"2\" class=\"LEFT_TOP",
Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" : Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
"ASG_LABEL", "ASG_LABEL",
NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] : NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]); Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
if (ProjectView == Prj_LIST_PROJECTS) Gbl.RowEvenOdd,
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
fprintf (Gbl.F.Out," %s\">", "DAT");
break;
case Prj_FILE_BROWSER_PROJECT:
case Prj_PRINT_ONE_PROJECT:
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"RIGHT_TOP %s\">"
"%s:"
"</td>"
"<td colspan=\"2\" class=\"LEFT_TOP %s\">",
Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
"ASG_LABEL",
NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" : Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
"DAT"); "DAT");
break; break;
@ -1562,23 +1689,27 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
} }
/***** Row to add a new user *****/ /***** Row to add a new user *****/
if (ProjectView == Prj_EDIT_ONE_PROJECT) switch (ProjectView)
{ {
fprintf (Gbl.F.Out,"<tr>" case Prj_EDIT_ONE_PROJECT:
"<td class=\"CENTER_TOP\" style=\"width:30px;\">"); fprintf (Gbl.F.Out,"<tr>"
Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter "<td class=\"CENTER_TOP\" style=\"width:30px;\">");
sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]); Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutCurrentParams, sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
"plus64x64.png", Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutCurrentParams,
Gbl.Title,NULL, "plus64x64.png",
NULL); Gbl.Title,NULL,
fprintf (Gbl.F.Out,"</td>" NULL);
"<td style=\"width:30px;\">" // Column for photo fprintf (Gbl.F.Out,"</td>"
"</td>"); "<td style=\"width:30px;\">" // Column for photo
if (RoleInProject == Prj_ROLE_STD) "</td>");
fprintf (Gbl.F.Out,"<td></td>"); // Column for user's IDs if (RoleInProject == Prj_ROLE_STD)
fprintf (Gbl.F.Out,"<td></td>" // Column for name fprintf (Gbl.F.Out,"<td></td>"); // Column for user's IDs
"</tr>"); fprintf (Gbl.F.Out,"<td></td>" // Column for name
"</tr>");
break;
default:
break;
} }
/***** End table with all members with this role *****/ /***** End table with all members with this role *****/

View File

@ -957,7 +957,7 @@ static void Tst_ShowTestResultAfterAssess (long TstCod,unsigned *NumQstsNotBlank
else else
/***** Question does not exists *****/ /***** Question does not exists *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"TEST_NUM_QST RIGHT_TOP COLOR%u\">" "<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
"%u" "%u"
"</td>" "</td>"
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">" "<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
@ -1004,7 +1004,7 @@ void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWithQuestio
/***** Write number of question *****/ /***** Write number of question *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"RIGHT_TOP COLOR%u\">" "<td class=\"RIGHT_TOP COLOR%u\">"
"<div class=\"TEST_NUM_QST\">%u</div>", "<div class=\"BIG_INDEX\">%u</div>",
Gbl.RowEvenOdd, Gbl.RowEvenOdd,
NumQst + 1); NumQst + 1);
@ -2949,7 +2949,7 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
/* Write number of question */ /* Write number of question */
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">" fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
"<div class=\"TEST_NUM_QST\">%lu</div>", "<div class=\"BIG_INDEX\">%lu</div>",
Gbl.RowEvenOdd, Gbl.RowEvenOdd,
NumRow + 1); NumRow + 1);
@ -8302,7 +8302,7 @@ static void Tst_ShowTestResult (time_t TstTimeUTC)
if (ThisQuestionHasBeenEdited) if (ThisQuestionHasBeenEdited)
/***** Question has been edited *****/ /***** Question has been edited *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"TEST_NUM_QST RIGHT_TOP COLOR%u\">" "<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
"%u" "%u"
"</td>" "</td>"
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">" "<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"
@ -8327,7 +8327,7 @@ static void Tst_ShowTestResult (time_t TstTimeUTC)
else else
/***** Question does not exists *****/ /***** Question does not exists *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"TEST_NUM_QST RIGHT_TOP COLOR%u\">" "<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">"
"%u" "%u"
"</td>" "</td>"
"<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">" "<td class=\"DAT_LIGHT LEFT_TOP COLOR%u\">"