mirror of https://github.com/acanas/swad-core.git
Version 17.2
This commit is contained in:
parent
a92307a062
commit
06ba4b2d99
23
sql/swad.sql
23
sql/swad.sql
|
@ -930,6 +930,29 @@ CREATE TABLE IF NOT EXISTS plugins (
|
|||
IP CHAR(15) NOT NULL,
|
||||
UNIQUE INDEX(PlgCod));
|
||||
--
|
||||
-- Table Prj_grp: stores the groups associated to projects
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS prj_grp (
|
||||
PrjCod INT NOT NULL,
|
||||
GrpCod INT NOT NULL,
|
||||
UNIQUE INDEX(PrjCod,GrpCod));
|
||||
--
|
||||
-- Table projects: stores the projects proposed by the teachers to their students
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS projects (
|
||||
PrjCod INT NOT NULL AUTO_INCREMENT,
|
||||
CrsCod INT NOT NULL DEFAULT -1,
|
||||
Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||
NumNotif INT NOT NULL DEFAULT 0,
|
||||
UsrCod INT NOT NULL,
|
||||
StartTime DATETIME NOT NULL,
|
||||
EndTime DATETIME NOT NULL,
|
||||
Title VARCHAR(2047) NOT NULL,
|
||||
Folder VARBINARY(255) NOT NULL,
|
||||
Txt TEXT NOT NULL,
|
||||
UNIQUE INDEX(PrjCod),
|
||||
INDEX(CrsCod,Hidden));
|
||||
--
|
||||
-- Table sessions: stores the information of open sessions
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS sessions (
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
#include "swad_preference.h"
|
||||
#include "swad_privacy.h"
|
||||
#include "swad_profile.h"
|
||||
#include "swad_project.h"
|
||||
#include "swad_QR.h"
|
||||
#include "swad_report.h"
|
||||
#include "swad_role.h"
|
||||
|
@ -424,6 +425,7 @@ Course:
|
|||
Assessment:
|
||||
288. ActSeeAss Show the assessment system
|
||||
289. ActSeeAsg Show assignments
|
||||
NEW. ActSeePrj Show projects
|
||||
290. ActReqTst Request a test of self-assesment
|
||||
NEW. ActSeeAllGam Remote control
|
||||
291. ActSeeAllSvy List all surveys in pages
|
||||
|
@ -440,6 +442,7 @@ Assessment:
|
|||
301. ActRchTxtEdiAss Editor of rich text of assessment
|
||||
302. ActRcvPlaTxtAss Receive and change the plain text of the assessment system
|
||||
303. ActRcvRchTxtAss Receive and change the rich text of the assessment system
|
||||
|
||||
304. ActFrmNewAsg Form to create a new assignment
|
||||
305. ActEdiOneAsg Edit one assignment
|
||||
306. ActPrnOneAsg Print one assignment
|
||||
|
@ -450,6 +453,16 @@ Assessment:
|
|||
311. ActHidAsg Hide assignment
|
||||
312. ActShoAsg Show assignment
|
||||
|
||||
NEW. ActFrmNewPrj Form to create a new project
|
||||
NEW. ActEdiOnePrj Edit one project
|
||||
NEW. ActPrnOnePrj Print one project
|
||||
NEW. ActNewPrj Create new project
|
||||
NEW. ActChgPrj Modify data of an existing project
|
||||
NEW. ActReqRemPrj Request the removal of an project
|
||||
NEW. ActRemPrj Remove project
|
||||
NEW. ActHidPrj Hide project
|
||||
NEW. ActShoPrj Show project
|
||||
|
||||
313. ActSeeTst Show the seft-assessment test
|
||||
314. ActAssTst Assess a self-assessment test
|
||||
315. ActEdiTstQst Request the edition of self-assessment questions
|
||||
|
@ -1902,10 +1915,11 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
// Actions in menu:
|
||||
/* ActSeeAss */{ 15, 0,TabAss,ActSeeAss ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_ShowInfo ,"infogrades64x64.gif" },
|
||||
/* ActSeeAsg */{ 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"desk64x64.gif" },
|
||||
/* ActReqTst */{ 103, 2,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormAskTst ,"test64x64.gif" },
|
||||
/* ActSeeAllGam */{1649, 3,TabAss,ActSeeAllGam ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"remote64x64.png" },
|
||||
/* ActSeeAllSvy */{ 966, 4,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"survey64x64.gif" },
|
||||
/* ActSeeAllExaAnn */{ 85, 5,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ListExamAnnouncementsSee ,"announce64x64.gif" },
|
||||
/* ActSeePrj */{1674, 2,TabAss,ActSeePrj ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"project64x64.png" },
|
||||
/* ActReqTst */{ 103, 3,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormAskTst ,"test64x64.gif" },
|
||||
/* ActSeeAllGam */{1649, 4,TabAss,ActSeeAllGam ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"remote64x64.png" },
|
||||
/* ActSeeAllSvy */{ 966, 5,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"survey64x64.gif" },
|
||||
/* ActSeeAllExaAnn */{ 85, 6,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ListExamAnnouncementsSee ,"announce64x64.gif" },
|
||||
|
||||
// Actions not in menu:
|
||||
/* ActEdiAss */{ 69,-1,TabUnk,ActSeeAss ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_FormsToSelSendInfo ,NULL},
|
||||
|
@ -1930,6 +1944,16 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActHidAsg */{ 964,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_HideAssignment ,NULL},
|
||||
/* ActShoAsg */{ 965,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ShowAssignment ,NULL},
|
||||
|
||||
/* ActFrmNewPrj */{1675,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatOrEditPrj ,NULL},
|
||||
/* ActEdiOnePrj */{1676,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatOrEditPrj ,NULL},
|
||||
/* ActPrnOnePrj */{1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL},
|
||||
/* ActNewPrj */{1678,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RecFormProject ,NULL},
|
||||
/* ActChgPrj */{1679,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RecFormProject ,NULL},
|
||||
/* ActReqRemPrj */{1680,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemProject ,NULL},
|
||||
/* ActRemPrj */{1681,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemoveProject ,NULL},
|
||||
/* ActHidPrj */{1682,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_HideProject ,NULL},
|
||||
/* ActShoPrj */{1683,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProject ,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},
|
||||
|
||||
|
@ -4729,6 +4753,16 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
|||
ActPlyGam1stQst, // #1671
|
||||
ActPlyGamNxtQst, // #1672
|
||||
ActPlyGamAns, // #1673
|
||||
ActSeePrj, // #1674
|
||||
ActFrmNewPrj, // #1675
|
||||
ActEdiOnePrj, // #1676
|
||||
ActPrnOnePrj, // #1677
|
||||
ActNewPrj, // #1678
|
||||
ActChgPrj, // #1679
|
||||
ActReqRemPrj, // #1680
|
||||
ActRemPrj, // #1681
|
||||
ActHidPrj, // #1682
|
||||
ActShoPrj, // #1683
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
207
swad_action.h
207
swad_action.h
|
@ -58,9 +58,9 @@ typedef enum
|
|||
|
||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||
|
||||
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 96 + 416 + 165 + 172 + 42 + 14 + 97)
|
||||
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 106 + 416 + 165 + 172 + 42 + 14 + 97)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1673
|
||||
#define Act_MAX_ACTION_COD 1683
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12
|
||||
|
||||
|
@ -432,110 +432,121 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
|||
/***************************** Assessment tab ********************************/
|
||||
/*****************************************************************************/
|
||||
// Actions in menu
|
||||
#define ActSeeAss (ActChgCalCrs1stDay + 1)
|
||||
#define ActSeeAsg (ActChgCalCrs1stDay + 2)
|
||||
#define ActReqTst (ActChgCalCrs1stDay + 3)
|
||||
#define ActSeeAllGam (ActChgCalCrs1stDay + 4)
|
||||
#define ActSeeAllSvy (ActChgCalCrs1stDay + 5)
|
||||
#define ActSeeAllExaAnn (ActChgCalCrs1stDay + 6)
|
||||
#define ActSeeAss (ActChgCalCrs1stDay + 1)
|
||||
#define ActSeeAsg (ActChgCalCrs1stDay + 2)
|
||||
#define ActSeePrj (ActChgCalCrs1stDay + 3)
|
||||
#define ActReqTst (ActChgCalCrs1stDay + 4)
|
||||
#define ActSeeAllGam (ActChgCalCrs1stDay + 5)
|
||||
#define ActSeeAllSvy (ActChgCalCrs1stDay + 6)
|
||||
#define ActSeeAllExaAnn (ActChgCalCrs1stDay + 7)
|
||||
|
||||
// Secondary actions
|
||||
#define ActEdiAss (ActChgCalCrs1stDay + 7)
|
||||
#define ActChgFrcReaAss (ActChgCalCrs1stDay + 8)
|
||||
#define ActChgHavReaAss (ActChgCalCrs1stDay + 9)
|
||||
#define ActSelInfSrcAss (ActChgCalCrs1stDay + 10)
|
||||
#define ActRcvURLAss (ActChgCalCrs1stDay + 11)
|
||||
#define ActRcvPagAss (ActChgCalCrs1stDay + 12)
|
||||
#define ActEditorAss (ActChgCalCrs1stDay + 13)
|
||||
#define ActPlaTxtEdiAss (ActChgCalCrs1stDay + 14)
|
||||
#define ActRchTxtEdiAss (ActChgCalCrs1stDay + 15)
|
||||
#define ActRcvPlaTxtAss (ActChgCalCrs1stDay + 16)
|
||||
#define ActRcvRchTxtAss (ActChgCalCrs1stDay + 17)
|
||||
#define ActEdiAss (ActChgCalCrs1stDay + 8)
|
||||
#define ActChgFrcReaAss (ActChgCalCrs1stDay + 9)
|
||||
#define ActChgHavReaAss (ActChgCalCrs1stDay + 10)
|
||||
#define ActSelInfSrcAss (ActChgCalCrs1stDay + 11)
|
||||
#define ActRcvURLAss (ActChgCalCrs1stDay + 12)
|
||||
#define ActRcvPagAss (ActChgCalCrs1stDay + 13)
|
||||
#define ActEditorAss (ActChgCalCrs1stDay + 14)
|
||||
#define ActPlaTxtEdiAss (ActChgCalCrs1stDay + 15)
|
||||
#define ActRchTxtEdiAss (ActChgCalCrs1stDay + 16)
|
||||
#define ActRcvPlaTxtAss (ActChgCalCrs1stDay + 17)
|
||||
#define ActRcvRchTxtAss (ActChgCalCrs1stDay + 18)
|
||||
|
||||
#define ActFrmNewAsg (ActChgCalCrs1stDay + 18)
|
||||
#define ActEdiOneAsg (ActChgCalCrs1stDay + 19)
|
||||
#define ActPrnOneAsg (ActChgCalCrs1stDay + 20)
|
||||
#define ActNewAsg (ActChgCalCrs1stDay + 21)
|
||||
#define ActChgAsg (ActChgCalCrs1stDay + 22)
|
||||
#define ActReqRemAsg (ActChgCalCrs1stDay + 23)
|
||||
#define ActRemAsg (ActChgCalCrs1stDay + 24)
|
||||
#define ActHidAsg (ActChgCalCrs1stDay + 25)
|
||||
#define ActShoAsg (ActChgCalCrs1stDay + 26)
|
||||
#define ActFrmNewAsg (ActChgCalCrs1stDay + 19)
|
||||
#define ActEdiOneAsg (ActChgCalCrs1stDay + 20)
|
||||
#define ActPrnOneAsg (ActChgCalCrs1stDay + 21)
|
||||
#define ActNewAsg (ActChgCalCrs1stDay + 22)
|
||||
#define ActChgAsg (ActChgCalCrs1stDay + 23)
|
||||
#define ActReqRemAsg (ActChgCalCrs1stDay + 24)
|
||||
#define ActRemAsg (ActChgCalCrs1stDay + 25)
|
||||
#define ActHidAsg (ActChgCalCrs1stDay + 26)
|
||||
#define ActShoAsg (ActChgCalCrs1stDay + 27)
|
||||
|
||||
#define ActSeeTst (ActChgCalCrs1stDay + 27)
|
||||
#define ActAssTst (ActChgCalCrs1stDay + 28)
|
||||
#define ActEdiTstQst (ActChgCalCrs1stDay + 29)
|
||||
#define ActEdiOneTstQst (ActChgCalCrs1stDay + 30)
|
||||
#define ActReqImpTstQst (ActChgCalCrs1stDay + 31)
|
||||
#define ActImpTstQst (ActChgCalCrs1stDay + 32)
|
||||
#define ActLstTstQst (ActChgCalCrs1stDay + 33)
|
||||
#define ActRcvTstQst (ActChgCalCrs1stDay + 34)
|
||||
#define ActReqRemTstQst (ActChgCalCrs1stDay + 35)
|
||||
#define ActRemTstQst (ActChgCalCrs1stDay + 36)
|
||||
#define ActShfTstQst (ActChgCalCrs1stDay + 37)
|
||||
#define ActCfgTst (ActChgCalCrs1stDay + 38)
|
||||
#define ActEnableTag (ActChgCalCrs1stDay + 39)
|
||||
#define ActDisableTag (ActChgCalCrs1stDay + 40)
|
||||
#define ActRenTag (ActChgCalCrs1stDay + 41)
|
||||
#define ActRcvCfgTst (ActChgCalCrs1stDay + 42)
|
||||
#define ActFrmNewPrj (ActChgCalCrs1stDay + 28)
|
||||
#define ActEdiOnePrj (ActChgCalCrs1stDay + 29)
|
||||
#define ActPrnOnePrj (ActChgCalCrs1stDay + 30)
|
||||
#define ActNewPrj (ActChgCalCrs1stDay + 31)
|
||||
#define ActChgPrj (ActChgCalCrs1stDay + 32)
|
||||
#define ActReqRemPrj (ActChgCalCrs1stDay + 33)
|
||||
#define ActRemPrj (ActChgCalCrs1stDay + 34)
|
||||
#define ActHidPrj (ActChgCalCrs1stDay + 35)
|
||||
#define ActShoPrj (ActChgCalCrs1stDay + 36)
|
||||
|
||||
#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 43)
|
||||
#define ActSeeMyTstRes (ActChgCalCrs1stDay + 44)
|
||||
#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 45)
|
||||
#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 46)
|
||||
#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 47)
|
||||
#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 48)
|
||||
#define ActSeeTst (ActChgCalCrs1stDay + 37)
|
||||
#define ActAssTst (ActChgCalCrs1stDay + 38)
|
||||
#define ActEdiTstQst (ActChgCalCrs1stDay + 39)
|
||||
#define ActEdiOneTstQst (ActChgCalCrs1stDay + 40)
|
||||
#define ActReqImpTstQst (ActChgCalCrs1stDay + 41)
|
||||
#define ActImpTstQst (ActChgCalCrs1stDay + 42)
|
||||
#define ActLstTstQst (ActChgCalCrs1stDay + 43)
|
||||
#define ActRcvTstQst (ActChgCalCrs1stDay + 44)
|
||||
#define ActReqRemTstQst (ActChgCalCrs1stDay + 45)
|
||||
#define ActRemTstQst (ActChgCalCrs1stDay + 46)
|
||||
#define ActShfTstQst (ActChgCalCrs1stDay + 47)
|
||||
#define ActCfgTst (ActChgCalCrs1stDay + 48)
|
||||
#define ActEnableTag (ActChgCalCrs1stDay + 49)
|
||||
#define ActDisableTag (ActChgCalCrs1stDay + 50)
|
||||
#define ActRenTag (ActChgCalCrs1stDay + 51)
|
||||
#define ActRcvCfgTst (ActChgCalCrs1stDay + 52)
|
||||
|
||||
#define ActSeeOneGam (ActChgCalCrs1stDay + 49)
|
||||
#define ActPlyGam (ActChgCalCrs1stDay + 50)
|
||||
#define ActPlyGam1stQst (ActChgCalCrs1stDay + 51)
|
||||
#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 52)
|
||||
#define ActPlyGamAns (ActChgCalCrs1stDay + 53)
|
||||
#define ActAnsGam (ActChgCalCrs1stDay + 54)
|
||||
#define ActFrmNewGam (ActChgCalCrs1stDay + 55)
|
||||
#define ActEdiOneGam (ActChgCalCrs1stDay + 56)
|
||||
#define ActNewGam (ActChgCalCrs1stDay + 57)
|
||||
#define ActChgGam (ActChgCalCrs1stDay + 58)
|
||||
#define ActReqRemGam (ActChgCalCrs1stDay + 59)
|
||||
#define ActRemGam (ActChgCalCrs1stDay + 60)
|
||||
#define ActReqRstGam (ActChgCalCrs1stDay + 61)
|
||||
#define ActRstGam (ActChgCalCrs1stDay + 62)
|
||||
#define ActHidGam (ActChgCalCrs1stDay + 63)
|
||||
#define ActShoGam (ActChgCalCrs1stDay + 64)
|
||||
#define ActAddOneGamQst (ActChgCalCrs1stDay + 65)
|
||||
#define ActGamLstTstQst (ActChgCalCrs1stDay + 66)
|
||||
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 67)
|
||||
#define ActReqRemGamQst (ActChgCalCrs1stDay + 68)
|
||||
#define ActRemGamQst (ActChgCalCrs1stDay + 69)
|
||||
#define ActUp_GamQst (ActChgCalCrs1stDay + 70)
|
||||
#define ActDwnGamQst (ActChgCalCrs1stDay + 71)
|
||||
#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 53)
|
||||
#define ActSeeMyTstRes (ActChgCalCrs1stDay + 54)
|
||||
#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 55)
|
||||
#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 56)
|
||||
#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 57)
|
||||
#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 58)
|
||||
|
||||
#define ActSeeOneSvy (ActChgCalCrs1stDay + 72)
|
||||
#define ActAnsSvy (ActChgCalCrs1stDay + 73)
|
||||
#define ActFrmNewSvy (ActChgCalCrs1stDay + 74)
|
||||
#define ActEdiOneSvy (ActChgCalCrs1stDay + 75)
|
||||
#define ActNewSvy (ActChgCalCrs1stDay + 76)
|
||||
#define ActChgSvy (ActChgCalCrs1stDay + 77)
|
||||
#define ActReqRemSvy (ActChgCalCrs1stDay + 78)
|
||||
#define ActRemSvy (ActChgCalCrs1stDay + 79)
|
||||
#define ActReqRstSvy (ActChgCalCrs1stDay + 80)
|
||||
#define ActRstSvy (ActChgCalCrs1stDay + 81)
|
||||
#define ActHidSvy (ActChgCalCrs1stDay + 82)
|
||||
#define ActShoSvy (ActChgCalCrs1stDay + 83)
|
||||
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 84)
|
||||
#define ActRcvSvyQst (ActChgCalCrs1stDay + 85)
|
||||
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 86)
|
||||
#define ActRemSvyQst (ActChgCalCrs1stDay + 87)
|
||||
#define ActSeeOneGam (ActChgCalCrs1stDay + 59)
|
||||
#define ActPlyGam (ActChgCalCrs1stDay + 60)
|
||||
#define ActPlyGam1stQst (ActChgCalCrs1stDay + 61)
|
||||
#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 62)
|
||||
#define ActPlyGamAns (ActChgCalCrs1stDay + 63)
|
||||
#define ActAnsGam (ActChgCalCrs1stDay + 64)
|
||||
#define ActFrmNewGam (ActChgCalCrs1stDay + 65)
|
||||
#define ActEdiOneGam (ActChgCalCrs1stDay + 66)
|
||||
#define ActNewGam (ActChgCalCrs1stDay + 67)
|
||||
#define ActChgGam (ActChgCalCrs1stDay + 68)
|
||||
#define ActReqRemGam (ActChgCalCrs1stDay + 69)
|
||||
#define ActRemGam (ActChgCalCrs1stDay + 70)
|
||||
#define ActReqRstGam (ActChgCalCrs1stDay + 71)
|
||||
#define ActRstGam (ActChgCalCrs1stDay + 72)
|
||||
#define ActHidGam (ActChgCalCrs1stDay + 73)
|
||||
#define ActShoGam (ActChgCalCrs1stDay + 74)
|
||||
#define ActAddOneGamQst (ActChgCalCrs1stDay + 75)
|
||||
#define ActGamLstTstQst (ActChgCalCrs1stDay + 76)
|
||||
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 77)
|
||||
#define ActReqRemGamQst (ActChgCalCrs1stDay + 78)
|
||||
#define ActRemGamQst (ActChgCalCrs1stDay + 79)
|
||||
#define ActUp_GamQst (ActChgCalCrs1stDay + 80)
|
||||
#define ActDwnGamQst (ActChgCalCrs1stDay + 81)
|
||||
|
||||
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 88)
|
||||
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 89)
|
||||
#define ActEdiExaAnn (ActChgCalCrs1stDay + 90)
|
||||
#define ActRcvExaAnn (ActChgCalCrs1stDay + 91)
|
||||
#define ActPrnExaAnn (ActChgCalCrs1stDay + 92)
|
||||
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 93)
|
||||
#define ActRemExaAnn (ActChgCalCrs1stDay + 94)
|
||||
#define ActHidExaAnn (ActChgCalCrs1stDay + 95)
|
||||
#define ActShoExaAnn (ActChgCalCrs1stDay + 96)
|
||||
#define ActSeeOneSvy (ActChgCalCrs1stDay + 82)
|
||||
#define ActAnsSvy (ActChgCalCrs1stDay + 83)
|
||||
#define ActFrmNewSvy (ActChgCalCrs1stDay + 84)
|
||||
#define ActEdiOneSvy (ActChgCalCrs1stDay + 85)
|
||||
#define ActNewSvy (ActChgCalCrs1stDay + 86)
|
||||
#define ActChgSvy (ActChgCalCrs1stDay + 87)
|
||||
#define ActReqRemSvy (ActChgCalCrs1stDay + 88)
|
||||
#define ActRemSvy (ActChgCalCrs1stDay + 89)
|
||||
#define ActReqRstSvy (ActChgCalCrs1stDay + 90)
|
||||
#define ActRstSvy (ActChgCalCrs1stDay + 91)
|
||||
#define ActHidSvy (ActChgCalCrs1stDay + 92)
|
||||
#define ActShoSvy (ActChgCalCrs1stDay + 93)
|
||||
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 94)
|
||||
#define ActRcvSvyQst (ActChgCalCrs1stDay + 95)
|
||||
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 96)
|
||||
#define ActRemSvyQst (ActChgCalCrs1stDay + 97)
|
||||
|
||||
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 98)
|
||||
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 99)
|
||||
#define ActEdiExaAnn (ActChgCalCrs1stDay + 100)
|
||||
#define ActRcvExaAnn (ActChgCalCrs1stDay + 101)
|
||||
#define ActPrnExaAnn (ActChgCalCrs1stDay + 102)
|
||||
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 103)
|
||||
#define ActRemExaAnn (ActChgCalCrs1stDay + 104)
|
||||
#define ActHidExaAnn (ActChgCalCrs1stDay + 105)
|
||||
#define ActShoExaAnn (ActChgCalCrs1stDay + 106)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Files tab **********************************/
|
||||
|
|
|
@ -1291,7 +1291,8 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
|
|||
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],AsgCod,Grp_ASSIGNMENT);
|
||||
Grp_ListGrpsToEditAsgPrjAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
AsgCod,Grp_ASSIGNMENT);
|
||||
|
||||
/***** End table and box *****/
|
||||
Box_EndBoxTable ();
|
||||
|
|
|
@ -1213,7 +1213,8 @@ static void Att_ShowLstGrpsToEditAttEvent (long AttCod)
|
|||
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],AttCod,Grp_ATT_EVENT);
|
||||
Grp_ListGrpsToEditAsgPrjAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
AttCod,Grp_ATT_EVENT);
|
||||
|
||||
/***** End table and box *****/
|
||||
Box_EndBoxTable ();
|
||||
|
|
|
@ -252,14 +252,29 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 17.1 (2017-09-15)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 17.2 (2017-09-17)"
|
||||
#define CSS_FILE "swad17.0.css"
|
||||
#define JS_FILE "swad16.206.3.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 17.1: Sep 14, 2017 New module swad_project. Not finished. (229123 lines)
|
||||
Version 17.2: Sep 17, 2017 New option for projects. Not finished. (229575 lines)
|
||||
12 changes necessary in database:
|
||||
CREATE TABLE IF NOT EXISTS projects (PrjCod INT NOT NULL AUTO_INCREMENT,CrsCod INT NOT NULL DEFAULT -1,Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',NumNotif INT NOT NULL DEFAULT 0,UsrCod INT NOT NULL,StartTime DATETIME NOT NULL,EndTime DATETIME NOT NULL,Title VARCHAR(2047) NOT NULL,Folder VARBINARY(255) NOT NULL,Txt TEXT NOT NULL,UNIQUE INDEX(PrjCod),INDEX(CrsCod,Hidden));
|
||||
CREATE TABLE IF NOT EXISTS prj_grp (PrjCod INT NOT NULL,GrpCod INT NOT NULL,UNIQUE INDEX(PrjCod,GrpCod));
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1674','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1675','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1676','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1677','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1678','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1679','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1680','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1681','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1682','es','N','Mostrar respuestas de pregunta juego');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1683','es','N','Mostrar respuestas de pregunta juego');
|
||||
|
||||
Version 17.1: Sep 15, 2017 New module swad_project. Not finished. (229123 lines)
|
||||
Copy the following icons to icon public directory:
|
||||
sudo cp icon/iconset/awesome/action64x64/guide64x64.png /var/www/html/swad/icon/iconset/awesome/action64x64/
|
||||
sudo cp icon/iconset/awesome/action64x64/project64x64.png /var/www/html/swad/icon/iconset/awesome/action64x64/
|
||||
|
|
|
@ -1985,6 +1985,55 @@ mysql> DESCRIBE plugins;
|
|||
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||
"UNIQUE INDEX(PlgCod))");
|
||||
|
||||
/***** Table prj_grp *****/
|
||||
/*
|
||||
mysql> DESCRIBE prj_grp;
|
||||
+--------+---------+------+-----+---------+-------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+--------+---------+------+-----+---------+-------+
|
||||
| PrjCod | int(11) | NO | PRI | NULL | |
|
||||
| GrpCod | int(11) | NO | PRI | NULL | |
|
||||
+--------+---------+------+-----+---------+-------+
|
||||
2 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_grp ("
|
||||
"PrjCod INT NOT NULL,"
|
||||
"GrpCod INT NOT NULL,"
|
||||
"UNIQUE INDEX(PrjCod,GrpCod))");
|
||||
|
||||
/***** Table projects *****/
|
||||
/*
|
||||
mysql> DESCRIBE projects;
|
||||
+-----------+----------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-----------+----------------+------+-----+---------+----------------+
|
||||
| PrjCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||
| Hidden | enum('N','Y') | NO | | N | |
|
||||
| NumNotif | int(11) | NO | | 0 | |
|
||||
| UsrCod | int(11) | NO | | NULL | |
|
||||
| StartTime | datetime | NO | | NULL | |
|
||||
| EndTime | datetime | NO | | NULL | |
|
||||
| Title | varchar(2047) | NO | | NULL | |
|
||||
| Folder | varbinary(255) | NO | | NULL | |
|
||||
| Txt | text | NO | | NULL | |
|
||||
+-----------+----------------+------+-----+---------+----------------+
|
||||
10 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS projects ("
|
||||
"PrjCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||
"Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"NumNotif INT NOT NULL DEFAULT 0,"
|
||||
"UsrCod INT NOT NULL,"
|
||||
"StartTime DATETIME NOT NULL,"
|
||||
"EndTime DATETIME NOT NULL,"
|
||||
"Title VARCHAR(2047) NOT NULL," // Prj_MAX_BYTES_ASSIGNMENT_TITLE
|
||||
"Folder VARBINARY(255) NOT NULL," // Brw_MAX_BYTES_FOLDER
|
||||
"Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||
"UNIQUE INDEX(PrjCod),"
|
||||
"INDEX(CrsCod,Hidden))");
|
||||
|
||||
/***** Table sessions *****/
|
||||
/*
|
||||
mysql> DESCRIBE sessions;
|
||||
|
|
|
@ -2002,8 +2002,8 @@ static void Gam_ShowLstGrpsToEditGame (long GamCod)
|
|||
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
GamCod,Grp_SURVEY);
|
||||
Grp_ListGrpsToEditAsgPrjAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
GamCod,Grp_SURVEY);
|
||||
|
||||
/***** End table and box *****/
|
||||
Box_EndBoxTable ();
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include "swad_icon.h"
|
||||
#include "swad_parameter.h"
|
||||
#include "swad_preference.h"
|
||||
#include "swad_project.h"
|
||||
#include "swad_role.h"
|
||||
#include "swad_theme.h"
|
||||
#include "swad_web_service.h"
|
||||
|
@ -348,6 +349,11 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Asgs.LstAsgCods = NULL;
|
||||
Gbl.Asgs.SelectedOrder = Asg_ORDER_DEFAULT;
|
||||
|
||||
Gbl.Prjs.LstIsRead = false; // List is not read
|
||||
Gbl.Prjs.Num = 0;
|
||||
Gbl.Prjs.LstPrjCods = NULL;
|
||||
Gbl.Prjs.SelectedOrder = Prj_ORDER_DEFAULT;
|
||||
|
||||
Gbl.AttEvents.LstIsRead = false; // List is not read
|
||||
Gbl.AttEvents.Num = 0;
|
||||
Gbl.AttEvents.Lst = NULL;
|
||||
|
|
|
@ -569,6 +569,15 @@ struct Globals
|
|||
long AsgCodToEdit; // Used as parameter in contextual links
|
||||
unsigned CurrentPage;
|
||||
} Asgs;
|
||||
struct
|
||||
{
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
unsigned Num; // Number of projects
|
||||
long *LstPrjCods; // List of project codes
|
||||
Dat_StartEndTime_t SelectedOrder;
|
||||
long PrjCodToEdit; // Used as parameter in contextual links
|
||||
unsigned CurrentPage;
|
||||
} Prjs;
|
||||
struct
|
||||
{
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "swad_group.h"
|
||||
#include "swad_notification.h"
|
||||
#include "swad_parameter.h"
|
||||
#include "swad_project.h"
|
||||
#include "swad_table.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1650,8 +1651,8 @@ static void Grp_WriteHeadingGroups (void)
|
|||
/********* to edit assignments, attendance events, surveys or games **********/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Grp_ListGrpsToEditAsgAttSvyGam (struct GroupType *GrpTyp,long Cod,
|
||||
Grp_AsgAttSvyGam_t Grp_AsgAttOrSvy)
|
||||
void Grp_ListGrpsToEditAsgPrjAttSvyGam (struct GroupType *GrpTyp,long Cod,
|
||||
Grp_AsgPrjAttSvyGam_t Grp_AsgAttOrSvy)
|
||||
{
|
||||
struct ListCodGrps LstGrpsIBelong;
|
||||
unsigned NumGrpThisType;
|
||||
|
@ -1691,6 +1692,9 @@ void Grp_ListGrpsToEditAsgAttSvyGam (struct GroupType *GrpTyp,long Cod,
|
|||
case Grp_ASSIGNMENT:
|
||||
AssociatedToGrp = Asg_CheckIfAsgIsAssociatedToGrp (Cod,Grp->GrpCod);
|
||||
break;
|
||||
case Grp_PROJECT:
|
||||
AssociatedToGrp = Prj_CheckIfPrjIsAssociatedToGrp (Cod,Grp->GrpCod);
|
||||
break;
|
||||
case Grp_ATT_EVENT:
|
||||
AssociatedToGrp = Att_CheckIfAttEventIsAssociatedToGrp (Cod,Grp->GrpCod);
|
||||
break;
|
||||
|
|
|
@ -124,10 +124,11 @@ typedef enum
|
|||
typedef enum
|
||||
{
|
||||
Grp_ASSIGNMENT,
|
||||
Grp_PROJECT,
|
||||
Grp_ATT_EVENT,
|
||||
Grp_SURVEY,
|
||||
Grp_GAME,
|
||||
} Grp_AsgAttSvyGam_t;
|
||||
} Grp_AsgPrjAttSvyGam_t;
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public prototypes ****************************/
|
||||
|
@ -152,8 +153,8 @@ void Grp_RegisterUsrIntoGroups (struct UsrData *UsrDat,struct ListCodGrps *LstGr
|
|||
unsigned Grp_RemoveUsrFromGroups (struct UsrData *UsrDat,struct ListCodGrps *LstGrps);
|
||||
void Grp_RemUsrFromAllGrpsInCrs (long UsrCod,long CrsCod);
|
||||
void Grp_RemUsrFromAllGrps (long UsrCod);
|
||||
void Grp_ListGrpsToEditAsgAttSvyGam (struct GroupType *GrpTyp,long Cod,
|
||||
Grp_AsgAttSvyGam_t Grp_AsgOrSvy);
|
||||
void Grp_ListGrpsToEditAsgPrjAttSvyGam (struct GroupType *GrpTyp,long Cod,
|
||||
Grp_AsgPrjAttSvyGam_t Grp_AsgOrSvy);
|
||||
|
||||
void Grp_ReqRegisterInGrps (void);
|
||||
void Grp_ShowLstGrpsToChgMyGrps (void);
|
||||
|
|
|
@ -967,6 +967,70 @@ const char *Hlp_ASSESSMENT_Assignments_edit_assignment =
|
|||
"ASSESSMENT.Assignments.en#edit-assignment";
|
||||
#endif
|
||||
|
||||
|
||||
const char *Hlp_ASSESSMENT_Projects =
|
||||
#if L==1
|
||||
"ASSESSMENT.Projects.es";
|
||||
#elif L==2
|
||||
"ASSESSMENT.Projects.en";
|
||||
#elif L==3
|
||||
"ASSESSMENT.Projects.en";
|
||||
#elif L==4
|
||||
"ASSESSMENT.Projects.es";
|
||||
#elif L==5
|
||||
"ASSESSMENT.Projects.en";
|
||||
#elif L==6
|
||||
"ASSESSMENT.Projects.es";
|
||||
#elif L==7
|
||||
"ASSESSMENT.Projects.en";
|
||||
#elif L==8
|
||||
"ASSESSMENT.Projects.en";
|
||||
#elif L==9
|
||||
"ASSESSMENT.Projects.en";
|
||||
#endif
|
||||
|
||||
const char *Hlp_ASSESSMENT_Projects_new_project =
|
||||
#if L==1
|
||||
"ASSESSMENT.Projects.es#nuevo-proyecto";
|
||||
#elif L==2
|
||||
"ASSESSMENT.Projects.en#new-project";
|
||||
#elif L==3
|
||||
"ASSESSMENT.Projects.en#new-project";
|
||||
#elif L==4
|
||||
"ASSESSMENT.Projects.es#nuevo-proyecto";
|
||||
#elif L==5
|
||||
"ASSESSMENT.Projects.en#new-project";
|
||||
#elif L==6
|
||||
"ASSESSMENT.Projects.es#nuevo-proyecto";
|
||||
#elif L==7
|
||||
"ASSESSMENT.Projects.en#new-project";
|
||||
#elif L==8
|
||||
"ASSESSMENT.Projects.en#new-project";
|
||||
#elif L==9
|
||||
"ASSESSMENT.Projects.en#new-project";
|
||||
#endif
|
||||
|
||||
const char *Hlp_ASSESSMENT_Projects_edit_project =
|
||||
#if L==1
|
||||
"ASSESSMENT.Projects.es#editar-proyecto";
|
||||
#elif L==2
|
||||
"ASSESSMENT.Projects.en#edit-project";
|
||||
#elif L==3
|
||||
"ASSESSMENT.Projects.en#edit-project";
|
||||
#elif L==4
|
||||
"ASSESSMENT.Projects.es#editar-proyecto";
|
||||
#elif L==5
|
||||
"ASSESSMENT.Projects.en#edit-project";
|
||||
#elif L==6
|
||||
"ASSESSMENT.Projects.es#editar-proyecto";
|
||||
#elif L==7
|
||||
"ASSESSMENT.Projects.en#edit-project";
|
||||
#elif L==8
|
||||
"ASSESSMENT.Projects.en#edit-project";
|
||||
#elif L==9
|
||||
"ASSESSMENT.Projects.en#edit-project";
|
||||
#endif
|
||||
|
||||
const char *Hlp_ASSESSMENT_Tests =
|
||||
#if L==1
|
||||
"ASSESSMENT.Tests.es";
|
||||
|
|
10
swad_menu.c
10
swad_menu.c
|
@ -178,11 +178,11 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB
|
|||
{
|
||||
ActSeeAss, // 0
|
||||
ActSeeAsg, // 1
|
||||
ActReqTst, // 2
|
||||
ActSeeAllGam, // 3
|
||||
ActSeeAllSvy, // 4
|
||||
ActSeeAllExaAnn, // 5
|
||||
0, // 6
|
||||
ActSeePrj, // 2
|
||||
ActReqTst, // 3
|
||||
ActSeeAllGam, // 4
|
||||
ActSeeAllSvy, // 5
|
||||
ActSeeAllExaAnn, // 6
|
||||
0, // 7
|
||||
0, // 8
|
||||
0, // 9
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "swad_forum.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_parameter.h"
|
||||
#include "swad_project.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** External global variables from others modules ***************/
|
||||
|
@ -48,6 +49,7 @@ extern const Act_Action_t For_ActionsSeePstFor[For_NUM_TYPES_FORUM];
|
|||
static const char *Pag_ParamNumPag[Pag_NUM_WHAT_PAGINATE] =
|
||||
{
|
||||
"NumPagAsg", // Pag_ASSIGNMENTS
|
||||
"NumPagPrj", // Pag_PROJECTS
|
||||
"NumPagGam", // Pag_GAMES
|
||||
"NumPagSvy", // Pag_SURVEYS
|
||||
"NumPagAtt", // Pag_ATT_EVENTS
|
||||
|
@ -160,6 +162,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Asg_PutHiddenParamAsgOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_PROJECTS:
|
||||
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,1);
|
||||
Prj_PutHiddenParamPrjOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_GAMES:
|
||||
Act_FormStartAnchor (ActSeeAllGam,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,1);
|
||||
|
@ -261,6 +269,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Asg_PutHiddenParamAsgOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_PROJECTS:
|
||||
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,1);
|
||||
Prj_PutHiddenParamPrjOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_GAMES:
|
||||
Act_FormStartAnchor (ActSeeAllGam,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,1);
|
||||
|
@ -348,6 +362,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Asg_PutHiddenParamAsgOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_PROJECTS:
|
||||
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage);
|
||||
Prj_PutHiddenParamPrjOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_GAMES:
|
||||
Act_FormStartAnchor (ActSeeAllGam,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage);
|
||||
|
@ -446,6 +466,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Asg_PutHiddenParamAsgOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_PROJECTS:
|
||||
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,NumPage);
|
||||
Prj_PutHiddenParamPrjOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_GAMES:
|
||||
Act_FormStartAnchor (ActSeeAllGam,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,NumPage);
|
||||
|
@ -532,6 +558,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Asg_PutHiddenParamAsgOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_PROJECTS:
|
||||
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage);
|
||||
Prj_PutHiddenParamPrjOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_GAMES:
|
||||
Act_FormStartAnchor (ActSeeAllGam,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage);
|
||||
|
@ -617,6 +649,12 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Asg_PutHiddenParamAsgOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_PROJECTS:
|
||||
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags);
|
||||
Prj_PutHiddenParamPrjOrder ();
|
||||
Grp_PutParamWhichGrps ();
|
||||
break;
|
||||
case Pag_GAMES:
|
||||
Act_FormStartAnchor (ActSeeAllGam,Pagination->Anchor);
|
||||
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags);
|
||||
|
|
507
swad_project.c
507
swad_project.c
File diff suppressed because it is too large
Load Diff
|
@ -78,10 +78,6 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj);
|
|||
void Prj_GetDataOfProjectByFolder (struct Project *Prj);
|
||||
void Prj_FreeListProjects (void);
|
||||
|
||||
void Prj_GetNotifProject (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
||||
char **ContentStr,
|
||||
long PrjCod,bool GetContent);
|
||||
|
||||
long Prj_GetParamPrjCod (void);
|
||||
void Prj_ReqRemProject (void);
|
||||
void Prj_RemoveProject (void);
|
||||
|
@ -95,6 +91,6 @@ void Prj_RemoveCrsProjects (long CrsCod);
|
|||
unsigned Prj_GetNumProjectsInCrs(long CrsCod);
|
||||
|
||||
unsigned Prj_GetNumCoursesWithProjects (Sco_Scope_t Scope);
|
||||
unsigned Prj_GetNumProjects (Sco_Scope_t Scope,unsigned *NumNotif);
|
||||
unsigned Prj_GetNumProjects (Sco_Scope_t Scope);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2044,7 +2044,8 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
|
|||
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
||||
NumGrpTyp++)
|
||||
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||
Grp_ListGrpsToEditAsgAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],SvyCod,Grp_SURVEY);
|
||||
Grp_ListGrpsToEditAsgPrjAttSvyGam (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp],
|
||||
SvyCod,Grp_SURVEY);
|
||||
|
||||
/***** End table and box *****/
|
||||
Box_EndBoxTable ();
|
||||
|
|
471
swad_text.c
471
swad_text.c
|
@ -2529,6 +2529,48 @@ const char *Txt_Already_existed_a_game_with_the_title_X = // Warning: it is very
|
|||
"Já existe um jogo com o título <strong>%s</strong>.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Already_existed_a_project_with_the_folder_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Ja existia un projecte amb la carpeta <strong>%s</strong>.";
|
||||
#elif L==2
|
||||
"Es gibt bereits einen Projekt im Verzeichnis <strong>%s</strong>.";
|
||||
#elif L==3
|
||||
"There is already a project with folder <strong>%s</strong>.";
|
||||
#elif L==4
|
||||
"Ya existía un proyecto con la carpeta <strong>%s</strong>.";
|
||||
#elif L==5
|
||||
"Il existe déjà un projet avec le répertoire <strong>%s</strong>.";
|
||||
#elif L==6
|
||||
"Ya existía un proyecto con la carpeta <strong>%s</strong>."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Esiste già un progetto con la cartella <strong>%s</strong>.";
|
||||
#elif L==8
|
||||
"Istniał projekt z folderem <strong>%s</strong>.";
|
||||
#elif L==9
|
||||
"Já existe um projeto com o diretório <strong>%s</strong>.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Already_existed_a_project_with_the_title_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Ja existia un projecte amb el títol <strong>%s</strong>.";
|
||||
#elif L==2
|
||||
"Es gibt bereits einen Projekt mit dem Namen <strong>%s</strong>.";
|
||||
#elif L==3
|
||||
"Already existed a project with the title <strong>%s</strong>.";
|
||||
#elif L==4
|
||||
"Ya existía un proyecto con el título <strong>%s</strong>.";
|
||||
#elif L==5
|
||||
"Il existe déjà un projet du titre <strong>%s</strong>.";
|
||||
#elif L==6
|
||||
"Ya existía un proyecto con el título <strong>%s</strong>."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Esiste già un progetto con il titolo <strong>%s</strong>.";
|
||||
#elif L==8
|
||||
"Był już projekt o tytule <strong>%s</strong>.";
|
||||
#elif L==9
|
||||
"Já existe um projeto com o título <strong>%s</strong>.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Already_existed_a_survey_with_the_title_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Ja existia una enquesta amb el títol <strong>%s</strong>.";
|
||||
|
@ -6777,6 +6819,27 @@ const char *Txt_Create_plugin =
|
|||
"Criar plugin";
|
||||
#endif
|
||||
|
||||
const char *Txt_Create_project =
|
||||
#if L==1
|
||||
"Crear projecte";
|
||||
#elif L==2
|
||||
"Projekt eingeben";
|
||||
#elif L==3
|
||||
"Create project";
|
||||
#elif L==4
|
||||
"Crear proyecto";
|
||||
#elif L==5
|
||||
"Créer projet";
|
||||
#elif L==6
|
||||
"Crear proyecto"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Crea progetto";
|
||||
#elif L==8
|
||||
"Tworzenie projekt";
|
||||
#elif L==9
|
||||
"Criar projeto";
|
||||
#endif
|
||||
|
||||
const char *Txt_Create_question =
|
||||
#if L==1
|
||||
"Crear pregunta";
|
||||
|
@ -6926,7 +6989,7 @@ const char *Txt_Created_new_announcement_of_exam =
|
|||
|
||||
const char *Txt_Created_new_assignment_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Creada nueva actividad <strong>%s</strong>."; // Necessita traduccio
|
||||
"Creada nova activitat <strong>%s</strong>.";
|
||||
#elif L==2
|
||||
"Neue Aufgabe <strong>%s</strong> erstellt.";
|
||||
#elif L==3
|
||||
|
@ -6947,7 +7010,7 @@ const char *Txt_Created_new_assignment_X = // Warning: it is very important to i
|
|||
|
||||
const char *Txt_Created_new_banner_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Creado nuevo banner <strong>%s</strong>."; // Necessita traduccio
|
||||
"Creat nou banner <strong>%s</strong>.";
|
||||
#elif L==2
|
||||
"Neuer Werbebanner <strong>%s</strong> erstellt.";
|
||||
#elif L==3
|
||||
|
@ -6968,7 +7031,7 @@ const char *Txt_Created_new_banner_X = // Warning: it is very important to inclu
|
|||
|
||||
const char *Txt_Created_new_centre_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Creado nuevo centro <strong>%s</strong>."; // Necessita traduccio
|
||||
"Creat nou centre <strong>%s</strong>."; // Necessita traduccio
|
||||
#elif L==2
|
||||
"Neues Lehrinstitut <strong>%s</strong> eingegeben.";
|
||||
#elif L==3
|
||||
|
@ -7260,6 +7323,27 @@ const char *Txt_Created_new_plugin_X = // Warning: it is very important to inclu
|
|||
"Criado novo plugin <strong>%s</strong>.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Created_new_project_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Creat nou projecte <strong>%s</strong>."; // Necessita traduccio
|
||||
#elif L==2
|
||||
"Neues Projekt <strong>%s</strong> eingegeben.";
|
||||
#elif L==3
|
||||
"Created new project <strong>%s</strong>.";
|
||||
#elif L==4
|
||||
"Creado nuevo proyecto <strong>%s</strong>.";
|
||||
#elif L==5
|
||||
"Créé nouveau projet <strong>%s</strong>.";
|
||||
#elif L==6
|
||||
"Creado nuevo proyecto <strong>%s</strong>."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Creato nuovo progetto <strong>%s</strong>.";
|
||||
#elif L==8
|
||||
"Utworzono nowe projekt <strong>%s</strong>.";
|
||||
#elif L==9
|
||||
"Criado novo projeto <strong>%s</strong>.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Created_new_record_field_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Creado nuevo campo de ficha <strong>%s</strong>."; // Necessita traduccio
|
||||
|
@ -9165,7 +9249,7 @@ const char *Txt_Do_you_really_want_to_remove_the_X_students_from_the_course_Y_ =
|
|||
|
||||
const char *Txt_Do_you_really_want_to_remove_the_assignment_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"¿Realmente desea eliminar la actividad <strong>%s</strong>?"; // Necessita traduccio
|
||||
"¿De veres voleu eliminar l'activitat <strong>%s</strong>?";
|
||||
#elif L==2
|
||||
"Wollen Sie die Aufgabe <strong>%s</strong> wirklich entfernen?";
|
||||
#elif L==3
|
||||
|
@ -9586,6 +9670,27 @@ const char *Txt_Do_you_really_want_to_remove_the_photo_of_X = // Warning: it is
|
|||
"Você realmente deseja remover la foto de <strong>%s</strong>?";
|
||||
#endif
|
||||
|
||||
const char *Txt_Do_you_really_want_to_remove_the_project_X = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"¿De veres voleu eliminar el projecte <strong>%s</strong>?";
|
||||
#elif L==2
|
||||
"Wollen Sie die Projekt <strong>%s</strong> wirklich entfernen?";
|
||||
#elif L==3
|
||||
"Do you really want to remove the project <strong>%s</strong>?";
|
||||
#elif L==4
|
||||
"¿Realmente desea eliminar el proyecto <strong>%s</strong>?";
|
||||
#elif L==5
|
||||
"Voulez-vous vraiment supprimer le projet <strong>%s</strong>?";
|
||||
#elif L==6
|
||||
"¿Realmente desea eliminar el proyecto <strong>%s</strong>?"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Vuoi realmente rimuovere il progetto <strong>%s</strong>?";
|
||||
#elif L==8
|
||||
"Czy na pewno chcesz usunac projekt <strong>%s</strong>?";
|
||||
#elif L==9
|
||||
"Você realmente deseja remover o projeto <strong>%s</strong>?";
|
||||
#endif
|
||||
|
||||
const char *Txt_Do_you_really_want_to_remove_the_question_X = // Warning: it is very important to include %lu in the following sentences
|
||||
#if L==1
|
||||
"De veres voleu eliminar pregunta <strong>%lu</strong>?";
|
||||
|
@ -10318,6 +10423,48 @@ const char *Txt_Edit_my_webs_networks =
|
|||
"Editar as minhas webs / redes";
|
||||
#endif
|
||||
|
||||
const char *Txt_Edit_plain_text =
|
||||
#if L==1
|
||||
"Editar text sense format";
|
||||
#elif L==2
|
||||
"Plain Text bearbeiten";
|
||||
#elif L==3
|
||||
"Edit plain text";
|
||||
#elif L==4
|
||||
"Editar texto sin formato";
|
||||
#elif L==5
|
||||
"Éditer texte simple";
|
||||
#elif L==6
|
||||
"Editar texto sin formato"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Editare testo normale";
|
||||
#elif L==8
|
||||
"Edycja tekstu zwykły";
|
||||
#elif L==9
|
||||
"Editar texto simples";
|
||||
#endif
|
||||
|
||||
const char *Txt_Edit_project =
|
||||
#if L==1
|
||||
"Editar projecte";
|
||||
#elif L==2
|
||||
"Projekt bearbeiten";
|
||||
#elif L==3
|
||||
"Edit project";
|
||||
#elif L==4
|
||||
"Editar proyecto";
|
||||
#elif L==5
|
||||
"Éditer projet";
|
||||
#elif L==6
|
||||
"Editar proyecto"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Editare progetto";
|
||||
#elif L==8
|
||||
"Edycja projekt";
|
||||
#elif L==9
|
||||
"Editar projeto";
|
||||
#endif
|
||||
|
||||
const char *Txt_Edit_record_fields =
|
||||
#if L==1
|
||||
"Editar camps de fitxes";
|
||||
|
@ -10360,27 +10507,6 @@ const char *Txt_Edit_survey =
|
|||
"Editar inquérito";
|
||||
#endif
|
||||
|
||||
const char *Txt_Edit_plain_text =
|
||||
#if L==1
|
||||
"Editar text sense format";
|
||||
#elif L==2
|
||||
"Plain Text bearbeiten";
|
||||
#elif L==3
|
||||
"Edit plain text";
|
||||
#elif L==4
|
||||
"Editar texto sin formato";
|
||||
#elif L==5
|
||||
"Éditer texte simple";
|
||||
#elif L==6
|
||||
"Editar texto sin formato"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Editare testo normale";
|
||||
#elif L==8
|
||||
"Edycja tekstu zwykły";
|
||||
#elif L==9
|
||||
"Editar texto simples";
|
||||
#endif
|
||||
|
||||
const char *Txt_Edit_rich_text =
|
||||
#if L==1
|
||||
"Editar text enriquit";
|
||||
|
@ -19191,7 +19317,28 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Atividades"
|
||||
#endif
|
||||
,
|
||||
// 2: ActReqTst
|
||||
// 2: ActSeePrj
|
||||
#if L==1
|
||||
"Projectes"
|
||||
#elif L==2
|
||||
"Projekte"
|
||||
#elif L==3
|
||||
"Projects"
|
||||
#elif L==4
|
||||
"Proyectos"
|
||||
#elif L==5
|
||||
"Projets"
|
||||
#elif L==6
|
||||
"Proyectos" // Okoteve traducción
|
||||
#elif L==7
|
||||
"Progetti"
|
||||
#elif L==8
|
||||
"Projekty"
|
||||
#elif L==9
|
||||
"Projetos"
|
||||
#endif
|
||||
,
|
||||
// 3: ActReqTst
|
||||
#if L==1
|
||||
"Tests"
|
||||
#elif L==2
|
||||
|
@ -19212,7 +19359,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Testes"
|
||||
#endif
|
||||
,
|
||||
// 3: ActSeeAllGam
|
||||
// 4: ActSeeAllGam
|
||||
#if L==1
|
||||
"Jocs"
|
||||
#elif L==2
|
||||
|
@ -19233,7 +19380,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Jogos"
|
||||
#endif
|
||||
,
|
||||
// 4: ActSeeAllSvy
|
||||
// 5: ActSeeAllSvy
|
||||
#if L==1
|
||||
"Enquestes"
|
||||
#elif L==2
|
||||
|
@ -19254,7 +19401,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Inquéritos"
|
||||
#endif
|
||||
,
|
||||
// 5: ActSeeAllExaAnn
|
||||
// 6: ActSeeAllExaAnn
|
||||
#if L==1
|
||||
"Convocatòries"
|
||||
#elif L==2
|
||||
|
@ -19275,7 +19422,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Chamadas"
|
||||
#endif
|
||||
,
|
||||
NULL, // 6
|
||||
NULL, // 7
|
||||
NULL, // 8
|
||||
NULL, // 9
|
||||
|
@ -21136,7 +21282,28 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Atividades"
|
||||
#endif
|
||||
,
|
||||
// 2: ActReqTst
|
||||
// 2: ActSeePrj
|
||||
#if L==1
|
||||
"Projectes"
|
||||
#elif L==2
|
||||
"Projekte"
|
||||
#elif L==3
|
||||
"Projects (final degree projects…)"
|
||||
#elif L==4
|
||||
"Proyectos (proyectos fin de carrera, trabajos fin de grado…)"
|
||||
#elif L==5
|
||||
"Projets"
|
||||
#elif L==6
|
||||
"Proyectos (proyectos fin de carrera, trabajos fin de grado…)" // Okoteve traducción
|
||||
#elif L==7
|
||||
"Progetti"
|
||||
#elif L==8
|
||||
"Projekty"
|
||||
#elif L==9
|
||||
"Projetos"
|
||||
#endif
|
||||
,
|
||||
// 3: ActReqTst
|
||||
#if L==1
|
||||
"Tests sobre els continguts d'aquesta assignatura"
|
||||
#elif L==2
|
||||
|
@ -21157,7 +21324,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Testes"
|
||||
#endif
|
||||
,
|
||||
// 3: ActSeeAllGam
|
||||
// 4: ActSeeAllGam
|
||||
#if L==1
|
||||
"Jocs (comandament a distància)"
|
||||
#elif L==2
|
||||
|
@ -21178,7 +21345,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Jogos (controlo remoto)"
|
||||
#endif
|
||||
,
|
||||
// 4: ActSeeAllSvy
|
||||
// 5: ActSeeAllSvy
|
||||
#if L==1
|
||||
"Enquestes anònimes"
|
||||
#elif L==2
|
||||
|
@ -21199,7 +21366,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Inquéritos"
|
||||
#endif
|
||||
,
|
||||
// 5: ActSeeAllExaAnn
|
||||
// 6: ActSeeAllExaAnn
|
||||
#if L==1
|
||||
"Llistat de convocatòries d'exàmens d'aquesta assignatura"
|
||||
#elif L==2
|
||||
|
@ -21220,7 +21387,6 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
"Chamadas para exames"
|
||||
#endif
|
||||
,
|
||||
NULL, // 6
|
||||
NULL, // 7
|
||||
NULL, // 8
|
||||
NULL, // 9
|
||||
|
@ -24514,6 +24680,27 @@ const char *Txt_New_post =
|
|||
"Novo post";
|
||||
#endif
|
||||
|
||||
const char *Txt_New_project =
|
||||
#if L==1
|
||||
"Nou projecte";
|
||||
#elif L==2
|
||||
"Neues Projekt";
|
||||
#elif L==3
|
||||
"New project";
|
||||
#elif L==4
|
||||
"Nuevo proyecto";
|
||||
#elif L==5
|
||||
"Nouveau projet";
|
||||
#elif L==6
|
||||
"Nuevo proyecto"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Nuovo progetto";
|
||||
#elif L==8
|
||||
"Nowy projekt";
|
||||
#elif L==9
|
||||
"Novo projeto";
|
||||
#endif
|
||||
|
||||
const char *Txt_New_question =
|
||||
#if L==1
|
||||
"Nova pregunta";
|
||||
|
@ -25792,6 +25979,27 @@ const char *Txt_No_of_users =
|
|||
"Nº de utilizadores";
|
||||
#endif
|
||||
|
||||
const char *Txt_No_projects =
|
||||
#if L==1
|
||||
"No hi ha projectes.";
|
||||
#elif L==2
|
||||
"Keine Projekte.";
|
||||
#elif L==3
|
||||
"No projects.";
|
||||
#elif L==4
|
||||
"No hay proyectos.";
|
||||
#elif L==5
|
||||
"Il n'y a pas de projets.";
|
||||
#elif L==6
|
||||
"No hay proyectos."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Non ci sono progetti.";
|
||||
#elif L==8
|
||||
"Brak projekty.";
|
||||
#elif L==9
|
||||
"Não há projetos.";
|
||||
#endif
|
||||
|
||||
const char *Txt_No_questions_found_matching_your_search_criteria =
|
||||
#if L==1
|
||||
"No hay preguntas con el criterio de búsqueda seleccionado."; // Necessita traduccio
|
||||
|
@ -29822,6 +30030,70 @@ const char *Txt_Possibly_duplicate_users =
|
|||
"Usuários possivelmente duplicados";
|
||||
#endif
|
||||
|
||||
|
||||
const char *Txt_Post = // Publish (verb)
|
||||
#if L==1
|
||||
"Publicar";
|
||||
#elif L==2
|
||||
"Veröffentlichen";
|
||||
#elif L==3
|
||||
"Post";
|
||||
#elif L==4
|
||||
"Publicar";
|
||||
#elif L==5
|
||||
"Publier";
|
||||
#elif L==6
|
||||
"Publicar"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Pubblicare";
|
||||
#elif L==8
|
||||
"Publikować";
|
||||
#elif L==9
|
||||
"Publicar";
|
||||
#endif
|
||||
|
||||
const char *Txt_post =
|
||||
#if L==1
|
||||
"comentari";
|
||||
#elif L==2
|
||||
"Post";
|
||||
#elif L==3
|
||||
"post";
|
||||
#elif L==4
|
||||
"comentario";
|
||||
#elif L==5
|
||||
"post";
|
||||
#elif L==6
|
||||
"marandu";
|
||||
#elif L==7
|
||||
"post";
|
||||
#elif L==8
|
||||
"post";
|
||||
#elif L==9
|
||||
"post";
|
||||
#endif
|
||||
|
||||
const char *Txt_posts =
|
||||
#if L==1
|
||||
"comentaris";
|
||||
#elif L==2
|
||||
"Nachrichten";
|
||||
#elif L==3
|
||||
"posts";
|
||||
#elif L==4
|
||||
"comentarios";
|
||||
#elif L==5
|
||||
"posts";
|
||||
#elif L==6
|
||||
"marandu";
|
||||
#elif L==7
|
||||
"post";
|
||||
#elif L==8
|
||||
"posty";
|
||||
#elif L==9
|
||||
"posts";
|
||||
#endif
|
||||
|
||||
const char *Txt_Post_X_allowed = // Warning: it is very important to include %u in the following sentences
|
||||
#if L==1
|
||||
"Comentario %u permitido."; // Necessita traduccio
|
||||
|
@ -30240,67 +30512,25 @@ const char *Txt_Private_available_to_certain_users_identified =
|
|||
"Privado, disponível para alguns usuários identificados";
|
||||
#endif
|
||||
|
||||
const char *Txt_Post = // Publish (verb)
|
||||
const char *Txt_Projects =
|
||||
#if L==1
|
||||
"Publicar";
|
||||
"Projectes";
|
||||
#elif L==2
|
||||
"Veröffentlichen";
|
||||
"Projekte";
|
||||
#elif L==3
|
||||
"Post";
|
||||
"Projects";
|
||||
#elif L==4
|
||||
"Publicar";
|
||||
"Proyectos";
|
||||
#elif L==5
|
||||
"Publier";
|
||||
"Projets";
|
||||
#elif L==6
|
||||
"Publicar"; // Okoteve traducción
|
||||
"Proyectos"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Pubblicare";
|
||||
"Progetti";
|
||||
#elif L==8
|
||||
"Publikować";
|
||||
"Projekty";
|
||||
#elif L==9
|
||||
"Publicar";
|
||||
#endif
|
||||
|
||||
const char *Txt_post =
|
||||
#if L==1
|
||||
"comentari";
|
||||
#elif L==2
|
||||
"Post";
|
||||
#elif L==3
|
||||
"post";
|
||||
#elif L==4
|
||||
"comentario";
|
||||
#elif L==5
|
||||
"post";
|
||||
#elif L==6
|
||||
"marandu";
|
||||
#elif L==7
|
||||
"post";
|
||||
#elif L==8
|
||||
"post";
|
||||
#elif L==9
|
||||
"post";
|
||||
#endif
|
||||
|
||||
const char *Txt_posts =
|
||||
#if L==1
|
||||
"comentaris";
|
||||
#elif L==2
|
||||
"Nachrichten";
|
||||
#elif L==3
|
||||
"posts";
|
||||
#elif L==4
|
||||
"comentarios";
|
||||
#elif L==5
|
||||
"posts";
|
||||
#elif L==6
|
||||
"marandu";
|
||||
#elif L==7
|
||||
"post";
|
||||
#elif L==8
|
||||
"posty";
|
||||
#elif L==9
|
||||
"posts";
|
||||
"Projetos";
|
||||
#endif
|
||||
|
||||
const char *Txt_Public_agenda_USER = // Warning: it is very important to include %s in the following sentences
|
||||
|
@ -31884,6 +32114,27 @@ const char *Txt_Remove_photo =
|
|||
"Remover foto";
|
||||
#endif
|
||||
|
||||
const char *Txt_Remove_project =
|
||||
#if L==1
|
||||
"Eliminar projecte";
|
||||
#elif L==2
|
||||
"Entfernen Projekt";
|
||||
#elif L==3
|
||||
"Remove project";
|
||||
#elif L==4
|
||||
"Eliminar proyecto";
|
||||
#elif L==5
|
||||
"Supprimer projet";
|
||||
#elif L==6
|
||||
"Eliminar proyecto"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Rimuovere progetto";
|
||||
#elif L==8
|
||||
"Usuń projekt";
|
||||
#elif L==9
|
||||
"Remover projeto";
|
||||
#endif
|
||||
|
||||
const char *Txt_Remove_question =
|
||||
#if L==1
|
||||
"Eliminar pregunta";
|
||||
|
@ -42764,7 +43015,7 @@ const char *Txt_The_answers_of_the_question_with_code_X_will_appear_without_shuf
|
|||
|
||||
const char *Txt_The_assignment_has_been_modified =
|
||||
#if L==1
|
||||
"La actividad ha sido modificada."; // Necessita traduccio
|
||||
"L'activitat ha estat modificada.";
|
||||
#elif L==2
|
||||
"Die Aufgabe wurde geändert.";
|
||||
#elif L==3
|
||||
|
@ -42778,7 +43029,7 @@ const char *Txt_The_assignment_has_been_modified =
|
|||
#elif L==7
|
||||
"L'attività è stata modificata.";
|
||||
#elif L==8
|
||||
"The assignment has been modified."; // Potrzebujesz tlumaczenie
|
||||
"Działanie zostało zmodyfikowane.";
|
||||
#elif L==9
|
||||
"A atividade foi modificada.";
|
||||
#endif
|
||||
|
@ -46002,6 +46253,27 @@ const char *Txt_The_plugin_X_has_been_renamed_as_Y = // Warning: it is very impo
|
|||
"The plugin <strong>%s</strong> has been renamed as <strong>%s</strong>."; // Necessita de tradução
|
||||
#endif
|
||||
|
||||
const char *Txt_The_project_has_been_modified =
|
||||
#if L==1
|
||||
"L'activitat ha estat modificada.";
|
||||
#elif L==2
|
||||
"Die Projekt wurde geändert.";
|
||||
#elif L==3
|
||||
"The project has been modified.";
|
||||
#elif L==4
|
||||
"Le projet ha sido modificado.";
|
||||
#elif L==5
|
||||
"Le projet a été modifié.";
|
||||
#elif L==6
|
||||
"El proyecto ha sido modificado."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Il progetto è stato modificato.";
|
||||
#elif L==8
|
||||
"Projekt został zmodyfikowany.";
|
||||
#elif L==9
|
||||
"O projeto foi modificado.";
|
||||
#endif
|
||||
|
||||
const char *Txt_The_properties_of_file_X_have_been_saved = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==1
|
||||
"Las propiedades del archivo %s se han guardado."; // Necessita traduccio
|
||||
|
@ -55433,6 +55705,27 @@ const char *Txt_You_must_specify_the_title_of_the_game =
|
|||
"Você deve especificar o título do jogo.";
|
||||
#endif
|
||||
|
||||
const char *Txt_You_must_specify_the_title_of_the_project =
|
||||
#if L==1
|
||||
"Cal especificar el títol del projecte.";
|
||||
#elif L==2
|
||||
"Der Projekt muss angegeben werden.";
|
||||
#elif L==3
|
||||
"You must specify the title of the project.";
|
||||
#elif L==4
|
||||
"Debe especificar el título del proyecto.";
|
||||
#elif L==5
|
||||
"Vous devez spécifier le titre du projet.";
|
||||
#elif L==6
|
||||
"Debe especificar el título del proyecto."; // Okoteve traducción
|
||||
#elif L==7
|
||||
"È necessario specificare il titolo del progetto.";
|
||||
#elif L==8
|
||||
"Musisz podać tytuł projektu.";
|
||||
#elif L==9
|
||||
"Você deve especificar o título do projeto.";
|
||||
#endif
|
||||
|
||||
const char *Txt_You_must_specify_the_title_of_the_survey =
|
||||
#if L==1
|
||||
"Cal especificar el títol de l'enquesta.";
|
||||
|
|
Loading…
Reference in New Issue