diff --git a/swad_action.c b/swad_action.c index 31c25c193..e816277cd 100644 --- a/swad_action.c +++ b/swad_action.c @@ -456,6 +456,7 @@ Assessment: 316. ActSeeTblAllPrj Show all projects in a table 317. ActFrmNewPrj Form to create a new project 318. ActEdiOnePrj Edit one project + NEW. ActFilBrwOnePrj View / edit project file browser 319. ActPrnOnePrj Print one project 320. ActNewPrj Create new project 321. ActChgPrj Modify data of an existing project @@ -1959,6 +1960,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActSeeTblAllPrj */{1696,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_ShowTableAllProjects ,NULL}, /* ActFrmNewPrj */{1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatePrj ,NULL}, /* ActEdiOnePrj */{1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestEditPrj ,NULL}, + /* ActFilBrwOnePrj */{1697,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_FileBrowserPrj ,NULL}, /* ActPrnOnePrj */{1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL}, /* ActNewPrj */{1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RecFormProject ,NULL}, /* ActChgPrj */{1679,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RecFormProject ,NULL}, @@ -4801,6 +4803,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActRemTutPrj, // #1694 ActRemEvaPrj, // #1695 ActSeeTblAllPrj, // #1696 + ActFilBrwOnePrj, // #1697 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 9bf44c11e..a793905a9 100644 --- a/swad_action.h +++ b/swad_action.h @@ -59,9 +59,9 @@ typedef enum typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 119 + 437 + 165 + 172 + 42 + 14 + 76) +#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 120 + 437 + 165 + 172 + 42 + 14 + 76) -#define Act_MAX_ACTION_COD 1696 +#define Act_MAX_ACTION_COD 1697 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -467,100 +467,101 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActSeeTblAllPrj (ActChgCalCrs1stDay + 28) #define ActFrmNewPrj (ActChgCalCrs1stDay + 29) #define ActEdiOnePrj (ActChgCalCrs1stDay + 30) -#define ActPrnOnePrj (ActChgCalCrs1stDay + 31) -#define ActNewPrj (ActChgCalCrs1stDay + 32) -#define ActChgPrj (ActChgCalCrs1stDay + 33) -#define ActReqRemPrj (ActChgCalCrs1stDay + 34) -#define ActRemPrj (ActChgCalCrs1stDay + 35) -#define ActHidPrj (ActChgCalCrs1stDay + 36) -#define ActShoPrj (ActChgCalCrs1stDay + 37) -#define ActReqAddStdPrj (ActChgCalCrs1stDay + 38) -#define ActReqAddTutPrj (ActChgCalCrs1stDay + 39) -#define ActReqAddEvaPrj (ActChgCalCrs1stDay + 40) -#define ActAddStdPrj (ActChgCalCrs1stDay + 41) -#define ActAddTutPrj (ActChgCalCrs1stDay + 42) -#define ActAddEvaPrj (ActChgCalCrs1stDay + 43) -#define ActReqRemStdPrj (ActChgCalCrs1stDay + 44) -#define ActReqRemTutPrj (ActChgCalCrs1stDay + 45) -#define ActReqRemEvaPrj (ActChgCalCrs1stDay + 46) -#define ActRemStdPrj (ActChgCalCrs1stDay + 47) -#define ActRemTutPrj (ActChgCalCrs1stDay + 48) -#define ActRemEvaPrj (ActChgCalCrs1stDay + 49) +#define ActFilBrwOnePrj (ActChgCalCrs1stDay + 31) +#define ActPrnOnePrj (ActChgCalCrs1stDay + 32) +#define ActNewPrj (ActChgCalCrs1stDay + 33) +#define ActChgPrj (ActChgCalCrs1stDay + 34) +#define ActReqRemPrj (ActChgCalCrs1stDay + 35) +#define ActRemPrj (ActChgCalCrs1stDay + 36) +#define ActHidPrj (ActChgCalCrs1stDay + 37) +#define ActShoPrj (ActChgCalCrs1stDay + 38) +#define ActReqAddStdPrj (ActChgCalCrs1stDay + 39) +#define ActReqAddTutPrj (ActChgCalCrs1stDay + 40) +#define ActReqAddEvaPrj (ActChgCalCrs1stDay + 41) +#define ActAddStdPrj (ActChgCalCrs1stDay + 42) +#define ActAddTutPrj (ActChgCalCrs1stDay + 43) +#define ActAddEvaPrj (ActChgCalCrs1stDay + 44) +#define ActReqRemStdPrj (ActChgCalCrs1stDay + 45) +#define ActReqRemTutPrj (ActChgCalCrs1stDay + 46) +#define ActReqRemEvaPrj (ActChgCalCrs1stDay + 47) +#define ActRemStdPrj (ActChgCalCrs1stDay + 48) +#define ActRemTutPrj (ActChgCalCrs1stDay + 49) +#define ActRemEvaPrj (ActChgCalCrs1stDay + 50) -#define ActSeeTst (ActChgCalCrs1stDay + 50) -#define ActAssTst (ActChgCalCrs1stDay + 51) -#define ActEdiTstQst (ActChgCalCrs1stDay + 52) -#define ActEdiOneTstQst (ActChgCalCrs1stDay + 53) -#define ActReqImpTstQst (ActChgCalCrs1stDay + 54) -#define ActImpTstQst (ActChgCalCrs1stDay + 55) -#define ActLstTstQst (ActChgCalCrs1stDay + 56) -#define ActRcvTstQst (ActChgCalCrs1stDay + 57) -#define ActReqRemTstQst (ActChgCalCrs1stDay + 58) -#define ActRemTstQst (ActChgCalCrs1stDay + 59) -#define ActShfTstQst (ActChgCalCrs1stDay + 60) -#define ActCfgTst (ActChgCalCrs1stDay + 61) -#define ActEnableTag (ActChgCalCrs1stDay + 62) -#define ActDisableTag (ActChgCalCrs1stDay + 63) -#define ActRenTag (ActChgCalCrs1stDay + 64) -#define ActRcvCfgTst (ActChgCalCrs1stDay + 65) +#define ActSeeTst (ActChgCalCrs1stDay + 51) +#define ActAssTst (ActChgCalCrs1stDay + 52) +#define ActEdiTstQst (ActChgCalCrs1stDay + 53) +#define ActEdiOneTstQst (ActChgCalCrs1stDay + 54) +#define ActReqImpTstQst (ActChgCalCrs1stDay + 55) +#define ActImpTstQst (ActChgCalCrs1stDay + 56) +#define ActLstTstQst (ActChgCalCrs1stDay + 57) +#define ActRcvTstQst (ActChgCalCrs1stDay + 58) +#define ActReqRemTstQst (ActChgCalCrs1stDay + 59) +#define ActRemTstQst (ActChgCalCrs1stDay + 60) +#define ActShfTstQst (ActChgCalCrs1stDay + 61) +#define ActCfgTst (ActChgCalCrs1stDay + 62) +#define ActEnableTag (ActChgCalCrs1stDay + 63) +#define ActDisableTag (ActChgCalCrs1stDay + 64) +#define ActRenTag (ActChgCalCrs1stDay + 65) +#define ActRcvCfgTst (ActChgCalCrs1stDay + 66) -#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 66) -#define ActSeeMyTstRes (ActChgCalCrs1stDay + 67) -#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 68) -#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 69) -#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 70) -#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 71) +#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 67) +#define ActSeeMyTstRes (ActChgCalCrs1stDay + 68) +#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 69) +#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 70) +#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 71) +#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 72) -#define ActSeeOneGam (ActChgCalCrs1stDay + 72) -#define ActPlyGam (ActChgCalCrs1stDay + 73) -#define ActPlyGam1stQst (ActChgCalCrs1stDay + 74) -#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 75) -#define ActPlyGamAns (ActChgCalCrs1stDay + 76) -#define ActAnsGam (ActChgCalCrs1stDay + 77) -#define ActFrmNewGam (ActChgCalCrs1stDay + 78) -#define ActEdiOneGam (ActChgCalCrs1stDay + 79) -#define ActNewGam (ActChgCalCrs1stDay + 80) -#define ActChgGam (ActChgCalCrs1stDay + 81) -#define ActReqRemGam (ActChgCalCrs1stDay + 82) -#define ActRemGam (ActChgCalCrs1stDay + 83) -#define ActReqRstGam (ActChgCalCrs1stDay + 84) -#define ActRstGam (ActChgCalCrs1stDay + 85) -#define ActHidGam (ActChgCalCrs1stDay + 86) -#define ActShoGam (ActChgCalCrs1stDay + 87) -#define ActAddOneGamQst (ActChgCalCrs1stDay + 88) -#define ActGamLstTstQst (ActChgCalCrs1stDay + 89) -#define ActAddTstQstToGam (ActChgCalCrs1stDay + 90) -#define ActReqRemGamQst (ActChgCalCrs1stDay + 91) -#define ActRemGamQst (ActChgCalCrs1stDay + 92) -#define ActUp_GamQst (ActChgCalCrs1stDay + 93) -#define ActDwnGamQst (ActChgCalCrs1stDay + 94) +#define ActSeeOneGam (ActChgCalCrs1stDay + 73) +#define ActPlyGam (ActChgCalCrs1stDay + 74) +#define ActPlyGam1stQst (ActChgCalCrs1stDay + 75) +#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 76) +#define ActPlyGamAns (ActChgCalCrs1stDay + 77) +#define ActAnsGam (ActChgCalCrs1stDay + 78) +#define ActFrmNewGam (ActChgCalCrs1stDay + 79) +#define ActEdiOneGam (ActChgCalCrs1stDay + 80) +#define ActNewGam (ActChgCalCrs1stDay + 81) +#define ActChgGam (ActChgCalCrs1stDay + 82) +#define ActReqRemGam (ActChgCalCrs1stDay + 83) +#define ActRemGam (ActChgCalCrs1stDay + 84) +#define ActReqRstGam (ActChgCalCrs1stDay + 85) +#define ActRstGam (ActChgCalCrs1stDay + 86) +#define ActHidGam (ActChgCalCrs1stDay + 87) +#define ActShoGam (ActChgCalCrs1stDay + 88) +#define ActAddOneGamQst (ActChgCalCrs1stDay + 89) +#define ActGamLstTstQst (ActChgCalCrs1stDay + 90) +#define ActAddTstQstToGam (ActChgCalCrs1stDay + 91) +#define ActReqRemGamQst (ActChgCalCrs1stDay + 92) +#define ActRemGamQst (ActChgCalCrs1stDay + 93) +#define ActUp_GamQst (ActChgCalCrs1stDay + 94) +#define ActDwnGamQst (ActChgCalCrs1stDay + 95) -#define ActSeeOneSvy (ActChgCalCrs1stDay + 95) -#define ActAnsSvy (ActChgCalCrs1stDay + 96) -#define ActFrmNewSvy (ActChgCalCrs1stDay + 97) -#define ActEdiOneSvy (ActChgCalCrs1stDay + 98) -#define ActNewSvy (ActChgCalCrs1stDay + 99) -#define ActChgSvy (ActChgCalCrs1stDay + 100) -#define ActReqRemSvy (ActChgCalCrs1stDay + 101) -#define ActRemSvy (ActChgCalCrs1stDay + 102) -#define ActReqRstSvy (ActChgCalCrs1stDay + 103) -#define ActRstSvy (ActChgCalCrs1stDay + 104) -#define ActHidSvy (ActChgCalCrs1stDay + 105) -#define ActShoSvy (ActChgCalCrs1stDay + 106) -#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 107) -#define ActRcvSvyQst (ActChgCalCrs1stDay + 108) -#define ActReqRemSvyQst (ActChgCalCrs1stDay + 109) -#define ActRemSvyQst (ActChgCalCrs1stDay + 110) +#define ActSeeOneSvy (ActChgCalCrs1stDay + 96) +#define ActAnsSvy (ActChgCalCrs1stDay + 97) +#define ActFrmNewSvy (ActChgCalCrs1stDay + 98) +#define ActEdiOneSvy (ActChgCalCrs1stDay + 99) +#define ActNewSvy (ActChgCalCrs1stDay + 100) +#define ActChgSvy (ActChgCalCrs1stDay + 101) +#define ActReqRemSvy (ActChgCalCrs1stDay + 102) +#define ActRemSvy (ActChgCalCrs1stDay + 103) +#define ActReqRstSvy (ActChgCalCrs1stDay + 104) +#define ActRstSvy (ActChgCalCrs1stDay + 105) +#define ActHidSvy (ActChgCalCrs1stDay + 106) +#define ActShoSvy (ActChgCalCrs1stDay + 107) +#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 108) +#define ActRcvSvyQst (ActChgCalCrs1stDay + 109) +#define ActReqRemSvyQst (ActChgCalCrs1stDay + 110) +#define ActRemSvyQst (ActChgCalCrs1stDay + 111) -#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 111) -#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 112) -#define ActEdiExaAnn (ActChgCalCrs1stDay + 113) -#define ActRcvExaAnn (ActChgCalCrs1stDay + 114) -#define ActPrnExaAnn (ActChgCalCrs1stDay + 115) -#define ActReqRemExaAnn (ActChgCalCrs1stDay + 116) -#define ActRemExaAnn (ActChgCalCrs1stDay + 117) -#define ActHidExaAnn (ActChgCalCrs1stDay + 118) -#define ActShoExaAnn (ActChgCalCrs1stDay + 119) +#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 112) +#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 113) +#define ActEdiExaAnn (ActChgCalCrs1stDay + 114) +#define ActRcvExaAnn (ActChgCalCrs1stDay + 115) +#define ActPrnExaAnn (ActChgCalCrs1stDay + 116) +#define ActReqRemExaAnn (ActChgCalCrs1stDay + 117) +#define ActRemExaAnn (ActChgCalCrs1stDay + 118) +#define ActHidExaAnn (ActChgCalCrs1stDay + 119) +#define ActShoExaAnn (ActChgCalCrs1stDay + 120) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 493e9bd95..5ee1df0d3 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -254,13 +254,17 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.17.5 (2017-10-05)" +#define Log_PLATFORM_VERSION "SWAD 17.18 (2017-10-06)" #define CSS_FILE "swad17.0.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.18: Oct 06, 2017 New view in projects for project file browser. (232547 lines) + 1 change necessary in database: +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1697','es','N','Editar archivos proyecto'); + Version 17.17.5: Oct 05, 2017 Fixed bug in contextual icons in records. (232467 lines) Version 17.17.4: Oct 05, 2017 Department is filled automatically with user's department when creating a new project. (232385 lines) Version 17.17.3: Oct 04, 2017 Fixed problems with icons when expanding / contracting a folder. (232383 lines) diff --git a/swad_icon.c b/swad_icon.c index ed8d75890..cfbceacc4 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -202,6 +202,16 @@ void Ico_PutContextualIconToEdit (Act_Action_t NextAction,void (*FuncParams) ()) NULL); } +void Ico_PutContextualIconToViewFiles (Act_Action_t NextAction,void (*FuncParams) ()) + { + extern const char *Txt_Files; + + Lay_PutContextualLink (NextAction,NULL,FuncParams, + "folder64x64.gif", + Txt_Files,NULL, + NULL); + } + void Ico_PutContextualIconToView (Act_Action_t NextAction,void (*FuncParams) ()) { extern const char *Txt_View; diff --git a/swad_icon.h b/swad_icon.h index 96a65be77..21c412908 100644 --- a/swad_icon.h +++ b/swad_icon.h @@ -55,6 +55,7 @@ Ico_IconSet_t Ico_GetIconSetFromStr (const char *Str); void Ico_PutContextualIconToRemove (Act_Action_t NextAction,void (*FuncParams) ()); void Ico_PutContextualIconToEdit (Act_Action_t NextAction,void (*FuncParams) ()); +void Ico_PutContextualIconToViewFiles (Act_Action_t NextAction,void (*FuncParams) ()); void Ico_PutContextualIconToView (Act_Action_t NextAction,void (*FuncParams) ()); void Ico_PutContextualIconToUnhide (Act_Action_t NextAction,void (*FuncParams) ()); void Ico_PutContextualIconToHide (Act_Action_t NextAction,void (*FuncParams) ()); diff --git a/swad_project.c b/swad_project.c index 8b487b4a6..d940832ca 100644 --- a/swad_project.c +++ b/swad_project.c @@ -55,6 +55,7 @@ extern struct Globals Gbl; typedef enum { Prj_LIST_PROJECTS, + Prj_FILE_BROWSER_PROJECT, Prj_PRINT_ONE_PROJECT, Prj_EDIT_ONE_PROJECT, } Prj_ProjectView_t; @@ -263,7 +264,11 @@ static void Prj_ShowProjectsInCurrentPage (void) NumPrj <= Pagination.LastItemVisible; NumPrj++) { + /* Get project data */ Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj - 1]; + Prj_GetDataOfProjectByCod (&Prj); + + /* Show project */ Prj_ShowOneProject (&Prj,Prj_LIST_PROJECTS); } @@ -548,6 +553,43 @@ static void Prj_PutIconToShowAllData (void) NULL); } +/*****************************************************************************/ +/***************** View / edit file browser of one project *******************/ +/*****************************************************************************/ + +void Prj_FileBrowserPrj (void) + { + extern const char *Hlp_ASSESSMENT_Projects; + struct Project Prj; + + /***** Allocate memory for the project *****/ + Prj_AllocMemProject (&Prj); + + /***** Get project data *****/ + Prj.PrjCod = Prj_GetParamPrjCod (); + Prj_GetDataOfProjectByCod (&Prj); + + /***** Start box and table *****/ + Box_StartBoxTable (NULL,Prj.Title,NULL, + Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE,2); + Prj_ShowProjectsHead (true); // Print view + + /***** Write project *****/ + Prj_ShowOneProject (&Prj,Prj_FILE_BROWSER_PROJECT); + + /***** End table *****/ + Tbl_EndTable (); + + /***** Project file browser *****/ + Ale_ShowAlert (Ale_INFO,"Archivos del proyecto"); + + /***** End box *****/ + Box_EndBoxTable (); + + /***** Free memory of the project *****/ + Prj_FreeMemProject (&Prj); + } + /*****************************************************************************/ /********************** Show print view of one project ***********************/ /*****************************************************************************/ @@ -559,8 +601,9 @@ void Prj_PrintOneProject (void) /***** Allocate memory for the project *****/ Prj_AllocMemProject (&Prj); - /***** Get the code of the project *****/ + /***** Get project data *****/ Prj.PrjCod = Prj_GetParamPrjCod (); + Prj_GetDataOfProjectByCod (&Prj); /***** Write header *****/ Lay_WriteHeaderClassPhoto (true,false, @@ -602,9 +645,6 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie extern const char *Txt_Required_materials; static unsigned UniqueId = 0; - /***** Get data of this project *****/ - Prj_GetDataOfProjectByCod (Prj); - /***** Write first row of data of this project *****/ /* Forms to remove/edit this project */ fprintf (Gbl.F.Out,"" @@ -719,31 +759,49 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie Prj_ShowOneProjectMembers (Prj,ProjectView); /***** Link to show hidden info *****/ - if (ProjectView == Prj_LIST_PROJECTS) + switch (ProjectView) { - fprintf (Gbl.F.Out,"" - "", - UniqueId,Gbl.RowEvenOdd); - Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more); - fprintf (Gbl.F.Out,"" - ""); + case Prj_LIST_PROJECTS: + case Prj_FILE_BROWSER_PROJECT: + fprintf (Gbl.F.Out,"" + ""); + 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,"" - ""); + fprintf (Gbl.F.Out,"" + ""); + Prj_PutIconToToggleProject (UniqueId,"less64x64.png",Txt_See_less); + fprintf (Gbl.F.Out,"" + ""); + break; + default: + break; } /***** Proposal *****/ - if (ProjectView == Prj_LIST_PROJECTS) - fprintf (Gbl.F.Out,"" - "" - "" + "" + "" "%s:" "" @@ -986,13 +1044,21 @@ static void Prj_ShowOneProjectTxtField (struct Project *Prj, Str_InsertLinks (TxtField,Cns_MAX_BYTES_TEXT,60); // Insert links /***** Write row with label and text *****/ - if (ProjectView == Prj_LIST_PROJECTS) - fprintf (Gbl.F.Out,"" - "" - "" + "" + "" "%s:" "" @@ -1042,13 +1108,21 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj, /***** Write row with label and text *****/ PutLink = (ProjectView == Prj_LIST_PROJECTS && Prj->URL[0]); - if (ProjectView == Prj_LIST_PROJECTS) - fprintf (Gbl.F.Out,"" - "" - "" + "" + "" "%s:" "" @@ -1150,24 +1224,20 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, switch (ProjectView) { case Prj_LIST_PROJECTS: - fprintf (Gbl.F.Out,"%s:" - "", - Gbl.RowEvenOdd, - Prj->Hidden ? "ASG_LABEL_LIGHT" : - "ASG_LABEL", - NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInProject] : - Txt_PROJECT_ROLES_PLURAL_Abc[RoleInProject], - Gbl.RowEvenOdd, - Prj->Hidden ? "DAT_LIGHT" : - "DAT"); - break; + case Prj_FILE_BROWSER_PROJECT: case Prj_PRINT_ONE_PROJECT: - fprintf (Gbl.F.Out,"%s:" - "", + fprintf (Gbl.F.Out,"%s:" + "Hidden ? "ASG_LABEL_LIGHT" : "ASG_LABEL", 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) + fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd); + fprintf (Gbl.F.Out," %s\">", Prj->Hidden ? "DAT_LIGHT" : "DAT"); break; @@ -1680,6 +1750,10 @@ static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden) /***** Put form to edit project *****/ Ico_PutContextualIconToEdit (ActEdiOnePrj,Prj_PutParams); + + /***** Put form to view project file browser *****/ + if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) + Ico_PutContextualIconToViewFiles (ActFilBrwOnePrj,Prj_PutParams); } /***** Put form to print project *****/ diff --git a/swad_project.h b/swad_project.h index abc1199a6..2b8c2d3c5 100644 --- a/swad_project.h +++ b/swad_project.h @@ -109,6 +109,9 @@ typedef enum void Prj_SeeProjects (void); void Prj_ShowTableAllProjects (void); void Prj_PutParamWhichPrjs (void); + +void Prj_FileBrowserPrj (void); + void Prj_PrintOneProject (void); void Prj_ReqAddStd (void);