From 95ebf5b9cd428de4be12845411cad277e448bd0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 6 Oct 2017 20:56:01 +0200 Subject: [PATCH] Version 17.20 --- swad_action.c | 64 +++++++++++++- swad_action.h | 203 ++++++++++++++++++++++++-------------------- swad_changelog.h | 23 ++++- swad_file_browser.c | 80 ++++++++++++++--- swad_file_browser.h | 2 - swad_project.c | 16 ++-- swad_project.h | 1 + 7 files changed, 268 insertions(+), 121 deletions(-) diff --git a/swad_action.c b/swad_action.c index e816277cd..8cdba2050 100644 --- a/swad_action.c +++ b/swad_action.c @@ -456,7 +456,6 @@ 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 @@ -477,6 +476,26 @@ Assessment: 336. ActRemTutPrj Remove a tutor from a project 337. ActRemEvaPrj Remove an emulator from a project + NEW. ActAdmDocPrj Admin. project documents + NEW. ActReqRemFilBrf Request removal of a file from project documents + NEW. ActRemFilBrf Remove a file from project documents + NEW. ActRemFolBrf Remove an empty folder from project documents + NEW. ActCopBrf Set source of copy in project documents + NEW. ActPasBrf Paste a folder or file into project documents + NEW. ActRemTreBrf Remove a non empty folder from project documents + NEW. ActFrmCreBrf Form to create a folder or file in project documents + NEW. ActCreFolBrf Create a new folder in project documents + NEW. ActCreLnkBrf Create a new link in project documents + NEW. ActRenFolBrf Rename a folder in project documents + NEW. ActRcvFilBrfDZ Receive a file in project documents using Dropzone.js + NEW. ActRcvFilBrfCla Receive a file in project documents using the classic way + NEW. ActExpBrf Expand a folder in project documents + NEW. ActConBrf Contract a folder in project documents + NEW. ActZIPBrf Compress a folder in project documents + NEW. ActReqDatBrf Ask for metadata of a file in project documents + NEW. ActChgDatBrf Change metadata of a file in project documents + NEW. ActDowBrf Download a file from project documents + 338. ActSeeTst Show the seft-assessment test 339. ActAssTst Assess a self-assessment test 330. ActEdiTstQst Request the edition of self-assessment questions @@ -563,6 +582,7 @@ Files: 417. ActAdmAsgWrkUsr One user sends works of the course 418. ActReqAsgWrkCrs A teacher requests edition of works sent to the course 419. ActSeeAdmMrk Marks zone (see or admin) + 1244. ActAdmBrf Show the briefcase of private archives 420. ActChgToSeeDocIns Change to see institution documents @@ -1459,7 +1479,6 @@ Profile: 1241. ActFrmMyAcc Show form to the creation or change of user's account 1242. ActReqEdiRecCom Request the edition of the record with the personal data of the user 1243. ActEdiPrf Show forms to edit preferences - 1244. ActAdmBrf Show the briefcase of private archives 1245. ActReqSndNewPwd Show form to send a new password via email 1246. ActSndNewPwd Send a new password via email @@ -1960,7 +1979,6 @@ 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}, @@ -1981,6 +1999,26 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActRemTutPrj */{1694,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemTut ,NULL}, /* ActRemEvaPrj */{1695,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemEva ,NULL}, + /* ActAdmDocPrj */{1697,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_FileBrowserPrj ,NULL}, + /* ActReqRemFilDocPrj*/{1698,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_AskRemFileFromTree ,NULL}, + /* ActRemFilDocPrj */{1699,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemFileFromTree ,NULL}, + /* ActRemFolDocPrj */{1700,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemFolderFromTree ,NULL}, + /* ActCopDocPrj */{1701,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_CopyFromFileBrowser ,NULL}, + /* ActPasDocPrj */{1702,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_PasteIntoFileBrowser ,NULL}, + /* ActRemTreDocPrj */{1703,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemSubtreeInFileBrowser ,NULL}, + /* ActFrmCreDocPrj */{1704,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFormFileBrowser ,NULL}, + /* ActCreFolDocPrj */{1705,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RecFolderFileBrowser ,NULL}, + /* ActCreLnkDocPrj */{1706,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RecLinkFileBrowser ,NULL}, + /* ActRenFolDocPrj */{1707,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RenFolderFileBrowser ,NULL}, + /* ActRcvFilDocPrjDZ */{1708,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_UPLOAD_FILE,Brw_RcvFileInFileBrwDropzone ,NULL ,NULL}, + /* ActRcvFilDocPrjCla*/{1709,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Brw_RcvFileInFileBrwClassic ,NULL}, + /* ActExpDocPrj */{1710,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_204_NO_CONT,Brw_ExpandFileTree ,NULL ,NULL}, + /* ActConDocPrj */{1711,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_204_NO_CONT,Brw_ContractFileTree ,NULL ,NULL}, + /* ActZIPDocPrj */{1712,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ZIP_CompressFileTree ,NULL}, + /* ActReqDatDocPrj */{1713,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileMetadata ,NULL}, + /* ActChgDatDocPrj */{1714,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL}, + /* ActDowDocPrj */{1715,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL}, + /* ActSeeTst */{ 29,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowNewTest ,NULL}, /* ActAssTst */{ 98,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_AssessTest ,NULL}, @@ -4803,7 +4841,25 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActRemTutPrj, // #1694 ActRemEvaPrj, // #1695 ActSeeTblAllPrj, // #1696 - ActFilBrwOnePrj, // #1697 + ActAdmDocPrj, // #1697 + ActReqRemFilDocPrj, // #1698 + ActRemFilDocPrj, // #1699 + ActRemFolDocPrj, // #1700 + ActCopDocPrj, // #1701 + ActPasDocPrj, // #1702 + ActRemTreDocPrj, // #1703 + ActFrmCreDocPrj, // #1704 + ActCreFolDocPrj, // #1705 + ActCreLnkDocPrj, // #1706 + ActRenFolDocPrj, // #1707 + ActRcvFilDocPrjDZ, // #1708 + ActRcvFilDocPrjCla, // #1709 + ActExpDocPrj, // #1710 + ActConDocPrj, // #1711 + ActZIPDocPrj, // #1712 + ActReqDatDocPrj, // #1713 + ActChgDatDocPrj, // #1714 + ActDowDocPrj, // #1715 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index a793905a9..2ab0d600c 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 + 120 + 437 + 165 + 172 + 42 + 14 + 76) +#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 138 + 437 + 165 + 172 + 42 + 14 + 76) -#define Act_MAX_ACTION_COD 1697 +#define Act_MAX_ACTION_COD 1715 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -467,101 +467,120 @@ 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 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 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 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 ActAdmDocPrj (ActChgCalCrs1stDay + 50) +#define ActReqRemFilDocPrj (ActChgCalCrs1stDay + 51) +#define ActRemFilDocPrj (ActChgCalCrs1stDay + 52) +#define ActRemFolDocPrj (ActChgCalCrs1stDay + 53) +#define ActCopDocPrj (ActChgCalCrs1stDay + 54) +#define ActPasDocPrj (ActChgCalCrs1stDay + 55) +#define ActRemTreDocPrj (ActChgCalCrs1stDay + 56) +#define ActFrmCreDocPrj (ActChgCalCrs1stDay + 57) +#define ActCreFolDocPrj (ActChgCalCrs1stDay + 58) +#define ActCreLnkDocPrj (ActChgCalCrs1stDay + 59) +#define ActRenFolDocPrj (ActChgCalCrs1stDay + 60) +#define ActRcvFilDocPrjDZ (ActChgCalCrs1stDay + 61) +#define ActRcvFilDocPrjCla (ActChgCalCrs1stDay + 62) +#define ActExpDocPrj (ActChgCalCrs1stDay + 63) +#define ActConDocPrj (ActChgCalCrs1stDay + 64) +#define ActZIPDocPrj (ActChgCalCrs1stDay + 65) +#define ActReqDatDocPrj (ActChgCalCrs1stDay + 66) +#define ActChgDatDocPrj (ActChgCalCrs1stDay + 67) +#define ActDowDocPrj (ActChgCalCrs1stDay + 68) -#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 ActSeeTst (ActChgCalCrs1stDay + 69) +#define ActAssTst (ActChgCalCrs1stDay + 70) +#define ActEdiTstQst (ActChgCalCrs1stDay + 71) +#define ActEdiOneTstQst (ActChgCalCrs1stDay + 72) +#define ActReqImpTstQst (ActChgCalCrs1stDay + 73) +#define ActImpTstQst (ActChgCalCrs1stDay + 74) +#define ActLstTstQst (ActChgCalCrs1stDay + 75) +#define ActRcvTstQst (ActChgCalCrs1stDay + 76) +#define ActReqRemTstQst (ActChgCalCrs1stDay + 77) +#define ActRemTstQst (ActChgCalCrs1stDay + 78) +#define ActShfTstQst (ActChgCalCrs1stDay + 79) +#define ActCfgTst (ActChgCalCrs1stDay + 80) +#define ActEnableTag (ActChgCalCrs1stDay + 81) +#define ActDisableTag (ActChgCalCrs1stDay + 82) +#define ActRenTag (ActChgCalCrs1stDay + 83) +#define ActRcvCfgTst (ActChgCalCrs1stDay + 84) -#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 ActReqSeeMyTstRes (ActChgCalCrs1stDay + 85) +#define ActSeeMyTstRes (ActChgCalCrs1stDay + 86) +#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 87) +#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 88) +#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 89) +#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 90) -#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 ActSeeOneGam (ActChgCalCrs1stDay + 91) +#define ActPlyGam (ActChgCalCrs1stDay + 92) +#define ActPlyGam1stQst (ActChgCalCrs1stDay + 93) +#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 94) +#define ActPlyGamAns (ActChgCalCrs1stDay + 95) +#define ActAnsGam (ActChgCalCrs1stDay + 96) +#define ActFrmNewGam (ActChgCalCrs1stDay + 97) +#define ActEdiOneGam (ActChgCalCrs1stDay + 98) +#define ActNewGam (ActChgCalCrs1stDay + 99) +#define ActChgGam (ActChgCalCrs1stDay + 100) +#define ActReqRemGam (ActChgCalCrs1stDay + 101) +#define ActRemGam (ActChgCalCrs1stDay + 102) +#define ActReqRstGam (ActChgCalCrs1stDay + 103) +#define ActRstGam (ActChgCalCrs1stDay + 104) +#define ActHidGam (ActChgCalCrs1stDay + 105) +#define ActShoGam (ActChgCalCrs1stDay + 106) +#define ActAddOneGamQst (ActChgCalCrs1stDay + 107) +#define ActGamLstTstQst (ActChgCalCrs1stDay + 108) +#define ActAddTstQstToGam (ActChgCalCrs1stDay + 109) +#define ActReqRemGamQst (ActChgCalCrs1stDay + 100) +#define ActRemGamQst (ActChgCalCrs1stDay + 111) +#define ActUp_GamQst (ActChgCalCrs1stDay + 112) +#define ActDwnGamQst (ActChgCalCrs1stDay + 113) -#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) +#define ActSeeOneSvy (ActChgCalCrs1stDay + 114) +#define ActAnsSvy (ActChgCalCrs1stDay + 115) +#define ActFrmNewSvy (ActChgCalCrs1stDay + 116) +#define ActEdiOneSvy (ActChgCalCrs1stDay + 117) +#define ActNewSvy (ActChgCalCrs1stDay + 118) +#define ActChgSvy (ActChgCalCrs1stDay + 119) +#define ActReqRemSvy (ActChgCalCrs1stDay + 120) +#define ActRemSvy (ActChgCalCrs1stDay + 121) +#define ActReqRstSvy (ActChgCalCrs1stDay + 122) +#define ActRstSvy (ActChgCalCrs1stDay + 123) +#define ActHidSvy (ActChgCalCrs1stDay + 124) +#define ActShoSvy (ActChgCalCrs1stDay + 125) +#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 126) +#define ActRcvSvyQst (ActChgCalCrs1stDay + 127) +#define ActReqRemSvyQst (ActChgCalCrs1stDay + 128) +#define ActRemSvyQst (ActChgCalCrs1stDay + 129) + +#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 130) +#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 131) +#define ActEdiExaAnn (ActChgCalCrs1stDay + 132) +#define ActRcvExaAnn (ActChgCalCrs1stDay + 133) +#define ActPrnExaAnn (ActChgCalCrs1stDay + 134) +#define ActReqRemExaAnn (ActChgCalCrs1stDay + 135) +#define ActRemExaAnn (ActChgCalCrs1stDay + 136) +#define ActHidExaAnn (ActChgCalCrs1stDay + 137) +#define ActShoExaAnn (ActChgCalCrs1stDay + 138) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 12b461b3b..d367c0ba8 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -254,13 +254,34 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.19 (2017-10-06)" +#define Log_PLATFORM_VERSION "SWAD 17.20 (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.20: Oct 06, 2017 New file browser for project documents. Not finished. (232915 lines) + 18 changes necessary in database: +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1698','es','N','Subir archivo a docs. proyecto (ant.)'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1699','es','N','Eliminar archivo docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1700','es','N','Crear carpeta en docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1701','es','N','Eliminar carpeta docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1702','es','N','Renombrar carpeta en docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1703','es','N','Eliminar árbol docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1704','es','N','Solicitar elim. arch. docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1705','es','N','Copiar de docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1706','es','N','Pegar en docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1707','es','N','Expandir carpeta docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1708','es','N','Contraer carpeta docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1709','es','N','Solic. nuevo arch/carp docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1710','es','N','Ver datos arch. docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1711','es','N','Cambiar datos arch. docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1712','es','N','Descargar arch. docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1713','es','N','Crear ZIP carpeta docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1714','es','N','Subir archivo a docs. proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1715','es','N','Crear enlace en docs. proyecto'); + Version 17.19: Oct 06, 2017 New file browser for project documents. Not finished. (232781 lines) Version 17.18: Oct 06, 2017 New view in projects for project file browser. (232547 lines) 1 change necessary in database: diff --git a/swad_file_browser.c b/swad_file_browser.c index 8ecf77f50..6b7c998fd 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -1513,11 +1513,11 @@ static void Brw_PutCheckboxFullTree (void); static void Brw_PutParamsFullTree (void); static bool Brw_GetFullTreeFromForm (void); -bool Brw_GetIfGroupFileBrowser (void); -bool Brw_GetIfCrsAssigWorksFileBrowser (void); - -static bool Brw_GetIfUsrAssigWorksFileBrowser (void); +static bool Brw_GetIfGroupFileBrowser (void); +static bool Brw_GetIfProjectFileBrowser (void); static bool Brw_GetIfBriefcaseFileBrowser (void); +static bool Brw_GetIfUsrAssigWorksFileBrowser (void); +static bool Brw_GetIfCrsAssigWorksFileBrowser (void); static void Brw_GetAndUpdateDateLastAccFileBrowser (void); static long Brw_GetGrpLastAccZone (const char *FieldNameDB); @@ -2298,7 +2298,11 @@ void Brw_GetParAndInitFileBrowser (void) Brw_SetFullPathInTree (Gbl.FileBrowser.Priv.PathInTreeUntilFilFolLnk, Gbl.FileBrowser.FilFolLnkName); - if (Brw_GetIfCrsAssigWorksFileBrowser ()) + /***** Get other parameters *****/ + if (Brw_GetIfProjectFileBrowser ()) + /* Get project code */ + Gbl.CurrentCrs.Prjs.PrjCod = Prj_GetParamPrjCod (); + else if (Brw_GetIfCrsAssigWorksFileBrowser ()) { /* Get lists of the selected users */ Usr_GetListsSelectedUsrsCods (); @@ -2527,11 +2531,13 @@ void Brw_PutParamsFileBrowser (Act_Action_t NextAction, const char *PathInTree,const char *FileFolderName, Brw_FileType_t FileType,long FilCod) { - if (Brw_GetIfGroupFileBrowser ()) + if (Brw_GetIfGroupFileBrowser ()) // This file browser needs specify a group /***** Group code *****/ Grp_PutParamGrpCod (Gbl.CurrentCrs.Grps.GrpCod); - else - if (NextAction != ActUnk) + else if (Brw_GetIfProjectFileBrowser ()) // This file browser needs specify a project + /***** Project code *****/ + Prj_PutParamPrjCod (Gbl.CurrentCrs.Prjs.PrjCod); + else if (NextAction != ActUnk) { if (Brw_GetIfCrsAssigWorksFileBrowser ()) { @@ -2658,13 +2664,19 @@ static void Brw_SetPathFileBrowser (void) case Brw_SHOW_DOCUM_INS: case Brw_ADMI_DOCUM_INS: case Brw_ADMI_SHARE_INS: + /* Create a directory for institutions */ sprintf (Path,"%s/%s", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS); Fil_CreateDirIfNotExists (Path); + + /* Create a directory for all institutions which codes end in + institution-code mod 100 */ sprintf (Path,"%s/%s/%02u", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS, (unsigned) (Gbl.CurrentIns.Ins.InsCod % 100)); Fil_CreateDirIfNotExists (Path); + + /* Create path to the current institution */ sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_INS, (unsigned) (Gbl.CurrentIns.Ins.InsCod % 100), @@ -2673,13 +2685,19 @@ static void Brw_SetPathFileBrowser (void) case Brw_SHOW_DOCUM_CTR: case Brw_ADMI_DOCUM_CTR: case Brw_ADMI_SHARE_CTR: + /* Create a directory for centres */ sprintf (Path,"%s/%s", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR); Fil_CreateDirIfNotExists (Path); + + /* Create a directory for all centres which codes end in + centre-code mod 100 */ sprintf (Path,"%s/%s/%02u", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100)); Fil_CreateDirIfNotExists (Path); + + /* Create path to the current centre */ sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CTR, (unsigned) (Gbl.CurrentCtr.Ctr.CtrCod % 100), @@ -2688,13 +2706,19 @@ static void Brw_SetPathFileBrowser (void) case Brw_SHOW_DOCUM_DEG: case Brw_ADMI_DOCUM_DEG: case Brw_ADMI_SHARE_DEG: + /* Create a directory for degrees */ sprintf (Path,"%s/%s", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG); Fil_CreateDirIfNotExists (Path); + + /* Create a directory for all degrees which codes end in + degree-code mod 100 */ sprintf (Path,"%s/%s/%02u", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG, (unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100)); Fil_CreateDirIfNotExists (Path); + + /* Create path to the current degree */ sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%u", Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_DEG, (unsigned) (Gbl.CurrentDeg.Deg.DegCod % 100), @@ -2706,6 +2730,7 @@ static void Brw_SetPathFileBrowser (void) case Brw_ADMI_SHARE_CRS: case Brw_SHOW_MARKS_CRS: case Brw_ADMI_MARKS_CRS: + /* Create path to the current course */ Str_Copy (Gbl.FileBrowser.Priv.PathAboveRootFolder, Gbl.CurrentCrs.PathPriv, PATH_MAX); @@ -2716,24 +2741,31 @@ static void Brw_SetPathFileBrowser (void) case Brw_ADMI_SHARE_GRP: case Brw_SHOW_MARKS_GRP: case Brw_ADMI_MARKS_GRP: + /* Create a directory for groups inside the current course */ sprintf (Path,"%s/%s", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_GRP); Fil_CreateDirIfNotExists (Path); + /* Create path to this group */ sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%ld", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_GRP, Gbl.CurrentCrs.Grps.GrpCod); break; case Brw_ADMI_ASSIG_USR: case Brw_ADMI_WORKS_USR: + /* Create a directory for me inside the current course */ sprintf (Path,"%s/%s", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_USR); Fil_CreateDirIfNotExists (Path); + + /* Create a directory for all users whose codes end in + my-user-code mod 100 */ sprintf (Path,"%s/%s/%02u", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_USR, (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100)); Fil_CreateDirIfNotExists (Path); + /* Create path to me */ sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%ld", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_USR, (unsigned) (Gbl.Usrs.Me.UsrDat.UsrCod % 100), @@ -2743,14 +2775,19 @@ static void Brw_SetPathFileBrowser (void) case Brw_ADMI_WORKS_CRS: if (Gbl.Usrs.Other.UsrDat.UsrCod > 0) { + /* Create a directory for this user inside the current course */ sprintf (Path,"%s/%s", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_USR); Fil_CreateDirIfNotExists (Path); + + /* Create a directory for all users whose codes end in + user-code mod 100 */ sprintf (Path,"%s/%s/%02u", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_USR, (unsigned) (Gbl.Usrs.Other.UsrDat.UsrCod % 100)); Fil_CreateDirIfNotExists (Path); + /* Create path to user */ sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%ld", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_USR, (unsigned) (Gbl.Usrs.Other.UsrDat.UsrCod % 100), @@ -2758,13 +2795,23 @@ static void Brw_SetPathFileBrowser (void) } break; case Brw_ADMI_DOCUM_PRJ: + /* Create a directory for projects inside the current course */ sprintf (Path,"%s/%s", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_PRJ); Fil_CreateDirIfNotExists (Path); - sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%ld", + /* Create a directory for all projects which codes end in + project-code mod 100 */ + sprintf (Path,"%s/%s/%02u", + Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_PRJ, + (unsigned) (Gbl.CurrentCrs.Prjs.PrjCod % 100)); + Fil_CreateDirIfNotExists (Path); + + /* Create path to the current project */ + sprintf (Gbl.FileBrowser.Priv.PathAboveRootFolder,"%s/%s/%02u/%ld", Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_PRJ, - Gbl.CurrentCrs.Grps.GrpCod); + (unsigned) (Gbl.CurrentCrs.Prjs.PrjCod % 100), + Gbl.CurrentCrs.Prjs.PrjCod); break; case Brw_ADMI_BRIEF_USR: Str_Copy (Gbl.FileBrowser.Priv.PathAboveRootFolder, @@ -4879,7 +4926,7 @@ static bool Brw_GetFullTreeFromForm (void) /********* Get if the current file browser is a group file browser ***********/ /*****************************************************************************/ -bool Brw_GetIfGroupFileBrowser (void) +static bool Brw_GetIfGroupFileBrowser (void) { switch (Gbl.FileBrowser.Type) { @@ -4895,6 +4942,15 @@ bool Brw_GetIfGroupFileBrowser (void) } } +/*****************************************************************************/ +/******** Get if the current file browser is a project file browser **********/ +/*****************************************************************************/ + +static bool Brw_GetIfProjectFileBrowser (void) + { + return (Gbl.FileBrowser.Type == Brw_ADMI_DOCUM_PRJ); + } + /*****************************************************************************/ /****** Get if the current file browser is course assignments or works *******/ /*****************************************************************************/ @@ -4924,7 +4980,7 @@ static bool Brw_GetIfUsrAssigWorksFileBrowser (void) /****** Get if the current file browser is course assignments or works *******/ /*****************************************************************************/ -bool Brw_GetIfCrsAssigWorksFileBrowser (void) +static bool Brw_GetIfCrsAssigWorksFileBrowser (void) { switch (Gbl.FileBrowser.Type) { diff --git a/swad_file_browser.h b/swad_file_browser.h index 60bcbcaa3..dfbc04d59 100644 --- a/swad_file_browser.h +++ b/swad_file_browser.h @@ -186,8 +186,6 @@ void Brw_RemoveWrkFilesFromDB (long CrsCod,long UsrCod); void Brw_RemoveUsrFilesFromDB (long UsrCod); void Brw_PutHiddenParamFullTreeIfSelected (void); -bool Brw_GetIfGroupFileBrowser (void); -bool Brw_GetIfCrsAssigWorksFileBrowser (void); void Brw_CreateDirDownloadTmp (void); void Brw_AskEditWorksCrs (void); diff --git a/swad_project.c b/swad_project.c index 0be7d03a9..3a73ca9bc 100644 --- a/swad_project.c +++ b/swad_project.c @@ -141,7 +141,6 @@ static bool Prj_GetIfIAmTutorInProject (long PrjCod); static void Prj_PutParams (void); static void Prj_GetDataOfProject (struct Project *Prj,const char *Query); static void Prj_ResetProject (struct Project *Prj); -static void Prj_PutParamPrjCod (long PrjCod); static void Prj_RequestCreatOrEditPrj (long PrjCod); static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject); @@ -568,7 +567,6 @@ void Prj_FileBrowserPrj (void) /***** Get project data *****/ Prj.PrjCod = Prj_GetParamPrjCod (); Prj_GetDataOfProjectByCod (&Prj); - Gbl.CurrentCrs.Prjs.PrjCod = Prj.PrjCod; // Used in file browser /***** Start box and table *****/ Box_StartBoxTable (NULL,Prj.Title,NULL, @@ -578,17 +576,15 @@ void Prj_FileBrowserPrj (void) /***** 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); + + /***** Project file browser *****/ + Gbl.CurrentCrs.Prjs.PrjCod = Prj.PrjCod; // Used in file browser + Brw_ShowFileBrowserOrWorks (); } /*****************************************************************************/ @@ -1754,7 +1750,7 @@ static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden) /***** Put form to view project file browser *****/ if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) - Ico_PutContextualIconToViewFiles (ActFilBrwOnePrj,Prj_PutParams); + Ico_PutContextualIconToViewFiles (ActAdmDocPrj,Prj_PutParams); } /***** Put form to print project *****/ @@ -2146,7 +2142,7 @@ void Prj_FreeListProjects (void) /******************* Write parameter with code of project ********************/ /*****************************************************************************/ -static void Prj_PutParamPrjCod (long PrjCod) +void Prj_PutParamPrjCod (long PrjCod) { Par_PutHiddenParamLong ("PrjCod",PrjCod); } diff --git a/swad_project.h b/swad_project.h index ee24ffb14..7ba571cb3 100644 --- a/swad_project.h +++ b/swad_project.h @@ -140,6 +140,7 @@ void Prj_GetListProjects (void); void Prj_GetDataOfProjectByCod (struct Project *Prj); void Prj_FreeListProjects (void); +void Prj_PutParamPrjCod (long PrjCod); long Prj_GetParamPrjCod (void); void Prj_ReqRemProject (void); void Prj_RemoveProject (void);