diff --git a/css/swad17.0.css b/css/swad17.25.css
similarity index 99%
rename from css/swad17.0.css
rename to css/swad17.25.css
index 149842801..272dd0faf 100644
--- a/css/swad17.0.css
+++ b/css/swad17.25.css
@@ -2256,6 +2256,9 @@ a:hover img.CENTRE_PHOTO_SHOW
.STATUS_RED {color:red; 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 ************************************/
.TAG_SEL {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;
vertical-align:middle;
}
-.TEST_NUM_QST {color:#808080; font-size:20pt; font-weight:bold;}
.TEST_EXA {color:#404040; font-size:12pt;}
.TEST_EXA_LIGHT {color:#A0A0A0; font-size:12pt;}
.TEST_EDI {color:#404040; font-size:12pt;}
diff --git a/swad_changelog.h b/swad_changelog.h
index ce061db4a..73153253f 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -254,13 +254,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 17.24.2 (2017-10-10)"
-#define CSS_FILE "swad17.0.css"
+#define Log_PLATFORM_VERSION "SWAD 17.25 (2017-10-10)"
+#define CSS_FILE "swad17.25.css"
#define JS_FILE "swad17.17.1.js"
// 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
/*
+ 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.1: Oct 10, 2017 Changes in pagination of projects. (234228 lines)
Version 17.24: Oct 10, 2017 Filter projects by department. (234227 lines)
diff --git a/swad_game.c b/swad_game.c
index d0e3c1ae6..f0d311f6a 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -2925,7 +2925,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Game *Game,
/* Write number of question */
fprintf (Gbl.F.Out,"
"
- " %s ",
+ "%s ",
Gbl.RowEvenOdd,
StrNumQst);
diff --git a/swad_project.c b/swad_project.c
index c43f2c411..6591b1fce 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -117,14 +117,15 @@ static void Prj_GetHiddenParamHidVis (void);
static void Prj_GetHiddenParamDptCod (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 bool Prj_CheckIfICanCreateProjects (void);
static void Prj_PutIconsListProjects (void);
static void Prj_PutIconToCreateNewPrj (void);
static void Prj_PutButtonToCreateNewPrj (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,
const char *Icon,const char *Text);
static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj);
@@ -246,6 +247,7 @@ static void Prj_ShowProjectsInCurrentPage (void)
extern const char *Txt_No_projects;
struct Pagination Pagination;
unsigned NumPrj;
+ unsigned NumIndex;
struct Project Prj;
/***** Get list of projects *****/
@@ -289,7 +291,7 @@ static void Prj_ShowProjectsInCurrentPage (void)
/***** Table head *****/
Tbl_StartTableWideMargin (2);
- Prj_ShowProjectsHead (false); // Not print view
+ Prj_ShowProjectsHead (Prj_LIST_PROJECTS);
/***** Write all the projects *****/
for (NumPrj = Pagination.FirstItemVisible;
@@ -300,8 +302,22 @@ static void Prj_ShowProjectsInCurrentPage (void)
Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj - 1];
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 */
- Prj_ShowOneProject (&Prj,Prj_LIST_PROJECTS);
+ Prj_ShowOneProject (NumIndex,&Prj,Prj_LIST_PROJECTS);
}
/***** End table *****/
@@ -640,38 +656,64 @@ static void Prj_GetParams (void)
/******************* 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[Prj_NUM_ORDERS];
Prj_Order_t Order;
- fprintf (Gbl.F.Out," | "
- " | "); // Column for contextual icons
+ fprintf (Gbl.F.Out,"
");
+
+ /***** Column for number of project *****/
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out,"%s | ",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," | ");
+ break;
+ default:
+ break;
+ }
+
+ /***** Rest of columns *****/
for (Order = (Prj_Order_t) 0;
Order <= (Prj_Order_t) (Prj_NUM_ORDERS - 1);
Order++)
{
- fprintf (Gbl.F.Out,"");
+ fprintf (Gbl.F.Out," | ");
- if (!PrintView)
+ switch (ProjectView)
{
- Act_FormStart (ActSeePrj);
- Prj_PutParams (&Gbl.Prjs.Filter,
- Order,
- Gbl.Prjs.CurrentPage,
- -1L);
- Act_LinkFormSubmit (Txt_PROJECT_ORDER_HELP[Order],"TIT_TBL",NULL);
- if (Order == Gbl.Prjs.SelectedOrder)
- fprintf (Gbl.F.Out,"");
- }
- fprintf (Gbl.F.Out,"%s",Txt_PROJECT_ORDER[Order]);
- if (!PrintView)
- {
- if (Order == Gbl.Prjs.SelectedOrder)
- fprintf (Gbl.F.Out,"");
- fprintf (Gbl.F.Out,"");
- Act_FormEnd ();
+ case Prj_LIST_PROJECTS:
+ case Prj_FILE_BROWSER_PROJECT:
+ Act_FormStart (ActSeePrj);
+ Prj_PutParams (&Gbl.Prjs.Filter,
+ Order,
+ Gbl.Prjs.CurrentPage,
+ -1L);
+ Act_LinkFormSubmit (Txt_PROJECT_ORDER_HELP[Order],"TIT_TBL",NULL);
+ if (Order == Gbl.Prjs.SelectedOrder)
+ fprintf (Gbl.F.Out,"");
+ fprintf (Gbl.F.Out,"%s",Txt_PROJECT_ORDER[Order]);
+ if (Order == Gbl.Prjs.SelectedOrder)
+ fprintf (Gbl.F.Out,"");
+ fprintf (Gbl.F.Out,"");
+ Act_FormEnd ();
+ break;
+ default:
+ fprintf (Gbl.F.Out,"%s",Txt_PROJECT_ORDER[Order]);
+ break;
}
fprintf (Gbl.F.Out," | ");
@@ -821,10 +863,10 @@ void Prj_ShowOneUniqueProject (struct Project *Prj)
Tbl_StartTableWide (2);
/***** Write project head *****/
- Prj_ShowProjectsHead (true); // Print view
+ Prj_ShowProjectsHead (Prj_FILE_BROWSER_PROJECT);
/***** Show project *****/
- Prj_ShowOneProject (Prj,Prj_FILE_BROWSER_PROJECT);
+ Prj_ShowOneProject (0,Prj,Prj_FILE_BROWSER_PROJECT);
/***** End table *****/
Tbl_EndTable ();
@@ -853,10 +895,10 @@ void Prj_PrintOneProject (void)
/***** Table head *****/
Tbl_StartTableWideMargin (2);
- Prj_ShowProjectsHead (true); // Print view
+ Prj_ShowProjectsHead (Prj_PRINT_ONE_PROJECT);
/***** Write project *****/
- Prj_ShowOneProject (&Prj,Prj_PRINT_ONE_PROJECT);
+ Prj_ShowOneProject (0,&Prj,Prj_PRINT_ONE_PROJECT);
/***** End table *****/
Tbl_EndTable ();
@@ -869,7 +911,8 @@ void Prj_PrintOneProject (void)
/***************************** 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_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));
/***** Write first row of data of this project *****/
- /* Forms to remove/edit this project */
- fprintf (Gbl.F.Out,"
"
- "");
+
+ /* Number of project */
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
- fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
- // no break
- case Prj_FILE_BROWSER_PROJECT:
- fprintf (Gbl.F.Out,"\">");
- Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
- ICanViewProjectFiles);
- break;
+ fprintf (Gbl.F.Out," | ",
+ Prj->Hidden == Prj_HIDDEN ? "DATE_BLUE_LIGHT" :
+ "DATE_BLUE",
+ Gbl.RowEvenOdd);
+ if (NumIndex > 0)
+ fprintf (Gbl.F.Out," %u ",NumIndex);
+ fprintf (Gbl.F.Out," | ");
+ break;
+ default:
+ break;
+ }
+
+ /* Forms to remove/edit this project */
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out,"",
+ Gbl.RowEvenOdd);
+ Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
+ ICanViewProjectFiles);
+ fprintf (Gbl.F.Out," | ");
+ break;
+ case Prj_FILE_BROWSER_PROJECT:
+ fprintf (Gbl.F.Out,"");
+ Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
+ ICanViewProjectFiles);
+ fprintf (Gbl.F.Out," | ");
+ break;
default:
- fprintf (Gbl.F.Out,"\">");
break;
}
- fprintf (Gbl.F.Out,"");
/* Creation date/time */
UniqueId++;
@@ -969,47 +1031,75 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
Prj_ShowOneProjectDepartment (Prj,ProjectView);
/***** Preassigned? *****/
- fprintf (Gbl.F.Out,"
"
- "");
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out," | "
- "%s:"
- " | "
- "Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
- "ASG_LABEL",
- Txt_Preassigned_QUESTION);
- if (ProjectView == Prj_LIST_PROJECTS)
- fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
+ "%s:"
+ " | ",
+ Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
+ "ASG_LABEL",
+ Txt_Preassigned_QUESTION);
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out,""
- "%s ",
+ "%s "
+ ""
+ " | "
+ "
",
Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
"DAT",
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
- Txt_No);
- fprintf (Gbl.F.Out,"",
+ Txt_No,
Gbl.Prefs.IconsURL,PreassignedNonpreassigImage[Prj->Preassigned],
Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned],
Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned]);
- fprintf (Gbl.F.Out,""
- "");
/***** Number of students *****/
- fprintf (Gbl.F.Out,""
- "");
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out," | "
"%s:"
- " | "
- "",
Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
"ASG_LABEL",
Txt_Number_of_students);
- if (ProjectView == Prj_LIST_PROJECTS)
- fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
+ switch (ProjectView)
+ {
+ case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out," | "
"%u"
" | "
@@ -1025,23 +1115,33 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
- case Prj_FILE_BROWSER_PROJECT:
fprintf (Gbl.F.Out,"
"
- "");
+ " | ",
+ UniqueId,
+ Gbl.RowEvenOdd);
Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more);
fprintf (Gbl.F.Out," | "
"
");
fprintf (Gbl.F.Out,""
- "",
+ UniqueId,
+ Gbl.RowEvenOdd);
+ Prj_PutIconToToggleProject (UniqueId,"less64x64.png",Txt_See_less);
+ fprintf (Gbl.F.Out," | "
+ "
");
+ break;
+ case Prj_FILE_BROWSER_PROJECT:
+ fprintf (Gbl.F.Out,""
+ "",
+ UniqueId);
+ Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more);
+ fprintf (Gbl.F.Out," | "
+ "
");
+
+ fprintf (Gbl.F.Out,""
+ "",
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);
fprintf (Gbl.F.Out," | "
"
");
@@ -1054,16 +1154,19 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out,""
+ ""
- " | "
- " | "
"%s:"
@@ -1248,7 +1351,9 @@ static void Prj_ShowOneProjectDepartment (const struct Project *Prj,
Dpt_GetDataOfDepartmentByCod (&Dpt);
/***** 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," | "
+ " | "
- " | "
+ " | "
- " | "
@@ -1362,24 +1479,29 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
const char *id,unsigned UniqueId)
{
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 *****/
- PutLink = (ProjectView == Prj_LIST_PROJECTS && Prj->URL[0]);
-
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
+ fprintf (Gbl.F.Out," |
"
+ ""
- " | "
+ " | "
- " | "
@@ -1395,11 +1517,7 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
"DAT");
if (PutLink)
- fprintf (Gbl.F.Out,"",
- Prj->URL,
- Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
- "DAT");
+ fprintf (Gbl.F.Out,"",Prj->URL);
fprintf (Gbl.F.Out,"%s",Prj->URL);
if (PutLink)
fprintf (Gbl.F.Out,"");
@@ -1483,20 +1601,29 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
- case Prj_FILE_BROWSER_PROJECT:
- case Prj_PRINT_ONE_PROJECT:
- fprintf (Gbl.F.Out," | %s: | "
- ""
+ "%s:"
+ " | "
+ "",
+ Gbl.RowEvenOdd,
Prj->Hidden == Prj_HIDDEN ? "ASG_LABEL_LIGHT" :
"ASG_LABEL",
NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] :
- Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject]);
- if (ProjectView == Prj_LIST_PROJECTS)
- fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out," %s\">",
+ Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject],
+ Gbl.RowEvenOdd,
+ Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" :
+ "DAT");
+ break;
+ case Prj_FILE_BROWSER_PROJECT:
+ case Prj_PRINT_ONE_PROJECT:
+ fprintf (Gbl.F.Out," | "
+ "%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" :
"DAT");
break;
@@ -1562,23 +1689,27 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
}
/***** Row to add a new user *****/
- if (ProjectView == Prj_EDIT_ONE_PROJECT)
+ switch (ProjectView)
{
- fprintf (Gbl.F.Out," |
"
- "");
- Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
- sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
- Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutCurrentParams,
- "plus64x64.png",
- Gbl.Title,NULL,
- NULL);
- fprintf (Gbl.F.Out," | "
- "" // Column for photo
- " | ");
- if (RoleInProject == Prj_ROLE_STD)
- fprintf (Gbl.F.Out," | "); // Column for user's IDs
- fprintf (Gbl.F.Out," | " // Column for name
- "
");
+ case Prj_EDIT_ONE_PROJECT:
+ fprintf (Gbl.F.Out,""
+ "");
+ Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
+ sprintf (Gbl.Title,Txt_Add_USER,Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]);
+ Lay_PutContextualLink (ActionReqAddUsr[RoleInProject],NULL,Prj_PutCurrentParams,
+ "plus64x64.png",
+ Gbl.Title,NULL,
+ NULL);
+ fprintf (Gbl.F.Out," | "
+ "" // Column for photo
+ " | ");
+ if (RoleInProject == Prj_ROLE_STD)
+ fprintf (Gbl.F.Out," | "); // Column for user's IDs
+ fprintf (Gbl.F.Out," | " // Column for name
+ "
");
+ break;
+ default:
+ break;
}
/***** End table with all members with this role *****/
diff --git a/swad_test.c b/swad_test.c
index e8305b5c3..c76a2de36 100644
--- a/swad_test.c
+++ b/swad_test.c
@@ -957,7 +957,7 @@ static void Tst_ShowTestResultAfterAssess (long TstCod,unsigned *NumQstsNotBlank
else
/***** Question does not exists *****/
fprintf (Gbl.F.Out,""
- ""
+ " | "
"%u"
" | "
""
@@ -1004,7 +1004,7 @@ void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWithQuestio
/***** Write number of question *****/
fprintf (Gbl.F.Out," |
"
""
- " %u ",
+ "%u ",
Gbl.RowEvenOdd,
NumQst + 1);
@@ -2949,7 +2949,7 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
/* Write number of question */
fprintf (Gbl.F.Out," | "
- " %lu ",
+ "%lu ",
Gbl.RowEvenOdd,
NumRow + 1);
@@ -8302,7 +8302,7 @@ static void Tst_ShowTestResult (time_t TstTimeUTC)
if (ThisQuestionHasBeenEdited)
/***** Question has been edited *****/
fprintf (Gbl.F.Out," |
"
- ""
+ " | "
"%u"
" | "
""
@@ -8327,7 +8327,7 @@ static void Tst_ShowTestResult (time_t TstTimeUTC)
else
/***** Question does not exists *****/
fprintf (Gbl.F.Out," |
"
- ""
+ " | "
"%u"
" | "
""
|