From f26a8a2af662f91c7f52e5038618a304bab86bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Tue, 10 Oct 2017 18:25:59 +0200 Subject: [PATCH] Version 17.25 --- css/{swad17.0.css => swad17.25.css} | 4 +- swad_changelog.h | 5 +- swad_game.c | 2 +- swad_project.c | 391 +++++++++++++++++++--------- swad_test.c | 10 +- 5 files changed, 273 insertions(+), 139 deletions(-) rename css/{swad17.0.css => swad17.25.css} (99%) 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 " + "\"%s\"" + "" + "", Prj->Hidden == Prj_HIDDEN ? "DAT_LIGHT" : "DAT", (Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes : - Txt_No); - fprintf (Gbl.F.Out,"\"%s\"", + 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" "" ""