mirror of https://github.com/acanas/swad-core.git
Version 17.22
This commit is contained in:
parent
23e78e9294
commit
468a8d1c30
|
@ -477,24 +477,44 @@ Assessment:
|
||||||
337. ActRemEvaPrj Remove an emulator from a project
|
337. ActRemEvaPrj Remove an emulator from a project
|
||||||
|
|
||||||
NEW. ActAdmDocPrj Admin. project documents
|
NEW. ActAdmDocPrj Admin. project documents
|
||||||
NEW. ActReqRemFilBrf Request removal of a file from project documents
|
NEW. ActReqRemFilDocPrj Request removal of a file from project documents
|
||||||
NEW. ActRemFilBrf Remove a file from project documents
|
NEW. ActRemFilDocPrj Remove a file from project documents
|
||||||
NEW. ActRemFolBrf Remove an empty folder from project documents
|
NEW. ActRemFolDocPrj Remove an empty folder from project documents
|
||||||
NEW. ActCopBrf Set source of copy in project documents
|
NEW. ActCopDocPrj Set source of copy in project documents
|
||||||
NEW. ActPasBrf Paste a folder or file into project documents
|
NEW. ActPasDocPrj Paste a folder or file into project documents
|
||||||
NEW. ActRemTreBrf Remove a non empty folder from project documents
|
NEW. ActRemTreDocPrj Remove a non empty folder from project documents
|
||||||
NEW. ActFrmCreBrf Form to create a folder or file in project documents
|
NEW. ActFrmCreDocPrj Form to create a folder or file in project documents
|
||||||
NEW. ActCreFolBrf Create a new folder in project documents
|
NEW. ActCreFolDocPrj Create a new folder in project documents
|
||||||
NEW. ActCreLnkBrf Create a new link in project documents
|
NEW. ActCreLnkDocPrj Create a new link in project documents
|
||||||
NEW. ActRenFolBrf Rename a folder in project documents
|
NEW. ActRenFolDocPrj Rename a folder in project documents
|
||||||
NEW. ActRcvFilBrfDZ Receive a file in project documents using Dropzone.js
|
NEW. ActRcvFilDocPrjDZ Receive a file in project documents using Dropzone.js
|
||||||
NEW. ActRcvFilBrfCla Receive a file in project documents using the classic way
|
NEW. ActRcvFilDocPrjCla Receive a file in project documents using the classic way
|
||||||
NEW. ActExpBrf Expand a folder in project documents
|
NEW. ActExpDocPrj Expand a folder in project documents
|
||||||
NEW. ActConBrf Contract a folder in project documents
|
NEW. ActConDocPrj Contract a folder in project documents
|
||||||
NEW. ActZIPBrf Compress a folder in project documents
|
NEW. ActZIPDocPrj Compress a folder in project documents
|
||||||
NEW. ActReqDatBrf Ask for metadata of a file in project documents
|
NEW. ActReqDatDocPrj Ask for metadata of a file in project documents
|
||||||
NEW. ActChgDatBrf Change metadata of a file in project documents
|
NEW. ActChgDatDocPrj Change metadata of a file in project documents
|
||||||
NEW. ActDowBrf Download a file from project documents
|
NEW. ActDowDocPrj Download a file from project documents
|
||||||
|
|
||||||
|
NEW. ActAdmAssPrj Admin. project assessment
|
||||||
|
NEW. ActReqRemFilAssPrj Request removal of a file from project assessment
|
||||||
|
NEW. ActRemFilAssPrj Remove a file from project assessment
|
||||||
|
NEW. ActRemFolAssPrj Remove an empty folder from project assessment
|
||||||
|
NEW. ActCopAssPrj Set source of copy in project assessment
|
||||||
|
NEW. ActPasAssPrj Paste a folder or file into project assessment
|
||||||
|
NEW. ActRemTreAssPrj Remove a non empty folder from project assessment
|
||||||
|
NEW. ActFrmCreAssPrj Form to create a folder or file in project assessment
|
||||||
|
NEW. ActCreFolAssPrj Create a new folder in project assessment
|
||||||
|
NEW. ActCreLnkAssPrj Create a new link in project assessment
|
||||||
|
NEW. ActRenFolAssPrj Rename a folder in project assessment
|
||||||
|
NEW. ActRcvFilAssPrjDZ Receive a file in project assessment using Dropzone.js
|
||||||
|
NEW. ActRcvFilAssPrjCla Receive a file in project assessment using the classic way
|
||||||
|
NEW. ActExpAssPrj Expand a folder in project assessment
|
||||||
|
NEW. ActConAssPrj Contract a folder in project assessment
|
||||||
|
NEW. ActZIPAssPrj Compress a folder in project assessment
|
||||||
|
NEW. ActReqDatAssPrj Ask for metadata of a file in project assessment
|
||||||
|
NEW. ActChgDatAssPrj Change metadata of a file in project assessment
|
||||||
|
NEW. ActDowAssPrj Download a file from project assessment
|
||||||
|
|
||||||
338. ActSeeTst Show the seft-assessment test
|
338. ActSeeTst Show the seft-assessment test
|
||||||
339. ActAssTst Assess a self-assessment test
|
339. ActAssTst Assess a self-assessment test
|
||||||
|
@ -2019,6 +2039,26 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActChgDatDocPrj */{1714,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,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},
|
/* ActDowDocPrj */{1715,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL},
|
||||||
|
|
||||||
|
/* ActAdmAssPrj */{1716,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,NULL},
|
||||||
|
/* ActReqRemFilAssPrj*/{1717,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_AskRemFileFromTree ,NULL},
|
||||||
|
/* ActRemFilAssPrj */{1718,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemFileFromTree ,NULL},
|
||||||
|
/* ActRemFolAssPrj */{1719,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemFolderFromTree ,NULL},
|
||||||
|
/* ActCopAssPrj */{1720,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_CopyFromFileBrowser ,NULL},
|
||||||
|
/* ActPasAssPrj */{1721,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_PasteIntoFileBrowser ,NULL},
|
||||||
|
/* ActRemTreAssPrj */{1722,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemSubtreeInFileBrowser ,NULL},
|
||||||
|
/* ActFrmCreAssPrj */{1723,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFormFileBrowser ,NULL},
|
||||||
|
/* ActCreFolAssPrj */{1724,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RecFolderFileBrowser ,NULL},
|
||||||
|
/* ActCreLnkAssPrj */{1725,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RecLinkFileBrowser ,NULL},
|
||||||
|
/* ActRenFolAssPrj */{1726,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RenFolderFileBrowser ,NULL},
|
||||||
|
/* ActRcvFilAssPrjDZ */{1727,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_UPLOAD_FILE,Brw_RcvFileInFileBrwDropzone ,NULL ,NULL},
|
||||||
|
/* ActRcvFilAssPrjCla*/{1728,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Brw_RcvFileInFileBrwClassic ,NULL},
|
||||||
|
/* ActExpAssPrj */{1729,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_204_NO_CONT,Brw_ExpandFileTree ,NULL ,NULL},
|
||||||
|
/* ActConAssPrj */{1730,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_204_NO_CONT,Brw_ContractFileTree ,NULL ,NULL},
|
||||||
|
/* ActZIPAssPrj */{1731,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ZIP_CompressFileTree ,NULL},
|
||||||
|
/* ActReqDatAssPrj */{1732,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileMetadata ,NULL},
|
||||||
|
/* ActChgDatAssPrj */{1733,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL},
|
||||||
|
/* ActDowAssPrj */{1734,-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},
|
/* 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},
|
/* ActAssTst */{ 98,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_AssessTest ,NULL},
|
||||||
|
|
||||||
|
@ -4860,6 +4900,25 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActReqDatDocPrj, // #1713
|
ActReqDatDocPrj, // #1713
|
||||||
ActChgDatDocPrj, // #1714
|
ActChgDatDocPrj, // #1714
|
||||||
ActDowDocPrj, // #1715
|
ActDowDocPrj, // #1715
|
||||||
|
ActAdmAssPrj, // #1716
|
||||||
|
ActReqRemFilAssPrj, // #1717
|
||||||
|
ActRemFilAssPrj, // #1718
|
||||||
|
ActRemFolAssPrj, // #1719
|
||||||
|
ActCopAssPrj, // #1720
|
||||||
|
ActPasAssPrj, // #1721
|
||||||
|
ActRemTreAssPrj, // #1722
|
||||||
|
ActFrmCreAssPrj, // #1723
|
||||||
|
ActCreFolAssPrj, // #1724
|
||||||
|
ActCreLnkAssPrj, // #1725
|
||||||
|
ActRenFolAssPrj, // #1726
|
||||||
|
ActRcvFilAssPrjDZ, // #1727
|
||||||
|
ActRcvFilAssPrjCla, // #1728
|
||||||
|
ActExpAssPrj, // #1729
|
||||||
|
ActConAssPrj, // #1730
|
||||||
|
ActZIPAssPrj, // #1731
|
||||||
|
ActReqDatAssPrj, // #1732
|
||||||
|
ActChgDatAssPrj, // #1733
|
||||||
|
ActDowAssPrj, // #1734
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
164
swad_action.h
164
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
|
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 + 138 + 437 + 165 + 172 + 42 + 14 + 76)
|
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 157 + 437 + 165 + 172 + 42 + 14 + 76)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1715
|
#define Act_MAX_ACTION_COD 1734
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||||
|
|
||||||
|
@ -507,80 +507,100 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActChgDatDocPrj (ActChgCalCrs1stDay + 67)
|
#define ActChgDatDocPrj (ActChgCalCrs1stDay + 67)
|
||||||
#define ActDowDocPrj (ActChgCalCrs1stDay + 68)
|
#define ActDowDocPrj (ActChgCalCrs1stDay + 68)
|
||||||
|
|
||||||
#define ActSeeTst (ActChgCalCrs1stDay + 69)
|
#define ActAdmAssPrj (ActChgCalCrs1stDay + 69)
|
||||||
#define ActAssTst (ActChgCalCrs1stDay + 70)
|
#define ActReqRemFilAssPrj (ActChgCalCrs1stDay + 70)
|
||||||
#define ActEdiTstQst (ActChgCalCrs1stDay + 71)
|
#define ActRemFilAssPrj (ActChgCalCrs1stDay + 71)
|
||||||
#define ActEdiOneTstQst (ActChgCalCrs1stDay + 72)
|
#define ActRemFolAssPrj (ActChgCalCrs1stDay + 72)
|
||||||
#define ActReqImpTstQst (ActChgCalCrs1stDay + 73)
|
#define ActCopAssPrj (ActChgCalCrs1stDay + 73)
|
||||||
#define ActImpTstQst (ActChgCalCrs1stDay + 74)
|
#define ActPasAssPrj (ActChgCalCrs1stDay + 74)
|
||||||
#define ActLstTstQst (ActChgCalCrs1stDay + 75)
|
#define ActRemTreAssPrj (ActChgCalCrs1stDay + 75)
|
||||||
#define ActRcvTstQst (ActChgCalCrs1stDay + 76)
|
#define ActFrmCreAssPrj (ActChgCalCrs1stDay + 76)
|
||||||
#define ActReqRemTstQst (ActChgCalCrs1stDay + 77)
|
#define ActCreFolAssPrj (ActChgCalCrs1stDay + 77)
|
||||||
#define ActRemTstQst (ActChgCalCrs1stDay + 78)
|
#define ActCreLnkAssPrj (ActChgCalCrs1stDay + 78)
|
||||||
#define ActShfTstQst (ActChgCalCrs1stDay + 79)
|
#define ActRenFolAssPrj (ActChgCalCrs1stDay + 79)
|
||||||
#define ActCfgTst (ActChgCalCrs1stDay + 80)
|
#define ActRcvFilAssPrjDZ (ActChgCalCrs1stDay + 80)
|
||||||
#define ActEnableTag (ActChgCalCrs1stDay + 81)
|
#define ActRcvFilAssPrjCla (ActChgCalCrs1stDay + 81)
|
||||||
#define ActDisableTag (ActChgCalCrs1stDay + 82)
|
#define ActExpAssPrj (ActChgCalCrs1stDay + 82)
|
||||||
#define ActRenTag (ActChgCalCrs1stDay + 83)
|
#define ActConAssPrj (ActChgCalCrs1stDay + 83)
|
||||||
#define ActRcvCfgTst (ActChgCalCrs1stDay + 84)
|
#define ActZIPAssPrj (ActChgCalCrs1stDay + 84)
|
||||||
|
#define ActReqDatAssPrj (ActChgCalCrs1stDay + 85)
|
||||||
|
#define ActChgDatAssPrj (ActChgCalCrs1stDay + 86)
|
||||||
|
#define ActDowAssPrj (ActChgCalCrs1stDay + 87)
|
||||||
|
|
||||||
#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 85)
|
#define ActSeeTst (ActChgCalCrs1stDay + 88)
|
||||||
#define ActSeeMyTstRes (ActChgCalCrs1stDay + 86)
|
#define ActAssTst (ActChgCalCrs1stDay + 89)
|
||||||
#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 87)
|
#define ActEdiTstQst (ActChgCalCrs1stDay + 90)
|
||||||
#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 88)
|
#define ActEdiOneTstQst (ActChgCalCrs1stDay + 91)
|
||||||
#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 89)
|
#define ActReqImpTstQst (ActChgCalCrs1stDay + 92)
|
||||||
#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 90)
|
#define ActImpTstQst (ActChgCalCrs1stDay + 93)
|
||||||
|
#define ActLstTstQst (ActChgCalCrs1stDay + 94)
|
||||||
|
#define ActRcvTstQst (ActChgCalCrs1stDay + 95)
|
||||||
|
#define ActReqRemTstQst (ActChgCalCrs1stDay + 96)
|
||||||
|
#define ActRemTstQst (ActChgCalCrs1stDay + 97)
|
||||||
|
#define ActShfTstQst (ActChgCalCrs1stDay + 98)
|
||||||
|
#define ActCfgTst (ActChgCalCrs1stDay + 99)
|
||||||
|
#define ActEnableTag (ActChgCalCrs1stDay + 100)
|
||||||
|
#define ActDisableTag (ActChgCalCrs1stDay + 101)
|
||||||
|
#define ActRenTag (ActChgCalCrs1stDay + 102)
|
||||||
|
#define ActRcvCfgTst (ActChgCalCrs1stDay + 103)
|
||||||
|
|
||||||
#define ActSeeOneGam (ActChgCalCrs1stDay + 91)
|
#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 104)
|
||||||
#define ActPlyGam (ActChgCalCrs1stDay + 92)
|
#define ActSeeMyTstRes (ActChgCalCrs1stDay + 105)
|
||||||
#define ActPlyGam1stQst (ActChgCalCrs1stDay + 93)
|
#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 106)
|
||||||
#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 94)
|
#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 107)
|
||||||
#define ActPlyGamAns (ActChgCalCrs1stDay + 95)
|
#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 108)
|
||||||
#define ActAnsGam (ActChgCalCrs1stDay + 96)
|
#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 109)
|
||||||
#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 ActSeeOneSvy (ActChgCalCrs1stDay + 114)
|
#define ActSeeOneGam (ActChgCalCrs1stDay + 110)
|
||||||
#define ActAnsSvy (ActChgCalCrs1stDay + 115)
|
#define ActPlyGam (ActChgCalCrs1stDay + 111)
|
||||||
#define ActFrmNewSvy (ActChgCalCrs1stDay + 116)
|
#define ActPlyGam1stQst (ActChgCalCrs1stDay + 112)
|
||||||
#define ActEdiOneSvy (ActChgCalCrs1stDay + 117)
|
#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 113)
|
||||||
#define ActNewSvy (ActChgCalCrs1stDay + 118)
|
#define ActPlyGamAns (ActChgCalCrs1stDay + 114)
|
||||||
#define ActChgSvy (ActChgCalCrs1stDay + 119)
|
#define ActAnsGam (ActChgCalCrs1stDay + 115)
|
||||||
#define ActReqRemSvy (ActChgCalCrs1stDay + 120)
|
#define ActFrmNewGam (ActChgCalCrs1stDay + 116)
|
||||||
#define ActRemSvy (ActChgCalCrs1stDay + 121)
|
#define ActEdiOneGam (ActChgCalCrs1stDay + 117)
|
||||||
#define ActReqRstSvy (ActChgCalCrs1stDay + 122)
|
#define ActNewGam (ActChgCalCrs1stDay + 118)
|
||||||
#define ActRstSvy (ActChgCalCrs1stDay + 123)
|
#define ActChgGam (ActChgCalCrs1stDay + 119)
|
||||||
#define ActHidSvy (ActChgCalCrs1stDay + 124)
|
#define ActReqRemGam (ActChgCalCrs1stDay + 120)
|
||||||
#define ActShoSvy (ActChgCalCrs1stDay + 125)
|
#define ActRemGam (ActChgCalCrs1stDay + 121)
|
||||||
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 126)
|
#define ActReqRstGam (ActChgCalCrs1stDay + 122)
|
||||||
#define ActRcvSvyQst (ActChgCalCrs1stDay + 127)
|
#define ActRstGam (ActChgCalCrs1stDay + 123)
|
||||||
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 128)
|
#define ActHidGam (ActChgCalCrs1stDay + 124)
|
||||||
#define ActRemSvyQst (ActChgCalCrs1stDay + 129)
|
#define ActShoGam (ActChgCalCrs1stDay + 125)
|
||||||
|
#define ActAddOneGamQst (ActChgCalCrs1stDay + 126)
|
||||||
|
#define ActGamLstTstQst (ActChgCalCrs1stDay + 127)
|
||||||
|
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 128)
|
||||||
|
#define ActReqRemGamQst (ActChgCalCrs1stDay + 129)
|
||||||
|
#define ActRemGamQst (ActChgCalCrs1stDay + 130)
|
||||||
|
#define ActUp_GamQst (ActChgCalCrs1stDay + 131)
|
||||||
|
#define ActDwnGamQst (ActChgCalCrs1stDay + 132)
|
||||||
|
|
||||||
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 130)
|
#define ActSeeOneSvy (ActChgCalCrs1stDay + 133)
|
||||||
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 131)
|
#define ActAnsSvy (ActChgCalCrs1stDay + 134)
|
||||||
#define ActEdiExaAnn (ActChgCalCrs1stDay + 132)
|
#define ActFrmNewSvy (ActChgCalCrs1stDay + 135)
|
||||||
#define ActRcvExaAnn (ActChgCalCrs1stDay + 133)
|
#define ActEdiOneSvy (ActChgCalCrs1stDay + 136)
|
||||||
#define ActPrnExaAnn (ActChgCalCrs1stDay + 134)
|
#define ActNewSvy (ActChgCalCrs1stDay + 137)
|
||||||
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 135)
|
#define ActChgSvy (ActChgCalCrs1stDay + 138)
|
||||||
#define ActRemExaAnn (ActChgCalCrs1stDay + 136)
|
#define ActReqRemSvy (ActChgCalCrs1stDay + 139)
|
||||||
#define ActHidExaAnn (ActChgCalCrs1stDay + 137)
|
#define ActRemSvy (ActChgCalCrs1stDay + 140)
|
||||||
#define ActShoExaAnn (ActChgCalCrs1stDay + 138)
|
#define ActReqRstSvy (ActChgCalCrs1stDay + 141)
|
||||||
|
#define ActRstSvy (ActChgCalCrs1stDay + 142)
|
||||||
|
#define ActHidSvy (ActChgCalCrs1stDay + 143)
|
||||||
|
#define ActShoSvy (ActChgCalCrs1stDay + 144)
|
||||||
|
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 145)
|
||||||
|
#define ActRcvSvyQst (ActChgCalCrs1stDay + 146)
|
||||||
|
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 147)
|
||||||
|
#define ActRemSvyQst (ActChgCalCrs1stDay + 148)
|
||||||
|
|
||||||
|
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 149)
|
||||||
|
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 150)
|
||||||
|
#define ActEdiExaAnn (ActChgCalCrs1stDay + 151)
|
||||||
|
#define ActRcvExaAnn (ActChgCalCrs1stDay + 152)
|
||||||
|
#define ActPrnExaAnn (ActChgCalCrs1stDay + 153)
|
||||||
|
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 154)
|
||||||
|
#define ActRemExaAnn (ActChgCalCrs1stDay + 155)
|
||||||
|
#define ActHidExaAnn (ActChgCalCrs1stDay + 156)
|
||||||
|
#define ActShoExaAnn (ActChgCalCrs1stDay + 157)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** Files tab **********************************/
|
/******************************** Files tab **********************************/
|
||||||
|
|
|
@ -256,13 +256,35 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 17.21.6 (2017-10-08)"
|
#define Log_PLATFORM_VERSION "SWAD 17.22 (2017-10-08)"
|
||||||
#define CSS_FILE "swad17.0.css"
|
#define CSS_FILE "swad17.0.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.22: Oct 08, 2017 New file browser for project assessment. (233755 lines)
|
||||||
|
19 changes necessary in database:
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1716','es','N','Editar eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1717','es','N','Subir archivo a eval. proyecto (ant.)');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1718','es','N','Eliminar archivo eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1719','es','N','Crear carpeta en eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1720','es','N','Eliminar carpeta eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1721','es','N','Renombrar carpeta en eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1722','es','N','Eliminar árbol eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1723','es','N','Solicitar elim. arch. eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1724','es','N','Copiar de eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1725','es','N','Pegar en eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1726','es','N','Expandir carpeta eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1727','es','N','Contraer carpeta eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1728','es','N','Solic. nuevo arch/carp eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1729','es','N','Ver datos arch. eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1730','es','N','Cambiar datos arch. eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1731','es','N','Descargar arch. eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1732','es','N','Crear ZIP carpeta eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1733','es','N','Subir archivo a eval. proyecto');
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1734','es','N','Crear enlace en eval. proyecto');
|
||||||
|
|
||||||
Version 17.21.6: Oct 08, 2017 Changes related with project file browsers. (233315 lines)
|
Version 17.21.6: Oct 08, 2017 Changes related with project file browsers. (233315 lines)
|
||||||
Version 17.21.5: Oct 08, 2017 Code refactoring in removal of files from database when removing course. (233317 lines)
|
Version 17.21.5: Oct 08, 2017 Code refactoring in removal of files from database when removing course. (233317 lines)
|
||||||
Version 17.21.4: Oct 08, 2017 Fixed bug: remove group files from database when removing course.
|
Version 17.21.4: Oct 08, 2017 Fixed bug: remove group files from database when removing course.
|
||||||
|
|
|
@ -131,6 +131,7 @@ const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
||||||
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
||||||
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
||||||
|
Brw_ADMI_ASS_PRJ, // Brw_ADMI_ASS_PRJ = 28
|
||||||
};
|
};
|
||||||
// Browsers viewable shown in search for documents
|
// Browsers viewable shown in search for documents
|
||||||
const Brw_FileBrowser_t Brw_FileBrowserForFoundDocs[Brw_NUM_TYPES_FILE_BROWSER] =
|
const Brw_FileBrowser_t Brw_FileBrowserForFoundDocs[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
|
@ -163,6 +164,7 @@ const Brw_FileBrowser_t Brw_FileBrowserForFoundDocs[Brw_NUM_TYPES_FILE_BROWSER]
|
||||||
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
||||||
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
||||||
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
||||||
|
Brw_ADMI_ASS_PRJ, // Brw_ADMI_ASS_PRJ = 28
|
||||||
};
|
};
|
||||||
// Browsers types for database "clipboard" table
|
// Browsers types for database "clipboard" table
|
||||||
static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
|
@ -195,6 +197,7 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_clipboard[Brw_NUM_TYPES_FILE
|
||||||
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
||||||
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
||||||
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
||||||
|
Brw_ADMI_ASS_PRJ, // Brw_ADMI_ASS_PRJ = 28
|
||||||
};
|
};
|
||||||
// Browsers types for database "expanded_folders" table
|
// Browsers types for database "expanded_folders" table
|
||||||
static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
|
@ -227,6 +230,7 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYP
|
||||||
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
||||||
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
||||||
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
||||||
|
Brw_ADMI_ASS_PRJ, // Brw_ADMI_ASS_PRJ = 28
|
||||||
};
|
};
|
||||||
// Browsers types for database "file_browser_last" table
|
// Browsers types for database "file_browser_last" table
|
||||||
// Assignments and works are stored as one in file_browser_last...
|
// Assignments and works are stored as one in file_browser_last...
|
||||||
|
@ -261,6 +265,7 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_file_browser_last[Brw_NUM_TY
|
||||||
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
Brw_ADMI_TCH_CRS, // Brw_ADMI_TCH_CRS = 25
|
||||||
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
Brw_ADMI_TCH_GRP, // Brw_ADMI_TCH_GRP = 26
|
||||||
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
Brw_ADMI_DOC_PRJ, // Brw_ADMI_DOC_PRJ = 27
|
||||||
|
Brw_ADMI_ASS_PRJ, // Brw_ADMI_ASS_PRJ = 28
|
||||||
};
|
};
|
||||||
|
|
||||||
// Internal names of root folders
|
// Internal names of root folders
|
||||||
|
@ -294,6 +299,7 @@ const char *Brw_RootFolderInternalNames[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS, // Brw_ADMI_TCH_CRS
|
Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS, // Brw_ADMI_TCH_CRS
|
||||||
Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS, // Brw_ADMI_TCH_GRP
|
Brw_INTERNAL_NAME_ROOT_FOLDER_TEACHERS, // Brw_ADMI_TCH_GRP
|
||||||
Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_DOCUMENTS, // Brw_ADMI_DOC_PRJ
|
Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_DOCUMENTS, // Brw_ADMI_DOC_PRJ
|
||||||
|
Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_ASSESSMENT, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
|
|
||||||
static const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
|
@ -326,6 +332,7 @@ static const bool Brw_FileBrowserIsEditable[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
true, // Brw_ADMI_TCH_CRS
|
true, // Brw_ADMI_TCH_CRS
|
||||||
true, // Brw_ADMI_TCH_GRP
|
true, // Brw_ADMI_TCH_GRP
|
||||||
true, // Brw_ADMI_DOC_PRJ
|
true, // Brw_ADMI_DOC_PRJ
|
||||||
|
true, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -357,6 +364,7 @@ static const Act_Action_t Brw_ActSeeAdm[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActAdmTchCrs, // Brw_ADMI_TCH_CRS
|
ActAdmTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActAdmTchGrp, // Brw_ADMI_TCH_GRP
|
ActAdmTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActAdmDocPrj, // Brw_ADMI_DOC_PRJ
|
ActAdmDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActAdmAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Act_Action_t Brw_ActFromSeeToAdm[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActFromSeeToAdm[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
|
@ -389,6 +397,7 @@ static const Act_Action_t Brw_ActFromSeeToAdm[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActUnk, // Brw_ADMI_TCH_CRS
|
ActUnk, // Brw_ADMI_TCH_CRS
|
||||||
ActUnk, // Brw_ADMI_TCH_GRP
|
ActUnk, // Brw_ADMI_TCH_GRP
|
||||||
ActUnk, // Brw_ADMI_DOC_PRJ
|
ActUnk, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActUnk, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActFromAdmToSee[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActFromAdmToSee[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -420,6 +429,7 @@ static const Act_Action_t Brw_ActFromAdmToSee[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActUnk, // Brw_ADMI_TCH_CRS
|
ActUnk, // Brw_ADMI_TCH_CRS
|
||||||
ActUnk, // Brw_ADMI_TCH_GRP
|
ActUnk, // Brw_ADMI_TCH_GRP
|
||||||
ActUnk, // Brw_ADMI_DOC_PRJ
|
ActUnk, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActUnk, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
|
@ -452,6 +462,7 @@ static const Act_Action_t Brw_ActChgZone[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActChgToAdmTch, // Brw_ADMI_TCH_CRS
|
ActChgToAdmTch, // Brw_ADMI_TCH_CRS
|
||||||
ActChgToAdmTch, // Brw_ADMI_TCH_GRP
|
ActChgToAdmTch, // Brw_ADMI_TCH_GRP
|
||||||
ActUnk, // Brw_ADMI_DOC_PRJ
|
ActUnk, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActUnk, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -483,6 +494,7 @@ static const Act_Action_t Brw_ActShow[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActUnk, // Brw_ADMI_TCH_CRS
|
ActUnk, // Brw_ADMI_TCH_CRS
|
||||||
ActUnk, // Brw_ADMI_TCH_GRP
|
ActUnk, // Brw_ADMI_TCH_GRP
|
||||||
ActUnk, // Brw_ADMI_DOC_PRJ
|
ActUnk, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActUnk, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -514,6 +526,7 @@ static const Act_Action_t Brw_ActHide[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActUnk, // Brw_ADMI_TCH_CRS
|
ActUnk, // Brw_ADMI_TCH_CRS
|
||||||
ActUnk, // Brw_ADMI_TCH_GRP
|
ActUnk, // Brw_ADMI_TCH_GRP
|
||||||
ActUnk, // Brw_ADMI_DOC_PRJ
|
ActUnk, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActUnk, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -545,6 +558,7 @@ static const Act_Action_t Brw_ActReqDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActReqDatTchCrs, // Brw_ADMI_TCH_CRS
|
ActReqDatTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActReqDatTchGrp, // Brw_ADMI_TCH_GRP
|
ActReqDatTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActReqDatDocPrj, // Brw_ADMI_DOC_PRJ
|
ActReqDatDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActReqDatAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -576,6 +590,7 @@ static const Act_Action_t Brw_ActDowFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActDowTchCrs, // Brw_ADMI_TCH_CRS
|
ActDowTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActDowTchGrp, // Brw_ADMI_TCH_GRP
|
ActDowTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActDowDocPrj, // Brw_ADMI_DOC_PRJ
|
ActDowDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActDowAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -607,6 +622,7 @@ static const Act_Action_t Brw_ActAskRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActReqRemFilTchCrs, // Brw_ADMI_TCH_CRS
|
ActReqRemFilTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActReqRemFilTchGrp, // Brw_ADMI_TCH_GRP
|
ActReqRemFilTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActReqRemFilDocPrj, // Brw_ADMI_DOC_PRJ
|
ActReqRemFilDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActReqRemFilAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -638,6 +654,7 @@ static const Act_Action_t Brw_ActRemoveFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActRemFilTchCrs, // Brw_ADMI_TCH_CRS
|
ActRemFilTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActRemFilTchGrp, // Brw_ADMI_TCH_GRP
|
ActRemFilTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActRemFilDocPrj, // Brw_ADMI_DOC_PRJ
|
ActRemFilDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActRemFilAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -669,6 +686,7 @@ static const Act_Action_t Brw_ActRemoveFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActRemFolTchCrs, // Brw_ADMI_TCH_CRS
|
ActRemFolTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActRemFolTchGrp, // Brw_ADMI_TCH_GRP
|
ActRemFolTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActRemFolDocPrj, // Brw_ADMI_DOC_PRJ
|
ActRemFolDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActRemFolAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -700,6 +718,7 @@ static const Act_Action_t Brw_ActRemoveFolderNotEmpty[Brw_NUM_TYPES_FILE_BROWSER
|
||||||
ActRemTreTchCrs, // Brw_ADMI_TCH_CRS
|
ActRemTreTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActRemTreTchGrp, // Brw_ADMI_TCH_GRP
|
ActRemTreTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActRemTreDocPrj, // Brw_ADMI_DOC_PRJ
|
ActRemTreDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActRemTreAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -731,6 +750,7 @@ static const Act_Action_t Brw_ActCopy[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActCopTchCrs, // Brw_ADMI_TCH_CRS
|
ActCopTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActCopTchGrp, // Brw_ADMI_TCH_GRP
|
ActCopTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActCopDocPrj, // Brw_ADMI_DOC_PRJ
|
ActCopDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActCopAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -762,6 +782,7 @@ static const Act_Action_t Brw_ActPaste[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActPasTchCrs, // Brw_ADMI_TCH_CRS
|
ActPasTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActPasTchGrp, // Brw_ADMI_TCH_GRP
|
ActPasTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActPasDocPrj, // Brw_ADMI_DOC_PRJ
|
ActPasDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActPasAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -793,6 +814,7 @@ static const Act_Action_t Brw_ActFormCreate[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActFrmCreTchCrs, // Brw_ADMI_TCH_CRS
|
ActFrmCreTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActFrmCreTchGrp, // Brw_ADMI_TCH_GRP
|
ActFrmCreTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActFrmCreDocPrj, // Brw_ADMI_DOC_PRJ
|
ActFrmCreDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActFrmCreAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -824,6 +846,7 @@ static const Act_Action_t Brw_ActCreateFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActCreFolTchCrs, // Brw_ADMI_TCH_CRS
|
ActCreFolTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActCreFolTchGrp, // Brw_ADMI_TCH_GRP
|
ActCreFolTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActCreFolDocPrj, // Brw_ADMI_DOC_PRJ
|
ActCreFolDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActCreFolAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -855,6 +878,7 @@ static const Act_Action_t Brw_ActCreateLink[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActCreLnkTchCrs, // Brw_ADMI_TCH_CRS
|
ActCreLnkTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActCreLnkTchGrp, // Brw_ADMI_TCH_GRP
|
ActCreLnkTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActCreLnkDocPrj, // Brw_ADMI_DOC_PRJ
|
ActCreLnkDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActCreLnkAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -886,6 +910,7 @@ static const Act_Action_t Brw_ActRenameFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActRenFolTchCrs, // Brw_ADMI_TCH_CRS
|
ActRenFolTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActRenFolTchGrp, // Brw_ADMI_TCH_GRP
|
ActRenFolTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActRenFolDocPrj, // Brw_ADMI_DOC_PRJ
|
ActRenFolDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActRenFolAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -917,6 +942,7 @@ static const Act_Action_t Brw_ActUploadFileDropzone[Brw_NUM_TYPES_FILE_BROWSER]
|
||||||
ActRcvFilTchCrsDZ, // Brw_ADMI_TCH_CRS
|
ActRcvFilTchCrsDZ, // Brw_ADMI_TCH_CRS
|
||||||
ActRcvFilTchGrpDZ, // Brw_ADMI_TCH_GRP
|
ActRcvFilTchGrpDZ, // Brw_ADMI_TCH_GRP
|
||||||
ActRcvFilDocPrjDZ, // Brw_ADMI_DOC_PRJ
|
ActRcvFilDocPrjDZ, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActRcvFilAssPrjDZ, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -948,6 +974,7 @@ static const Act_Action_t Brw_ActUploadFileClassic[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActRcvFilTchCrsCla, // Brw_ADMI_TCH_CRS
|
ActRcvFilTchCrsCla, // Brw_ADMI_TCH_CRS
|
||||||
ActRcvFilTchGrpCla, // Brw_ADMI_TCH_GRP
|
ActRcvFilTchGrpCla, // Brw_ADMI_TCH_GRP
|
||||||
ActRcvFilDocPrjCla, // Brw_ADMI_DOC_PRJ
|
ActRcvFilDocPrjCla, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActRcvFilAssPrjCla, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -979,6 +1006,7 @@ static const Act_Action_t Brw_ActRefreshAfterUploadFiles[Brw_NUM_TYPES_FILE_BROW
|
||||||
ActAdmTchCrs, // Brw_ADMI_TCH_CRS
|
ActAdmTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActAdmTchGrp, // Brw_ADMI_TCH_GRP
|
ActAdmTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActAdmDocPrj, // Brw_ADMI_DOC_PRJ
|
ActAdmDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActAdmAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -1010,6 +1038,7 @@ static const Act_Action_t Brw_ActExpandFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActExpTchCrs, // Brw_ADMI_TCH_CRS
|
ActExpTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActExpTchGrp, // Brw_ADMI_TCH_GRP
|
ActExpTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActExpDocPrj, // Brw_ADMI_DOC_PRJ
|
ActExpDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActExpAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -1041,6 +1070,7 @@ static const Act_Action_t Brw_ActContractFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActConTchCrs, // Brw_ADMI_TCH_CRS
|
ActConTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActConTchGrp, // Brw_ADMI_TCH_GRP
|
ActConTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActConDocPrj, // Brw_ADMI_DOC_PRJ
|
ActConDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActConAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
{
|
{
|
||||||
|
@ -1072,6 +1102,7 @@ static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActChgDatTchCrs, // Brw_ADMI_TCH_CRS
|
ActChgDatTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActChgDatTchGrp, // Brw_ADMI_TCH_GRP
|
ActChgDatTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActChgDatDocPrj, // Brw_ADMI_DOC_PRJ
|
ActChgDatDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActChgDatAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
|
|
||||||
/* All quotas must be multiple of 1 GiB (Gibibyte)*/
|
/* All quotas must be multiple of 1 GiB (Gibibyte)*/
|
||||||
|
@ -1138,6 +1169,10 @@ static const Act_Action_t Brw_ActRecDatFile[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
#define Brw_MAX_FILES_DOC_PRJ 500
|
#define Brw_MAX_FILES_DOC_PRJ 500
|
||||||
#define Brw_MAX_FOLDS_DOC_PRJ 50
|
#define Brw_MAX_FOLDS_DOC_PRJ 50
|
||||||
|
|
||||||
|
#define Brw_MAX_QUOTA_ASS_PRJ ( 1ULL*Brw_GiB)
|
||||||
|
#define Brw_MAX_FILES_ASS_PRJ 200
|
||||||
|
#define Brw_MAX_FOLDS_ASS_PRJ 20
|
||||||
|
|
||||||
#define Brw_MAX_QUOTA_MARKS_CRS ( 1ULL*Brw_GiB)
|
#define Brw_MAX_QUOTA_MARKS_CRS ( 1ULL*Brw_GiB)
|
||||||
#define Brw_MAX_FILES_MARKS_CRS 500
|
#define Brw_MAX_FILES_MARKS_CRS 500
|
||||||
#define Brw_MAX_FOLDS_MARKS_CRS 50
|
#define Brw_MAX_FOLDS_MARKS_CRS 50
|
||||||
|
@ -1675,7 +1710,10 @@ static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level);
|
||||||
static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level);
|
static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level);
|
||||||
static bool Brw_CheckIfICanModifySharedFileOrFolder (void);
|
static bool Brw_CheckIfICanModifySharedFileOrFolder (void);
|
||||||
static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void);
|
static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void);
|
||||||
static bool Brw_CheckIfICanModifyProjectFileOrFolder (void);
|
static bool Brw_CheckIfICanViewProjectDocuments (Prj_RoleInProject_t MyRoleInProject);
|
||||||
|
static bool Brw_CheckIfICanViewProjectAssessment (Prj_RoleInProject_t MyRoleInProject);
|
||||||
|
static bool Brw_CheckIfICanModifyPrjDocFileOrFolder (void);
|
||||||
|
static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void);
|
||||||
static long Brw_GetPublisherOfSubtree (void);
|
static long Brw_GetPublisherOfSubtree (void);
|
||||||
|
|
||||||
static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row);
|
static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row);
|
||||||
|
@ -2172,6 +2210,29 @@ void Brw_GetParAndInitFileBrowser (void)
|
||||||
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/***** Assessment of project *****/
|
||||||
|
case ActAdmAssPrj:
|
||||||
|
case ActReqRemFilAssPrj:
|
||||||
|
case ActRemFilAssPrj:
|
||||||
|
case ActRemFolAssPrj:
|
||||||
|
case ActCopAssPrj:
|
||||||
|
case ActPasAssPrj:
|
||||||
|
case ActRemTreAssPrj:
|
||||||
|
case ActFrmCreAssPrj:
|
||||||
|
case ActCreFolAssPrj:
|
||||||
|
case ActCreLnkAssPrj:
|
||||||
|
case ActRenFolAssPrj:
|
||||||
|
case ActRcvFilAssPrjDZ:
|
||||||
|
case ActRcvFilAssPrjCla:
|
||||||
|
case ActExpAssPrj:
|
||||||
|
case ActConAssPrj:
|
||||||
|
case ActZIPAssPrj:
|
||||||
|
case ActReqDatAssPrj:
|
||||||
|
case ActChgDatAssPrj:
|
||||||
|
case ActDowAssPrj:
|
||||||
|
Gbl.FileBrowser.Type = Brw_ADMI_ASS_PRJ;
|
||||||
|
break;
|
||||||
|
|
||||||
/***** Marks *****/
|
/***** Marks *****/
|
||||||
case ActSeeAdmMrk: // Access to a marks zone from menu
|
case ActSeeAdmMrk: // Access to a marks zone from menu
|
||||||
/* Set file browser type acording to last group accessed */
|
/* Set file browser type acording to last group accessed */
|
||||||
|
@ -2342,6 +2403,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
||||||
case ActCreFolWrkUsr: case ActRenFolWrkUsr:
|
case ActCreFolWrkUsr: case ActRenFolWrkUsr:
|
||||||
|
|
||||||
case ActCreFolDocPrj: case ActRenFolDocPrj:
|
case ActCreFolDocPrj: case ActRenFolDocPrj:
|
||||||
|
case ActCreFolAssPrj: case ActRenFolAssPrj:
|
||||||
|
|
||||||
case ActCreFolBrf: case ActRenFolBrf:
|
case ActCreFolBrf: case ActRenFolBrf:
|
||||||
/* Get the name of the new folder */
|
/* Get the name of the new folder */
|
||||||
|
@ -2799,6 +2861,7 @@ static void Brw_SetPathFileBrowser (void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
/* Create a directory for projects inside the current course */
|
/* Create a directory for projects inside the current course */
|
||||||
sprintf (Path,"%s/%s",
|
sprintf (Path,"%s/%s",
|
||||||
Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_PRJ);
|
Gbl.CurrentCrs.PathPriv,Cfg_FOLDER_PRJ);
|
||||||
|
@ -3207,6 +3270,11 @@ static void Brw_SetMaxQuota (void)
|
||||||
Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_DOC_PRJ;
|
Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_DOC_PRJ;
|
||||||
Gbl.FileBrowser.Size.MaxFolds = Brw_MAX_FOLDS_DOC_PRJ;
|
Gbl.FileBrowser.Size.MaxFolds = Brw_MAX_FOLDS_DOC_PRJ;
|
||||||
break;
|
break;
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
|
Gbl.FileBrowser.Size.MaxQuota = Brw_MAX_QUOTA_ASS_PRJ;
|
||||||
|
Gbl.FileBrowser.Size.MaxFiles = Brw_MAX_FILES_ASS_PRJ;
|
||||||
|
Gbl.FileBrowser.Size.MaxFolds = Brw_MAX_FOLDS_ASS_PRJ;
|
||||||
|
break;
|
||||||
case Brw_SHOW_MRK_CRS:
|
case Brw_SHOW_MRK_CRS:
|
||||||
case Brw_ADMI_MRK_CRS:
|
case Brw_ADMI_MRK_CRS:
|
||||||
Gbl.FileBrowser.Size.MaxQuota = Brw_MAX_QUOTA_MARKS_CRS;
|
Gbl.FileBrowser.Size.MaxQuota = Brw_MAX_QUOTA_MARKS_CRS;
|
||||||
|
@ -3354,6 +3422,7 @@ static void Brw_ShowFileBrowserProject (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Projects;
|
extern const char *Hlp_ASSESSMENT_Projects;
|
||||||
struct Project Prj;
|
struct Project Prj;
|
||||||
|
Prj_RoleInProject_t MyRoleInProject;
|
||||||
|
|
||||||
/***** Allocate memory for the project *****/
|
/***** Allocate memory for the project *****/
|
||||||
Prj_AllocMemProject (&Prj);
|
Prj_AllocMemProject (&Prj);
|
||||||
|
@ -3361,6 +3430,7 @@ static void Brw_ShowFileBrowserProject (void)
|
||||||
/***** Get project data *****/
|
/***** Get project data *****/
|
||||||
Prj.PrjCod = Prj_GetParamPrjCod ();
|
Prj.PrjCod = Prj_GetParamPrjCod ();
|
||||||
Prj_GetDataOfProjectByCod (&Prj);
|
Prj_GetDataOfProjectByCod (&Prj);
|
||||||
|
Gbl.CurrentCrs.Prjs.PrjCod = Prj.PrjCod;
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
Box_StartBox (NULL,Prj.Title,NULL,
|
Box_StartBox (NULL,Prj.Title,NULL,
|
||||||
|
@ -3370,22 +3440,29 @@ static void Brw_ShowFileBrowserProject (void)
|
||||||
Prj_ShowOneUniqueProject (&Prj);
|
Prj_ShowOneUniqueProject (&Prj);
|
||||||
|
|
||||||
/***** Show project file browsers *****/
|
/***** Show project file browsers *****/
|
||||||
if (Prj_CheckIfICanAdminDocsProject (Prj.PrjCod))
|
MyRoleInProject = Prj_GetMyRoleInProject (Gbl.CurrentCrs.Prjs.PrjCod);
|
||||||
|
if (Prj_CheckIfICanViewProjectFiles (MyRoleInProject))
|
||||||
{
|
{
|
||||||
Brw_WriteTopBeforeShowingFileBrowser ();
|
Brw_WriteTopBeforeShowingFileBrowser ();
|
||||||
|
|
||||||
/***** Show the tree with the project documents *****/
|
if (Brw_CheckIfICanViewProjectDocuments (MyRoleInProject))
|
||||||
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
{
|
||||||
Brw_InitializeFileBrowser ();
|
/***** Show the tree with the project documents *****/
|
||||||
Brw_ShowFileBrowser ();
|
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
||||||
|
Brw_InitializeFileBrowser ();
|
||||||
|
Brw_ShowFileBrowser ();
|
||||||
|
}
|
||||||
|
|
||||||
/***** Show the tree with the project assessment *****/
|
if (Brw_CheckIfICanViewProjectAssessment (MyRoleInProject))
|
||||||
Gbl.FileBrowser.Type = Brw_ADMI_DOC_PRJ;
|
{
|
||||||
Brw_InitializeFileBrowser ();
|
/***** Show the tree with the project assessment *****/
|
||||||
Brw_ShowFileBrowser ();
|
Gbl.FileBrowser.Type = Brw_ADMI_ASS_PRJ;
|
||||||
|
Brw_InitializeFileBrowser ();
|
||||||
|
Brw_ShowFileBrowser ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Ale_ShowAlert (Ale_WARNING,"You have no access to project documents.");
|
Ale_ShowAlert (Ale_WARNING,"You have no access to project files.");
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_EndBox ();
|
Box_EndBox ();
|
||||||
|
@ -3756,6 +3833,7 @@ static void Brw_ShowFileBrowser (void)
|
||||||
extern const char *Txt_Works_area;
|
extern const char *Txt_Works_area;
|
||||||
extern const char *Txt_Temporary_private_storage_area;
|
extern const char *Txt_Temporary_private_storage_area;
|
||||||
extern const char *Txt_Project_documents;
|
extern const char *Txt_Project_documents;
|
||||||
|
extern const char *Txt_Project_assessment;
|
||||||
|
|
||||||
const char *Brw_TitleOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER];
|
const char *Brw_TitleOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
const char *Brw_HelpOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER];
|
const char *Brw_HelpOfFileBrowser[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
|
@ -3790,17 +3868,18 @@ static void Brw_ShowFileBrowser (void)
|
||||||
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_DEG] = Txt_Shared_files_area; // Brw_ADMI_SHR_DEG
|
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_DEG] = Txt_Shared_files_area; // Brw_ADMI_SHR_DEG
|
||||||
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_CTR] = Txt_Shared_files_area; // Brw_ADMI_SHR_CTR
|
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_CTR] = Txt_Shared_files_area; // Brw_ADMI_SHR_CTR
|
||||||
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_INS] = Txt_Shared_files_area; // Brw_ADMI_SHR_INS
|
Brw_TitleOfFileBrowser[Brw_ADMI_SHR_INS] = Txt_Shared_files_area; // Brw_ADMI_SHR_INS
|
||||||
Brw_TitleOfFileBrowser[Brw_ADMI_TCH_CRS] = Txt_Teachers_files_area; // Brw_ADMI_TCH_CRS
|
Brw_TitleOfFileBrowser[Brw_ADMI_TCH_CRS] = Txt_Teachers_files_area; // Brw_ADMI_TCH_CRS
|
||||||
Brw_TitleOfFileBrowser[Brw_ADMI_TCH_GRP] = Txt_Teachers_files_area; // Brw_ADMI_TCH_GRP
|
Brw_TitleOfFileBrowser[Brw_ADMI_TCH_GRP] = Txt_Teachers_files_area; // Brw_ADMI_TCH_GRP
|
||||||
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_PRJ] = Txt_Project_documents; // Brw_ADMI_DOC_PRJ
|
Brw_TitleOfFileBrowser[Brw_ADMI_DOC_PRJ] = Txt_Project_documents; // Brw_ADMI_DOC_PRJ
|
||||||
|
Brw_TitleOfFileBrowser[Brw_ADMI_ASS_PRJ] = Txt_Project_assessment; // Brw_ADMI_ASS_PRJ
|
||||||
|
|
||||||
/***** Set help link of file browser *****/
|
/***** Set help link of file browser *****/
|
||||||
Brw_HelpOfFileBrowser[Brw_UNKNOWN ] = NULL; // Brw_UNKNOWN
|
Brw_HelpOfFileBrowser[Brw_UNKNOWN ] = NULL; // Brw_UNKNOWN
|
||||||
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_CRS] = Hlp_FILES_Documents; // Brw_SHOW_DOC_CRS
|
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_CRS] = Hlp_FILES_Documents; // Brw_SHOW_DOC_CRS
|
||||||
Brw_HelpOfFileBrowser[Brw_SHOW_MRK_CRS] = Hlp_FILES_Marks; // Brw_SHOW_MRK_CRS
|
Brw_HelpOfFileBrowser[Brw_SHOW_MRK_CRS] = Hlp_FILES_Marks; // Brw_SHOW_MRK_CRS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_CRS] = Hlp_FILES_Documents; // Brw_ADMI_DOC_CRS
|
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_CRS] = Hlp_FILES_Documents; // Brw_ADMI_DOC_CRS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_CRS] = Hlp_FILES_Shared; // Brw_ADMI_SHR_CRS
|
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_CRS] = Hlp_FILES_Shared; // Brw_ADMI_SHR_CRS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_GRP] = Hlp_FILES_Shared; // Brw_ADMI_SHR_GRP
|
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_GRP] = Hlp_FILES_Shared; // Brw_ADMI_SHR_GRP
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_WRK_USR] = Hlp_FILES_Homework_for_students; // Brw_ADMI_WRK_USR
|
Brw_HelpOfFileBrowser[Brw_ADMI_WRK_USR] = Hlp_FILES_Homework_for_students; // Brw_ADMI_WRK_USR
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_WRK_CRS] = Hlp_FILES_Homework_for_teachers; // Brw_ADMI_WRK_CRS
|
Brw_HelpOfFileBrowser[Brw_ADMI_WRK_CRS] = Hlp_FILES_Homework_for_teachers; // Brw_ADMI_WRK_CRS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_MRK_CRS] = Hlp_FILES_Marks; // Brw_ADMI_MRK_CRS
|
Brw_HelpOfFileBrowser[Brw_ADMI_MRK_CRS] = Hlp_FILES_Marks; // Brw_ADMI_MRK_CRS
|
||||||
|
@ -3817,12 +3896,13 @@ static void Brw_ShowFileBrowser (void)
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_CTR] = Hlp_FILES_Documents; // Brw_ADMI_DOC_CTR
|
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_CTR] = Hlp_FILES_Documents; // Brw_ADMI_DOC_CTR
|
||||||
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_INS] = Hlp_FILES_Documents; // Brw_SHOW_DOC_INS
|
Brw_HelpOfFileBrowser[Brw_SHOW_DOC_INS] = Hlp_FILES_Documents; // Brw_SHOW_DOC_INS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_INS] = Hlp_FILES_Documents; // Brw_ADMI_DOC_INS
|
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_INS] = Hlp_FILES_Documents; // Brw_ADMI_DOC_INS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_DEG] = Hlp_FILES_Shared; // Brw_ADMI_SHR_DEG
|
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_DEG] = Hlp_FILES_Shared; // Brw_ADMI_SHR_DEG
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_CTR] = Hlp_FILES_Shared; // Brw_ADMI_SHR_CTR
|
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_CTR] = Hlp_FILES_Shared; // Brw_ADMI_SHR_CTR
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_INS] = Hlp_FILES_Shared; // Brw_ADMI_SHR_INS
|
Brw_HelpOfFileBrowser[Brw_ADMI_SHR_INS] = Hlp_FILES_Shared; // Brw_ADMI_SHR_INS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_TCH_CRS] = Hlp_FILES_Private; // Brw_ADMI_TCH_CRS
|
Brw_HelpOfFileBrowser[Brw_ADMI_TCH_CRS] = Hlp_FILES_Private; // Brw_ADMI_TCH_CRS
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_TCH_GRP] = Hlp_FILES_Private; // Brw_ADMI_TCH_GRP
|
Brw_HelpOfFileBrowser[Brw_ADMI_TCH_GRP] = Hlp_FILES_Private; // Brw_ADMI_TCH_GRP
|
||||||
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_PRJ] = Hlp_ASSESSMENT_Projects; // Brw_ADMI_DOC_PRJ
|
Brw_HelpOfFileBrowser[Brw_ADMI_DOC_PRJ] = Hlp_ASSESSMENT_Projects; // Brw_ADMI_DOC_PRJ
|
||||||
|
Brw_HelpOfFileBrowser[Brw_ADMI_ASS_PRJ] = Hlp_ASSESSMENT_Projects; // Brw_ADMI_ASS_PRJ
|
||||||
|
|
||||||
/***** Set contextual icon in box *****/
|
/***** Set contextual icon in box *****/
|
||||||
Gbl.FileBrowser.IconViewEdit = Brw_ICON_NONE;
|
Gbl.FileBrowser.IconViewEdit = Brw_ICON_NONE;
|
||||||
|
@ -3952,6 +4032,7 @@ static void Brw_PutIconsFileBrowser (void)
|
||||||
case Brw_ADMI_WRK_CRS:
|
case Brw_ADMI_WRK_CRS:
|
||||||
case Brw_ADMI_ASG_CRS:
|
case Brw_ADMI_ASG_CRS:
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Brw_PutIconShowFigure ();
|
Brw_PutIconShowFigure ();
|
||||||
|
@ -4149,6 +4230,7 @@ static void Brw_WriteSubtitleOfFileBrowser (void)
|
||||||
extern const char *Txt_accessible_only_for_reading_by_you_and_the_teachers_of_the_course;
|
extern const char *Txt_accessible_only_for_reading_by_you_and_the_teachers_of_the_course;
|
||||||
extern const char *Txt_the_marks_of_a_student_chosen_at_random_;
|
extern const char *Txt_the_marks_of_a_student_chosen_at_random_;
|
||||||
extern const char *Txt_accessible_for_reading_and_writing_by_project_members;
|
extern const char *Txt_accessible_for_reading_and_writing_by_project_members;
|
||||||
|
extern const char *Txt_accessible_for_reading_and_writing_by_project_tutors_and_evaluators;
|
||||||
extern const char *Txt_nobody_else_can_access_this_content;
|
extern const char *Txt_nobody_else_can_access_this_content;
|
||||||
char Subtitle[1024];
|
char Subtitle[1024];
|
||||||
|
|
||||||
|
@ -4275,6 +4357,10 @@ static void Brw_WriteSubtitleOfFileBrowser (void)
|
||||||
sprintf (Subtitle,"(%s)",
|
sprintf (Subtitle,"(%s)",
|
||||||
Txt_accessible_for_reading_and_writing_by_project_members);
|
Txt_accessible_for_reading_and_writing_by_project_members);
|
||||||
break;
|
break;
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
|
sprintf (Subtitle,"(%s)",
|
||||||
|
Txt_accessible_for_reading_and_writing_by_project_tutors_and_evaluators);
|
||||||
|
break;
|
||||||
case Brw_ADMI_BRF_USR:
|
case Brw_ADMI_BRF_USR:
|
||||||
sprintf (Subtitle,"%s<br />(%s)",
|
sprintf (Subtitle,"%s<br />(%s)",
|
||||||
Gbl.Usrs.Me.UsrDat.FullName,
|
Gbl.Usrs.Me.UsrDat.FullName,
|
||||||
|
@ -4615,10 +4701,11 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
|
|
||||||
/* Remove from project file zones */
|
/* Remove from project file zones */
|
||||||
sprintf (Query,"DELETE FROM file_view USING file_view,files"
|
sprintf (Query,"DELETE FROM file_view USING file_view,files"
|
||||||
" WHERE files.FileBrowser IN (%u)"
|
" WHERE files.FileBrowser IN (%u,%u)"
|
||||||
" AND files.Cod IN %s"
|
" AND files.Cod IN %s"
|
||||||
" AND files.FilCod=file_view.FilCod",
|
" AND files.FilCod=file_view.FilCod",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
SubqueryPrj);
|
SubqueryPrj);
|
||||||
DB_QueryDELETE (Query,"can not remove file views to files of a course");
|
DB_QueryDELETE (Query,"can not remove file views to files of a course");
|
||||||
|
|
||||||
|
@ -4651,9 +4738,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
|
|
||||||
/* Remove from project file zones */
|
/* Remove from project file zones */
|
||||||
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
|
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod IN %s",
|
" AND Cod IN %s",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
SubqueryPrj);
|
SubqueryPrj);
|
||||||
DB_QueryDELETE (Query,"can not remove expanded folders of a course");
|
DB_QueryDELETE (Query,"can not remove expanded folders of a course");
|
||||||
|
|
||||||
|
@ -4686,9 +4774,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
|
|
||||||
/* Remove from project file zones */
|
/* Remove from project file zones */
|
||||||
sprintf (Query,"DELETE FROM clipboard"
|
sprintf (Query,"DELETE FROM clipboard"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod IN %s",
|
" AND Cod IN %s",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
SubqueryPrj);
|
SubqueryPrj);
|
||||||
DB_QueryDELETE (Query,"can not remove clipboards related to files of a course");
|
DB_QueryDELETE (Query,"can not remove clipboards related to files of a course");
|
||||||
|
|
||||||
|
@ -4720,9 +4809,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
|
|
||||||
/* Remove from project file zones */
|
/* Remove from project file zones */
|
||||||
sprintf (Query,"DELETE FROM file_browser_last"
|
sprintf (Query,"DELETE FROM file_browser_last"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod IN %s",
|
" AND Cod IN %s",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
SubqueryPrj);
|
SubqueryPrj);
|
||||||
DB_QueryDELETE (Query,"can not remove file last visits to files of a course");
|
DB_QueryDELETE (Query,"can not remove file last visits to files of a course");
|
||||||
|
|
||||||
|
@ -4753,9 +4843,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
|
|
||||||
/* Remove from project file zones */
|
/* Remove from project file zones */
|
||||||
sprintf (Query,"DELETE FROM file_browser_size"
|
sprintf (Query,"DELETE FROM file_browser_size"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod IN %s",
|
" AND Cod IN %s",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
SubqueryPrj);
|
SubqueryPrj);
|
||||||
DB_QueryDELETE (Query,"can not remove sizes of file zones of a course");
|
DB_QueryDELETE (Query,"can not remove sizes of file zones of a course");
|
||||||
|
|
||||||
|
@ -4786,9 +4877,10 @@ void Brw_RemoveCrsFilesFromDB (long CrsCod)
|
||||||
|
|
||||||
/* Remove from project file zones */
|
/* Remove from project file zones */
|
||||||
sprintf (Query,"DELETE FROM files"
|
sprintf (Query,"DELETE FROM files"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod IN %s",
|
" AND Cod IN %s",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
SubqueryPrj);
|
SubqueryPrj);
|
||||||
DB_QueryDELETE (Query,"can not remove files of a course");
|
DB_QueryDELETE (Query,"can not remove files of a course");
|
||||||
}
|
}
|
||||||
|
@ -4888,50 +4980,56 @@ void Brw_RemovePrjFilesFromDB (long PrjCod)
|
||||||
|
|
||||||
/***** Remove from database the entries that store the file views *****/
|
/***** Remove from database the entries that store the file views *****/
|
||||||
sprintf (Query,"DELETE FROM file_view USING file_view,files"
|
sprintf (Query,"DELETE FROM file_view USING file_view,files"
|
||||||
" WHERE files.FileBrowser IN (%u)"
|
" WHERE files.FileBrowser IN (%u,%u)"
|
||||||
" AND files.Cod=%ld"
|
" AND files.Cod=%ld"
|
||||||
" AND files.FilCod=file_view.FilCod",
|
" AND files.FilCod=file_view.FilCod",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
PrjCod);
|
PrjCod);
|
||||||
DB_QueryDELETE (Query,"can not remove file views to files of a project");
|
DB_QueryDELETE (Query,"can not remove file views to files of a project");
|
||||||
|
|
||||||
/***** Remove from database expanded folders *****/
|
/***** Remove from database expanded folders *****/
|
||||||
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
|
sprintf (Query,"DELETE LOW_PRIORITY FROM expanded_folders"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod=%ld",
|
" AND Cod=%ld",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
PrjCod);
|
PrjCod);
|
||||||
DB_QueryDELETE (Query,"can not remove expanded folders of a project");
|
DB_QueryDELETE (Query,"can not remove expanded folders of a project");
|
||||||
|
|
||||||
/***** Remove from database the entries that store clipboards *****/
|
/***** Remove from database the entries that store clipboards *****/
|
||||||
sprintf (Query,"DELETE FROM clipboard"
|
sprintf (Query,"DELETE FROM clipboard"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod=%ld",
|
" AND Cod=%ld",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
PrjCod);
|
PrjCod);
|
||||||
DB_QueryDELETE (Query,"can not remove clipboards related to files of a project");
|
DB_QueryDELETE (Query,"can not remove clipboards related to files of a project");
|
||||||
|
|
||||||
/***** Remove from database the entries that store the last time users visited file zones *****/
|
/***** Remove from database the entries that store the last time users visited file zones *****/
|
||||||
sprintf (Query,"DELETE FROM file_browser_last"
|
sprintf (Query,"DELETE FROM file_browser_last"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod=%ld",
|
" AND Cod=%ld",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
PrjCod);
|
PrjCod);
|
||||||
DB_QueryDELETE (Query,"can not remove file last visits to files of a project");
|
DB_QueryDELETE (Query,"can not remove file last visits to files of a project");
|
||||||
|
|
||||||
/***** Remove from database the entries that store the sizes of the file zones *****/
|
/***** Remove from database the entries that store the sizes of the file zones *****/
|
||||||
sprintf (Query,"DELETE FROM file_browser_size"
|
sprintf (Query,"DELETE FROM file_browser_size"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod=%ld",
|
" AND Cod=%ld",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
PrjCod);
|
PrjCod);
|
||||||
DB_QueryDELETE (Query,"can not remove sizes of file zones of a project");
|
DB_QueryDELETE (Query,"can not remove sizes of file zones of a project");
|
||||||
|
|
||||||
/***** Remove from database the entries that store the data files *****/
|
/***** Remove from database the entries that store the data files *****/
|
||||||
sprintf (Query,"DELETE FROM files"
|
sprintf (Query,"DELETE FROM files"
|
||||||
" WHERE FileBrowser IN (%u)"
|
" WHERE FileBrowser IN (%u,%u)"
|
||||||
" AND Cod=%ld",
|
" AND Cod=%ld",
|
||||||
(unsigned) Brw_ADMI_DOC_PRJ,
|
(unsigned) Brw_ADMI_DOC_PRJ,
|
||||||
|
(unsigned) Brw_ADMI_ASS_PRJ,
|
||||||
PrjCod);
|
PrjCod);
|
||||||
DB_QueryDELETE (Query,"can not remove files of a project");
|
DB_QueryDELETE (Query,"can not remove files of a project");
|
||||||
}
|
}
|
||||||
|
@ -5206,7 +5304,14 @@ static bool Brw_GetIfGroupFileBrowser (void)
|
||||||
|
|
||||||
static bool Brw_GetIfProjectFileBrowser (void)
|
static bool Brw_GetIfProjectFileBrowser (void)
|
||||||
{
|
{
|
||||||
return (Gbl.FileBrowser.Type == Brw_ADMI_DOC_PRJ);
|
switch (Gbl.FileBrowser.Type)
|
||||||
|
{
|
||||||
|
case Brw_ADMI_DOC_PRJ: // Project documents
|
||||||
|
case Brw_ADMI_ASS_PRJ: // Project assessment
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -5339,6 +5444,7 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void)
|
||||||
Cod = Gbl.CurrentCrs.Grps.GrpCod;
|
Cod = Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
Cod = Gbl.CurrentCrs.Prjs.PrjCod;
|
Cod = Gbl.CurrentCrs.Prjs.PrjCod;
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_BRF_USR:
|
case Brw_ADMI_BRF_USR:
|
||||||
|
@ -7166,6 +7272,7 @@ static void Brw_WriteCurrentClipboard (void)
|
||||||
extern const char *Txt_assignments_area;
|
extern const char *Txt_assignments_area;
|
||||||
extern const char *Txt_works_area;
|
extern const char *Txt_works_area;
|
||||||
extern const char *Txt_project_documents;
|
extern const char *Txt_project_documents;
|
||||||
|
extern const char *Txt_project_assessment;
|
||||||
extern const char *Txt_marks_management_area;
|
extern const char *Txt_marks_management_area;
|
||||||
extern const char *Txt_temporary_private_storage_area;
|
extern const char *Txt_temporary_private_storage_area;
|
||||||
extern const char *Txt_institution;
|
extern const char *Txt_institution;
|
||||||
|
@ -7333,13 +7440,15 @@ static void Brw_WriteCurrentClipboard (void)
|
||||||
Usr_UsrDataDestructor (&UsrDat);
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
Prj_AllocMemProject (&Prj);
|
Prj_AllocMemProject (&Prj);
|
||||||
Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod;
|
Prj.PrjCod = Gbl.FileBrowser.Clipboard.Cod;
|
||||||
Prj_GetDataOfProjectByCod (&Prj);
|
Prj_GetDataOfProjectByCod (&Prj);
|
||||||
Crs.CrsCod = Prj.CrsCod;
|
Crs.CrsCod = Prj.CrsCod;
|
||||||
Crs_GetDataOfCourseByCod (&Crs);
|
Crs_GetDataOfCourseByCod (&Crs);
|
||||||
sprintf (TxtClipboardZone,"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
|
sprintf (TxtClipboardZone,"%s, %s <strong>%s</strong>, %s <strong>%s</strong>",
|
||||||
Txt_project_documents,
|
Gbl.FileBrowser.Clipboard.FileBrowser == Brw_ADMI_DOC_PRJ ? Txt_project_documents :
|
||||||
|
Txt_project_assessment,
|
||||||
Txt_course,Crs.ShrtName,
|
Txt_course,Crs.ShrtName,
|
||||||
Txt_project,Prj.Title);
|
Txt_project,Prj.Title);
|
||||||
Prj_FreeMemProject (&Prj);
|
Prj_FreeMemProject (&Prj);
|
||||||
|
@ -7516,6 +7625,7 @@ static bool Brw_CheckIfClipboardIsInThisTree (void)
|
||||||
return true; // I am in the group of the clipboard
|
return true; // I am in the group of the clipboard
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCrs.Prjs.PrjCod)
|
if (Gbl.FileBrowser.Clipboard.Cod == Gbl.CurrentCrs.Prjs.PrjCod)
|
||||||
return true; // I am in the project of the clipboard
|
return true; // I am in the project of the clipboard
|
||||||
break;
|
break;
|
||||||
|
@ -7603,6 +7713,7 @@ static long Brw_GetCodForClipboard (void)
|
||||||
case Brw_ADMI_MRK_GRP:
|
case Brw_ADMI_MRK_GRP:
|
||||||
return Gbl.CurrentCrs.Grps.GrpCod;
|
return Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
return Gbl.CurrentCrs.Prjs.PrjCod;
|
return Gbl.CurrentCrs.Prjs.PrjCod;
|
||||||
default:
|
default:
|
||||||
return -1L;
|
return -1L;
|
||||||
|
@ -8073,6 +8184,7 @@ static void Brw_RemoveAffectedClipboards (Brw_FileBrowser_t FileBrowser,
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,WorksUsrCod);
|
Gbl.CurrentCrs.Crs.CrsCod,WorksUsrCod);
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
sprintf (Query,"DELETE FROM clipboard"
|
sprintf (Query,"DELETE FROM clipboard"
|
||||||
" WHERE FileBrowser=%u AND Cod=%ld",
|
" WHERE FileBrowser=%u AND Cod=%ld",
|
||||||
(unsigned) FileBrowser,
|
(unsigned) FileBrowser,
|
||||||
|
@ -8255,6 +8367,7 @@ static void Brw_PasteClipboard (void)
|
||||||
Lay_ShowErrorAndExit ("The copy source does not exist.");
|
Lay_ShowErrorAndExit ("The copy source does not exist.");
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
PrjCod = Gbl.FileBrowser.Clipboard.Cod;
|
PrjCod = Gbl.FileBrowser.Clipboard.Cod;
|
||||||
Crs.CrsCod = Prj_GetCourseOfProject (PrjCod);
|
Crs.CrsCod = Prj_GetCourseOfProject (PrjCod);
|
||||||
if (Crs_GetDataOfCourseByCod (&Crs))
|
if (Crs_GetDataOfCourseByCod (&Crs))
|
||||||
|
@ -10526,6 +10639,7 @@ void Brw_ChgFileMetadata (void)
|
||||||
case Brw_ADMI_WRK_USR:
|
case Brw_ADMI_WRK_USR:
|
||||||
case Brw_ADMI_WRK_CRS:
|
case Brw_ADMI_WRK_CRS:
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
case Brw_ADMI_BRF_USR:
|
case Brw_ADMI_BRF_USR:
|
||||||
PublicFileAfterEdition = false; // Files in these zones can not be public
|
PublicFileAfterEdition = false; // Files in these zones can not be public
|
||||||
License = Brw_GetParLicense ();
|
License = Brw_GetParLicense ();
|
||||||
|
@ -11324,6 +11438,7 @@ long Brw_GetCodForFiles (void)
|
||||||
case Brw_ADMI_MRK_GRP:
|
case Brw_ADMI_MRK_GRP:
|
||||||
return Gbl.CurrentCrs.Grps.GrpCod;
|
return Gbl.CurrentCrs.Grps.GrpCod;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
return Gbl.CurrentCrs.Prjs.PrjCod;
|
return Gbl.CurrentCrs.Prjs.PrjCod;
|
||||||
default:
|
default:
|
||||||
return -1L;
|
return -1L;
|
||||||
|
@ -11428,6 +11543,7 @@ void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
|
||||||
*InsCod = Ctr.InsCod;
|
*InsCod = Ctr.InsCod;
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
/* Cod stores the project code */
|
/* Cod stores the project code */
|
||||||
*GrpCod = -1L;
|
*GrpCod = -1L;
|
||||||
*CrsCod = Crs.CrsCod = Prj_GetCourseOfProject (Cod);
|
*CrsCod = Crs.CrsCod = Prj_GetCourseOfProject (Cod);
|
||||||
|
@ -11671,11 +11787,13 @@ static bool Brw_CheckIfICanEditFileOrFolder (unsigned Level)
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
// Check if I am the publisher of the file/folder
|
return Brw_CheckIfICanModifyPrjDocFileOrFolder ();
|
||||||
return Brw_CheckIfICanModifyProjectFileOrFolder ();
|
case Brw_ADMI_ASS_PRJ:
|
||||||
|
return Brw_CheckIfICanModifyPrjAssFileOrFolder ();
|
||||||
default:
|
default:
|
||||||
return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type];
|
return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type];
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -11754,6 +11872,7 @@ static bool Brw_CheckIfICanCreateIntoFolder (unsigned Level)
|
||||||
default:
|
default:
|
||||||
return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type];
|
return Brw_FileBrowserIsEditable[Gbl.FileBrowser.Type];
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -11780,6 +11899,7 @@ static bool Brw_CheckIfICanModifySharedFileOrFolder (void)
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void)
|
static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void)
|
||||||
|
@ -11798,8 +11918,66 @@ static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void)
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******** Check if I have permission to view project documents zone **********/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static bool Brw_CheckIfICanViewProjectDocuments (Prj_RoleInProject_t MyRoleInProject)
|
||||||
|
{
|
||||||
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
|
{
|
||||||
|
case Rol_STD:
|
||||||
|
case Rol_NET:
|
||||||
|
case Rol_TCH:
|
||||||
|
switch (MyRoleInProject)
|
||||||
|
{
|
||||||
|
case Prj_ROLE_UNK: // I am not a member
|
||||||
|
return false;
|
||||||
|
case Prj_ROLE_STD:
|
||||||
|
case Prj_ROLE_TUT:
|
||||||
|
case Prj_ROLE_EVA:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Rol_SYS_ADM:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******** Check if I have permission to view project assessment zone *********/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static bool Brw_CheckIfICanViewProjectAssessment (Prj_RoleInProject_t MyRoleInProject)
|
||||||
|
{
|
||||||
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
|
{
|
||||||
|
case Rol_STD:
|
||||||
|
case Rol_NET:
|
||||||
|
case Rol_TCH:
|
||||||
|
switch (MyRoleInProject)
|
||||||
|
{
|
||||||
|
case Prj_ROLE_UNK: // I am not a member
|
||||||
|
case Prj_ROLE_STD: // Students can not view or edit project assessment
|
||||||
|
return false;
|
||||||
|
case Prj_ROLE_TUT:
|
||||||
|
case Prj_ROLE_EVA:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Rol_SYS_ADM:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********** Check if I have permission to modify a file or folder ************/
|
/********** Check if I have permission to modify a file or folder ************/
|
||||||
|
@ -11809,17 +11987,14 @@ static bool Brw_CheckIfICanModifyPrivateFileOrFolder (void)
|
||||||
// I can remove or rename a file if I am the publisher
|
// I can remove or rename a file if I am the publisher
|
||||||
// I can remove or rename a folder if I am the unique publisher of all the files and folders in the subtree starting there
|
// I can remove or rename a folder if I am the unique publisher of all the files and folders in the subtree starting there
|
||||||
|
|
||||||
static bool Brw_CheckIfICanModifyProjectFileOrFolder (void)
|
static bool Brw_CheckIfICanModifyPrjDocFileOrFolder (void)
|
||||||
{
|
{
|
||||||
Prj_RoleInProject_t MyRoleInProject;
|
|
||||||
|
|
||||||
switch (Gbl.Usrs.Me.Role.Logged)
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
{
|
{
|
||||||
case Rol_STD: // If I am a student or a non-editing teacher...
|
case Rol_STD:
|
||||||
case Rol_NET: // ...I can modify the file/folder if I am the publisher
|
case Rol_NET:
|
||||||
case Rol_TCH:
|
case Rol_TCH:
|
||||||
MyRoleInProject = Prj_GetMyRoleInProject (Gbl.CurrentCrs.Prjs.PrjCod);
|
switch (Prj_GetMyRoleInProject (Gbl.CurrentCrs.Prjs.PrjCod))
|
||||||
switch (MyRoleInProject)
|
|
||||||
{
|
{
|
||||||
case Prj_ROLE_UNK: // I am not a member
|
case Prj_ROLE_UNK: // I am not a member
|
||||||
return false;
|
return false;
|
||||||
|
@ -11828,12 +12003,46 @@ static bool Brw_CheckIfICanModifyProjectFileOrFolder (void)
|
||||||
case Prj_ROLE_EVA:
|
case Prj_ROLE_EVA:
|
||||||
return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree?
|
return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree?
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
case Rol_SYS_ADM:
|
case Rol_SYS_ADM:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********** Check if I have permission to modify a file or folder ************/
|
||||||
|
/********** in the current project assessment zone ************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
// Returns true if I can remove or rename Gbl.FileBrowser.Priv.FullPathInTree, and false if I have not permission
|
||||||
|
// I can remove or rename a file if I am the publisher
|
||||||
|
// I can remove or rename a folder if I am the unique publisher of all the files and folders in the subtree starting there
|
||||||
|
|
||||||
|
static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void)
|
||||||
|
{
|
||||||
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
|
{
|
||||||
|
case Rol_STD:
|
||||||
|
case Rol_NET:
|
||||||
|
case Rol_TCH:
|
||||||
|
switch (Prj_GetMyRoleInProject (Gbl.CurrentCrs.Prjs.PrjCod))
|
||||||
|
{
|
||||||
|
case Prj_ROLE_UNK: // I am not a member
|
||||||
|
case Prj_ROLE_STD: // Students can not view or edit project assessment
|
||||||
|
return false;
|
||||||
|
case Prj_ROLE_TUT:
|
||||||
|
case Prj_ROLE_EVA:
|
||||||
|
return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_GetPublisherOfSubtree ()); // Am I the publisher of subtree?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Rol_SYS_ADM:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -12160,6 +12369,7 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
||||||
extern const char *Txt_Assignments_area;
|
extern const char *Txt_Assignments_area;
|
||||||
extern const char *Txt_Works_area;
|
extern const char *Txt_Works_area;
|
||||||
extern const char *Txt_Project_documents;
|
extern const char *Txt_Project_documents;
|
||||||
|
extern const char *Txt_Project_assessment;
|
||||||
extern const char *Txt_Marks_area;
|
extern const char *Txt_Marks_area;
|
||||||
extern const char *Txt_Temporary_private_storage_area;
|
extern const char *Txt_Temporary_private_storage_area;
|
||||||
extern const char *Txt_Go_to_X;
|
extern const char *Txt_Go_to_X;
|
||||||
|
@ -12317,6 +12527,9 @@ static void Brw_WriteRowDocData (unsigned *NumDocsNotHidden,MYSQL_ROW row)
|
||||||
case Brw_ADMI_DOC_PRJ:
|
case Brw_ADMI_DOC_PRJ:
|
||||||
Title = Txt_Project_documents;
|
Title = Txt_Project_documents;
|
||||||
break;
|
break;
|
||||||
|
case Brw_ADMI_ASS_PRJ:
|
||||||
|
Title = Txt_Project_assessment;
|
||||||
|
break;
|
||||||
case Brw_ADMI_MRK_CRS:
|
case Brw_ADMI_MRK_CRS:
|
||||||
case Brw_ADMI_MRK_GRP:
|
case Brw_ADMI_MRK_GRP:
|
||||||
Title = Txt_Marks_area;
|
Title = Txt_Marks_area;
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#define Brw_MAX_CHARS_FOLDER 30 // 30
|
#define Brw_MAX_CHARS_FOLDER 30 // 30
|
||||||
#define Brw_MAX_BYTES_FOLDER NAME_MAX // 255
|
#define Brw_MAX_BYTES_FOLDER NAME_MAX // 255
|
||||||
|
|
||||||
#define Brw_NUM_TYPES_FILE_BROWSER 28
|
#define Brw_NUM_TYPES_FILE_BROWSER 29
|
||||||
// The following types are stored in several database tables as numeric fields,
|
// The following types are stored in several database tables as numeric fields,
|
||||||
// so don't change numbers!
|
// so don't change numbers!
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -72,6 +72,7 @@ typedef enum
|
||||||
Brw_ADMI_TCH_CRS = 25,
|
Brw_ADMI_TCH_CRS = 25,
|
||||||
Brw_ADMI_TCH_GRP = 26,
|
Brw_ADMI_TCH_GRP = 26,
|
||||||
Brw_ADMI_DOC_PRJ = 27,
|
Brw_ADMI_DOC_PRJ = 27,
|
||||||
|
Brw_ADMI_ASS_PRJ = 28,
|
||||||
} Brw_FileBrowser_t;
|
} Brw_FileBrowser_t;
|
||||||
|
|
||||||
// The following types are stored in files and clipboard tables as numeric fields, so don't change numbers!
|
// The following types are stored in files and clipboard tables as numeric fields, so don't change numbers!
|
||||||
|
@ -155,7 +156,7 @@ struct FileMetadata
|
||||||
#define Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS "actividades" // TODO: It should be "asg"
|
#define Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS "actividades" // TODO: It should be "asg"
|
||||||
#define Brw_INTERNAL_NAME_ROOT_FOLDER_WORKS "trabajos" // TODO: It should be "wrk"
|
#define Brw_INTERNAL_NAME_ROOT_FOLDER_WORKS "trabajos" // TODO: It should be "wrk"
|
||||||
#define Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_DOCUMENTS "doc"
|
#define Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_DOCUMENTS "doc"
|
||||||
#define Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_ASSESSMENT "ass" // For future use
|
#define Brw_INTERNAL_NAME_ROOT_FOLDER_PROJECT_ASSESSMENT "ass"
|
||||||
#define Brw_INTERNAL_NAME_ROOT_FOLDER_MARKS "calificaciones" // TODO: It should be "mrk"
|
#define Brw_INTERNAL_NAME_ROOT_FOLDER_MARKS "calificaciones" // TODO: It should be "mrk"
|
||||||
#define Brw_INTERNAL_NAME_ROOT_FOLDER_BRIEF "maletin" // TODO: It should be "brf"
|
#define Brw_INTERNAL_NAME_ROOT_FOLDER_BRIEF "maletin" // TODO: It should be "brf"
|
||||||
|
|
||||||
|
|
|
@ -464,6 +464,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
Usr_FlushCacheUsrHasAcceptedInCurrentCrs ();
|
Usr_FlushCacheUsrHasAcceptedInCurrentCrs ();
|
||||||
Usr_FlushCacheUsrSharesAnyOfMyCrs ();
|
Usr_FlushCacheUsrSharesAnyOfMyCrs ();
|
||||||
Rol_FlushCacheRoleUsrInCrs ();
|
Rol_FlushCacheRoleUsrInCrs ();
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
Grp_FlushCacheIBelongToGrp ();
|
Grp_FlushCacheIBelongToGrp ();
|
||||||
Grp_FlushCacheUsrSharesAnyOfMyGrpsInCurrentCrs ();
|
Grp_FlushCacheUsrSharesAnyOfMyGrpsInCurrentCrs ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -856,6 +856,11 @@ struct Globals
|
||||||
long CrsCod;
|
long CrsCod;
|
||||||
Rol_Role_t Role;
|
Rol_Role_t Role;
|
||||||
} RoleUsrInCrs;
|
} RoleUsrInCrs;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
long PrjCod;
|
||||||
|
Prj_RoleInProject_t RoleInProject;
|
||||||
|
} MyRoleInProject;
|
||||||
} Cache;
|
} Cache;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -222,6 +222,7 @@ void Lay_WriteStartOfPage (void)
|
||||||
case ActFrmCreWrkUsr: // Brw_ADMI_WRK_USR
|
case ActFrmCreWrkUsr: // Brw_ADMI_WRK_USR
|
||||||
case ActFrmCreWrkCrs: // Brw_ADMI_WRK_CRS
|
case ActFrmCreWrkCrs: // Brw_ADMI_WRK_CRS
|
||||||
case ActFrmCreDocPrj: // Brw_ADMI_DOC_PRJ
|
case ActFrmCreDocPrj: // Brw_ADMI_DOC_PRJ
|
||||||
|
case ActFrmCreAssPrj: // Brw_ADMI_ASS_PRJ
|
||||||
case ActFrmCreMrkCrs: // Brw_ADMI_MRK_CRS
|
case ActFrmCreMrkCrs: // Brw_ADMI_MRK_CRS
|
||||||
case ActFrmCreMrkGrp: // Brw_ADMI_MRK_GRP
|
case ActFrmCreMrkGrp: // Brw_ADMI_MRK_GRP
|
||||||
case ActFrmCreBrf: // Brw_ADMI_BRF_USR
|
case ActFrmCreBrf: // Brw_ADMI_BRF_USR
|
||||||
|
@ -596,6 +597,7 @@ static void Lay_WriteScripts (void)
|
||||||
case ActFrmCreWrkUsr: // Brw_ADMI_WRK_USR
|
case ActFrmCreWrkUsr: // Brw_ADMI_WRK_USR
|
||||||
case ActFrmCreWrkCrs: // Brw_ADMI_WRK_CRS
|
case ActFrmCreWrkCrs: // Brw_ADMI_WRK_CRS
|
||||||
case ActFrmCreDocPrj: // Brw_ADMI_DOC_PRJ
|
case ActFrmCreDocPrj: // Brw_ADMI_DOC_PRJ
|
||||||
|
case ActFrmCreAssPrj: // Brw_ADMI_ASS_PRJ
|
||||||
case ActFrmCreMrkCrs: // Brw_ADMI_MRK_CRS
|
case ActFrmCreMrkCrs: // Brw_ADMI_MRK_CRS
|
||||||
case ActFrmCreMrkGrp: // Brw_ADMI_MRK_GRP
|
case ActFrmCreMrkGrp: // Brw_ADMI_MRK_GRP
|
||||||
case ActFrmCreBrf: // Brw_ADMI_BRF_USR
|
case ActFrmCreBrf: // Brw_ADMI_BRF_USR
|
||||||
|
|
137
swad_project.c
137
swad_project.c
|
@ -124,6 +124,8 @@ static void Prj_ShowTableAllProjectsMembersWithARole (const struct Project *Prj,
|
||||||
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
||||||
MYSQL_RES **mysql_res);
|
MYSQL_RES **mysql_res);
|
||||||
|
|
||||||
|
static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *UnsignedStr);
|
||||||
|
|
||||||
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
|
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
|
||||||
|
@ -132,11 +134,9 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_GetParamPrjOrder (void);
|
static void Prj_GetParamPrjOrder (void);
|
||||||
|
|
||||||
static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden,
|
static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden,
|
||||||
bool ICanAdminDocsProject);
|
bool ICanViewProjectFiles);
|
||||||
|
|
||||||
static bool Prj_CheckIfICanEditProject (long PrjCod);
|
static bool Prj_CheckIfICanEditProject (long PrjCod);
|
||||||
static bool Prj_GetIfIAmMemberOfProject (long PrjCod);
|
|
||||||
static bool Prj_GetIfIAmTutorInProject (long PrjCod);
|
|
||||||
|
|
||||||
static void Prj_PutParams (void);
|
static void Prj_PutParams (void);
|
||||||
static void Prj_GetDataOfProject (struct Project *Prj,const char *Query);
|
static void Prj_GetDataOfProject (struct Project *Prj,const char *Query);
|
||||||
|
@ -607,7 +607,7 @@ void Prj_PrintOneProject (void)
|
||||||
static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectView)
|
static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectView)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Today;
|
extern const char *Txt_Today;
|
||||||
extern const char *Txt_Project_documents;
|
extern const char *Txt_Project_files;
|
||||||
extern const char *Txt_Preassigned_QUESTION;
|
extern const char *Txt_Preassigned_QUESTION;
|
||||||
extern const char *Txt_Yes;
|
extern const char *Txt_Yes;
|
||||||
extern const char *Txt_No;
|
extern const char *Txt_No;
|
||||||
|
@ -620,7 +620,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
|
||||||
extern const char *Txt_Required_knowledge;
|
extern const char *Txt_Required_knowledge;
|
||||||
extern const char *Txt_Required_materials;
|
extern const char *Txt_Required_materials;
|
||||||
static unsigned UniqueId = 0;
|
static unsigned UniqueId = 0;
|
||||||
bool ICanAdminDocsProject = Prj_CheckIfICanAdminDocsProject (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 */
|
/* Forms to remove/edit this project */
|
||||||
|
@ -634,7 +634,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
|
||||||
case Prj_FILE_BROWSER_PROJECT:
|
case Prj_FILE_BROWSER_PROJECT:
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
|
Prj_PutFormsToRemEditOnePrj (Prj->PrjCod,Prj->Hidden,
|
||||||
ICanAdminDocsProject);
|
ICanViewProjectFiles);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
|
@ -681,11 +681,11 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
|
||||||
if (ProjectView == Prj_LIST_PROJECTS)
|
if (ProjectView == Prj_LIST_PROJECTS)
|
||||||
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
if (ICanAdminDocsProject)
|
if (ICanViewProjectFiles)
|
||||||
{
|
{
|
||||||
Act_FormStart (ActAdmDocPrj);
|
Act_FormStart (ActAdmDocPrj);
|
||||||
Prj_PutParams ();
|
Prj_PutParams ();
|
||||||
Act_LinkFormSubmit (Txt_Project_documents,
|
Act_LinkFormSubmit (Txt_Project_files,
|
||||||
Prj->Hidden ? "ASG_TITLE_LIGHT" :
|
Prj->Hidden ? "ASG_TITLE_LIGHT" :
|
||||||
"ASG_TITLE",
|
"ASG_TITLE",
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -1410,28 +1410,57 @@ static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
||||||
/************************** Get my role in a project *************************/
|
/************************** Get my role in a project *************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Prj_FlushCacheMyRoleInProject (void)
|
||||||
|
{
|
||||||
|
Gbl.Cache.MyRoleInProject.PrjCod = -1L;
|
||||||
|
Gbl.Cache.MyRoleInProject.RoleInProject = Prj_ROLE_UNK;
|
||||||
|
}
|
||||||
|
|
||||||
Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod)
|
Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod)
|
||||||
{
|
{
|
||||||
char Query[128];
|
char Query[256];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned UnsignedNum;
|
|
||||||
Prj_RoleInProject_t RoleInProject = Prj_ROLE_UNK;
|
|
||||||
|
|
||||||
/***** Get my role in project from database *****/
|
/***** 1. Fast check: trivial cases *****/
|
||||||
sprintf (Query,"SELECT RoleInProject FROM prj_usr WHERE PrjCod=%ld",PrjCod);
|
if (Gbl.Usrs.Me.UsrDat.UsrCod <= 0 ||
|
||||||
|
PrjCod <= 0)
|
||||||
|
return Prj_ROLE_UNK;
|
||||||
|
|
||||||
|
/***** 2. Fast check: Is my role in project already calculated *****/
|
||||||
|
if (PrjCod == Gbl.Cache.MyRoleInProject.PrjCod)
|
||||||
|
return Gbl.Cache.MyRoleInProject.RoleInProject;
|
||||||
|
|
||||||
|
/***** 3. Slow check: Get my role in project from database.
|
||||||
|
The result of the query will have one row or none *****/
|
||||||
|
Gbl.Cache.MyRoleInProject.PrjCod = PrjCod;
|
||||||
|
Gbl.Cache.MyRoleInProject.RoleInProject = Prj_ROLE_UNK;
|
||||||
|
sprintf (Query,"SELECT RoleInProject FROM prj_usr"
|
||||||
|
" WHERE PrjCod=%ld AND UsrCod=%ld",
|
||||||
|
PrjCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get my role in project"))
|
if (DB_QuerySELECT (Query,&mysql_res,"can not get my role in project"))
|
||||||
{
|
{
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
|
Gbl.Cache.MyRoleInProject.RoleInProject = Prj_ConvertUnsignedStrToRoleInProject (row[0]);
|
||||||
if (UnsignedNum < Prj_NUM_ROLES_IN_PROJECT)
|
|
||||||
RoleInProject = (Prj_RoleInProject_t) UnsignedNum;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
||||||
return RoleInProject;
|
return Gbl.Cache.MyRoleInProject.RoleInProject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************** Get role from unsigned string ************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *UnsignedStr)
|
||||||
|
{
|
||||||
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
|
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||||
|
if (UnsignedNum < Prj_NUM_ROLES_IN_PROJECT)
|
||||||
|
return (Prj_RoleInProject_t) UnsignedNum;
|
||||||
|
|
||||||
|
return Prj_ROLE_UNK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1540,6 +1569,10 @@ static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject)
|
||||||
PrjCod,(unsigned) RoleInProject,Gbl.Usrs.Other.UsrDat.UsrCod);
|
PrjCod,(unsigned) RoleInProject,Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||||
DB_QueryREPLACE (Query,"can not add user to project");
|
DB_QueryREPLACE (Query,"can not add user to project");
|
||||||
|
|
||||||
|
/***** Flush cache *****/
|
||||||
|
if (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
|
|
||||||
/* Show success alert */
|
/* Show success alert */
|
||||||
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project,
|
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project,
|
||||||
Gbl.Usrs.Other.UsrDat.FullName,
|
Gbl.Usrs.Other.UsrDat.FullName,
|
||||||
|
@ -1703,6 +1736,10 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
|
||||||
Gbl.Usrs.Other.UsrDat.UsrCod);
|
Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||||
DB_QueryDELETE (Query,"can not remove a user from a project");
|
DB_QueryDELETE (Query,"can not remove a user from a project");
|
||||||
|
|
||||||
|
/***** Flush cache *****/
|
||||||
|
if (Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
|
|
||||||
/***** Show success alert *****/
|
/***** Show success alert *****/
|
||||||
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z,
|
sprintf (Gbl.Alert.Txt,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z,
|
||||||
Gbl.Usrs.Other.UsrDat.FullName,
|
Gbl.Usrs.Other.UsrDat.FullName,
|
||||||
|
@ -1750,7 +1787,7 @@ void Prj_PutHiddenParamPrjOrder (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden,
|
static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden,
|
||||||
bool ICanAdminDocsProject)
|
bool ICanViewProjectFiles)
|
||||||
{
|
{
|
||||||
Gbl.Prjs.PrjCodToEdit = PrjCod; // Used as parameter in contextual links
|
Gbl.Prjs.PrjCodToEdit = PrjCod; // Used as parameter in contextual links
|
||||||
|
|
||||||
|
@ -1770,7 +1807,7 @@ static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden,
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Put form to admin project documents *****/
|
/***** Put form to admin project documents *****/
|
||||||
if (ICanAdminDocsProject)
|
if (ICanViewProjectFiles)
|
||||||
Ico_PutContextualIconToViewFiles (ActAdmDocPrj,Prj_PutParams);
|
Ico_PutContextualIconToViewFiles (ActAdmDocPrj,Prj_PutParams);
|
||||||
|
|
||||||
/***** Put form to print project *****/
|
/***** Put form to print project *****/
|
||||||
|
@ -1778,17 +1815,26 @@ static void Prj_PutFormsToRemEditOnePrj (long PrjCod,bool Hidden,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Can I admin documents of a given project? *****************/
|
/******************** Can I view files of a given project? *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
bool Prj_CheckIfICanAdminDocsProject (long PrjCod)
|
bool Prj_CheckIfICanViewProjectFiles (Prj_RoleInProject_t MyRoleInProject)
|
||||||
{
|
{
|
||||||
switch (Gbl.Usrs.Me.Role.Logged)
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
{
|
{
|
||||||
case Rol_STD:
|
case Rol_STD:
|
||||||
case Rol_NET:
|
case Rol_NET:
|
||||||
case Rol_TCH:
|
case Rol_TCH:
|
||||||
return Prj_GetIfIAmMemberOfProject (PrjCod);
|
switch (MyRoleInProject)
|
||||||
|
{
|
||||||
|
case Prj_ROLE_UNK: // I am not a member
|
||||||
|
return false;
|
||||||
|
case Prj_ROLE_STD:
|
||||||
|
case Prj_ROLE_TUT:
|
||||||
|
case Prj_ROLE_EVA:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
case Rol_SYS_ADM:
|
case Rol_SYS_ADM:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
@ -1805,7 +1851,7 @@ static bool Prj_CheckIfICanEditProject (long PrjCod)
|
||||||
switch (Gbl.Usrs.Me.Role.Logged)
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
{
|
{
|
||||||
case Rol_NET:
|
case Rol_NET:
|
||||||
return Prj_GetIfIAmTutorInProject (PrjCod);
|
return (Prj_GetMyRoleInProject (PrjCod) == Prj_ROLE_TUT);
|
||||||
case Rol_TCH:
|
case Rol_TCH:
|
||||||
case Rol_SYS_ADM:
|
case Rol_SYS_ADM:
|
||||||
return true;
|
return true;
|
||||||
|
@ -1814,34 +1860,6 @@ static bool Prj_CheckIfICanEditProject (long PrjCod)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*********************** Am I member of a given project? *********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static bool Prj_GetIfIAmMemberOfProject (long PrjCod)
|
|
||||||
{
|
|
||||||
char Query[256];
|
|
||||||
|
|
||||||
sprintf (Query,"SELECT COUNT(*) FROM prj_usr"
|
|
||||||
" WHERE PrjCod=%ld AND UsrCod=%ld",
|
|
||||||
PrjCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
return (bool) (DB_QueryCOUNT (Query,"can not check if I am a member of a project") != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*********************** Am I tutor in a given project? **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static bool Prj_GetIfIAmTutorInProject (long PrjCod)
|
|
||||||
{
|
|
||||||
char Query[256];
|
|
||||||
|
|
||||||
sprintf (Query,"SELECT COUNT(*) FROM prj_usr"
|
|
||||||
" WHERE PrjCod=%ld AND RoleInProject=%u AND UsrCod=%ld",
|
|
||||||
PrjCod,Prj_ROLE_TUT,Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
return (bool) (DB_QueryCOUNT (Query,"can not check if I am a tutor in a project") != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Params used to edit a project ************************/
|
/********************** Params used to edit a project ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2310,6 +2328,9 @@ void Prj_RemoveProject (void)
|
||||||
Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod);
|
Prj.PrjCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
DB_QueryDELETE (Query,"can not remove project");
|
DB_QueryDELETE (Query,"can not remove project");
|
||||||
|
|
||||||
|
/***** Flush cache *****/
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
|
|
||||||
/***** Remove project *****/
|
/***** Remove project *****/
|
||||||
sprintf (Query,"DELETE FROM projects"
|
sprintf (Query,"DELETE FROM projects"
|
||||||
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
" WHERE PrjCod=%ld AND CrsCod=%ld",
|
||||||
|
@ -2912,6 +2933,9 @@ static void Prj_CreateProject (struct Project *Prj)
|
||||||
(unsigned) Prj_ROLE_TUT,
|
(unsigned) Prj_ROLE_TUT,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
DB_QueryINSERT (Query,"can not add tutor");
|
DB_QueryINSERT (Query,"can not add tutor");
|
||||||
|
|
||||||
|
/***** Flush cache *****/
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2967,6 +2991,9 @@ void Prj_RemoveCrsProjects (long CrsCod)
|
||||||
CrsCod);
|
CrsCod);
|
||||||
DB_QueryDELETE (Query,"can not remove all the projects of a course");
|
DB_QueryDELETE (Query,"can not remove all the projects of a course");
|
||||||
|
|
||||||
|
/***** Flush cache *****/
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
|
|
||||||
/***** Remove projects *****/
|
/***** Remove projects *****/
|
||||||
sprintf (Query,"DELETE FROM projects WHERE CrsCod=%ld",CrsCod);
|
sprintf (Query,"DELETE FROM projects WHERE CrsCod=%ld",CrsCod);
|
||||||
DB_QueryDELETE (Query,"can not remove all the projects of a course");
|
DB_QueryDELETE (Query,"can not remove all the projects of a course");
|
||||||
|
@ -2983,6 +3010,10 @@ void Prj_RemoveUsrFromProjects (long UsrCod)
|
||||||
/***** Remove user from projects *****/
|
/***** Remove user from projects *****/
|
||||||
sprintf (Query,"DELETE FROM prj_usr WHERE UsrCod=%ld",UsrCod);
|
sprintf (Query,"DELETE FROM prj_usr WHERE UsrCod=%ld",UsrCod);
|
||||||
DB_QueryDELETE (Query,"can not remove user from projects");
|
DB_QueryDELETE (Query,"can not remove user from projects");
|
||||||
|
|
||||||
|
/***** Flush cache *****/
|
||||||
|
if (UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
|
||||||
|
Prj_FlushCacheMyRoleInProject ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -115,6 +115,7 @@ void Prj_ShowOneUniqueProject (struct Project *Prj);
|
||||||
|
|
||||||
void Prj_PrintOneProject (void);
|
void Prj_PrintOneProject (void);
|
||||||
|
|
||||||
|
void Prj_FlushCacheMyRoleInProject (void);
|
||||||
Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod);
|
Prj_RoleInProject_t Prj_GetMyRoleInProject (long PrjCod);
|
||||||
|
|
||||||
void Prj_ReqAddStd (void);
|
void Prj_ReqAddStd (void);
|
||||||
|
@ -135,7 +136,7 @@ void Prj_RemEva (void);
|
||||||
|
|
||||||
void Prj_PutHiddenParamPrjOrder (void);
|
void Prj_PutHiddenParamPrjOrder (void);
|
||||||
|
|
||||||
bool Prj_CheckIfICanAdminDocsProject (long PrjCod);
|
bool Prj_CheckIfICanViewProjectFiles (Prj_RoleInProject_t MyRoleInProject);
|
||||||
|
|
||||||
void Prj_RequestCreatePrj (void);
|
void Prj_RequestCreatePrj (void);
|
||||||
void Prj_RequestEditPrj (void);
|
void Prj_RequestEditPrj (void);
|
||||||
|
|
107
swad_text.c
107
swad_text.c
|
@ -1733,7 +1733,7 @@ const char *Txt_accessible_for_reading_and_writing_by_project_members =
|
||||||
#elif L==4
|
#elif L==4
|
||||||
"accesible para lectura y escritura por miembros del proyecto";
|
"accesible para lectura y escritura por miembros del proyecto";
|
||||||
#elif L==5
|
#elif L==5
|
||||||
"accessible pour la lecture et l'écriture par les membres du projet";
|
"accessible pour la lecture et l'écriture par les membres du projet";
|
||||||
#elif L==6
|
#elif L==6
|
||||||
"accesible para lectura y escritura por miembros del proyecto"; // Okoteve traducción
|
"accesible para lectura y escritura por miembros del proyecto"; // Okoteve traducción
|
||||||
#elif L==7
|
#elif L==7
|
||||||
|
@ -1744,6 +1744,27 @@ const char *Txt_accessible_for_reading_and_writing_by_project_members =
|
||||||
"acessível para leitura e escrita por membros do projeto";
|
"acessível para leitura e escrita por membros do projeto";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_accessible_for_reading_and_writing_by_project_tutors_and_evaluators =
|
||||||
|
#if L==1
|
||||||
|
"accessible per a lectura i escriptura per tutors i avaluadors del projecte";
|
||||||
|
#elif L==2
|
||||||
|
"zugänglich zum Lesen und Schreiben für Tutoren und Auswerter der Projekt";
|
||||||
|
#elif L==3
|
||||||
|
"accessible for reading and writing by project tutors and evaluators";
|
||||||
|
#elif L==4
|
||||||
|
"accesible para lectura y escritura por tutores y evaluadores del proyecto";
|
||||||
|
#elif L==5
|
||||||
|
"accessible pour la lecture et l'écriture par tuteurs et évaluateurs du projet";
|
||||||
|
#elif L==6
|
||||||
|
"accesible para lectura y escritura por tutores y evaluadores del proyecto"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"accessibile per la lettura e la scrittura da parte dei precettori e dei valutatori del progetto";
|
||||||
|
#elif L==8
|
||||||
|
"dostępne do czytania i pisania przez nauczyciele i ewaluatorów projektu";
|
||||||
|
#elif L==9
|
||||||
|
"acessível para leitura e escrita por tutores e avaliadores do projeto";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_centre =
|
const char *Txt_accessible_for_reading_and_writing_by_students_and_teachers_of_the_centre =
|
||||||
#if L==1
|
#if L==1
|
||||||
"accessible per a lectura i escriptura per estudiants i professors del centre";
|
"accessible per a lectura i escriptura per estudiants i professors del centre";
|
||||||
|
@ -30831,6 +30852,48 @@ const char *Txt_project =
|
||||||
"projeto";
|
"projeto";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Project_assessment =
|
||||||
|
#if L==1
|
||||||
|
"Avaluació del projecte";
|
||||||
|
#elif L==2
|
||||||
|
"Projektbewertung";
|
||||||
|
#elif L==3
|
||||||
|
"Project assessment";
|
||||||
|
#elif L==4
|
||||||
|
"Evaluación del proyecto";
|
||||||
|
#elif L==5
|
||||||
|
"Évaluation du project";
|
||||||
|
#elif L==6
|
||||||
|
"Evaluación del proyecto"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Valutazione di progetto";
|
||||||
|
#elif L==8
|
||||||
|
"Ocena projektowe";
|
||||||
|
#elif L==9
|
||||||
|
"Avaliação do projeto";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_project_assessment =
|
||||||
|
#if L==1
|
||||||
|
"avaluació del projecte";
|
||||||
|
#elif L==2
|
||||||
|
"Projektbewertung";
|
||||||
|
#elif L==3
|
||||||
|
"project assessment";
|
||||||
|
#elif L==4
|
||||||
|
"evaluación del proyecto";
|
||||||
|
#elif L==5
|
||||||
|
"évaluation du project";
|
||||||
|
#elif L==6
|
||||||
|
"evaluación del proyecto"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"valutazione di progetto";
|
||||||
|
#elif L==8
|
||||||
|
"ocena projektowe";
|
||||||
|
#elif L==9
|
||||||
|
"avaliação do projeto";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Project_documents =
|
const char *Txt_Project_documents =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Documents del projecte";
|
"Documents del projecte";
|
||||||
|
@ -30873,6 +30936,27 @@ const char *Txt_project_documents =
|
||||||
"documentos do projeto";
|
"documentos do projeto";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Project_files =
|
||||||
|
#if L==1
|
||||||
|
"Fitxers del projecte";
|
||||||
|
#elif L==2
|
||||||
|
"Projektdateien";
|
||||||
|
#elif L==3
|
||||||
|
"Project files";
|
||||||
|
#elif L==4
|
||||||
|
"Archivos del proyecto";
|
||||||
|
#elif L==5
|
||||||
|
"Fichiers du project";
|
||||||
|
#elif L==6
|
||||||
|
"Archivos del proyecto"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"File di progetto";
|
||||||
|
#elif L==8
|
||||||
|
"Pliki projektowe";
|
||||||
|
#elif L==9
|
||||||
|
"Arquivos do projeto";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Project_X_is_now_hidden = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Project_X_is_now_hidden = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1
|
#if L==1
|
||||||
"El projecte <strong>%s</strong> ara està ocult.";
|
"El projecte <strong>%s</strong> ara està ocult.";
|
||||||
|
@ -38080,6 +38164,27 @@ const char *Txt_ROOT_FOLDER_EXTERNAL_NAMES[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
"dokumenty"
|
"dokumenty"
|
||||||
#elif L==9
|
#elif L==9
|
||||||
"documentos"
|
"documentos"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
// Brw_ADMI_ASS_PRJ
|
||||||
|
#if L==1
|
||||||
|
"avaluacio"
|
||||||
|
#elif L==2
|
||||||
|
"Bewertung"
|
||||||
|
#elif L==3
|
||||||
|
"assessment"
|
||||||
|
#elif L==4
|
||||||
|
"evaluacion"
|
||||||
|
#elif L==5
|
||||||
|
"evaluation"
|
||||||
|
#elif L==6
|
||||||
|
"mbohepy"
|
||||||
|
#elif L==7
|
||||||
|
"valutazione"
|
||||||
|
#elif L==8
|
||||||
|
"ocena"
|
||||||
|
#elif L==9
|
||||||
|
"avaliacao"
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,7 @@ const Act_Action_t ZIP_ActZIPFolder[Brw_NUM_TYPES_FILE_BROWSER] =
|
||||||
ActZIPTchCrs, // Brw_ADMI_TCH_CRS
|
ActZIPTchCrs, // Brw_ADMI_TCH_CRS
|
||||||
ActZIPTchGrp, // Brw_ADMI_TCH_GRP
|
ActZIPTchGrp, // Brw_ADMI_TCH_GRP
|
||||||
ActZIPDocPrj, // Brw_ADMI_DOC_PRJ
|
ActZIPDocPrj, // Brw_ADMI_DOC_PRJ
|
||||||
|
ActZIPAssPrj, // Brw_ADMI_ASS_PRJ
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue