diff --git a/Makefile b/Makefile
index 606234d5..26ec71f6 100644
--- a/Makefile
+++ b/Makefile
@@ -84,7 +84,7 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_action_list.o \
swad_QR.o \
swad_record.o swad_record_database.o swad_report.o \
swad_report_database.o swad_role.o swad_role_database.o swad_room.o \
- swad_room_database.o swad_RSS.o \
+ swad_room_database.o swad_RSS.o swad_rubric.o swad_rubric_database.o \
swad_scope.o swad_search.o swad_session.o swad_session_database.o \
swad_setting.o swad_setting_database.o swad_statistic.o \
swad_statistic_database.o swad_string.o swad_survey.o \
diff --git a/swad_action_list.c b/swad_action_list.c
index b4ef1c0f..49f605ce 100644
--- a/swad_action_list.c
+++ b/swad_action_list.c
@@ -99,6 +99,7 @@
#include "swad_QR.h"
#include "swad_report.h"
#include "swad_role.h"
+#include "swad_rubric.h"
#include "swad_search.h"
#include "swad_session.h"
#include "swad_setting.h"
@@ -593,7 +594,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActReqTst ] = { 103, 4,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" },
[ActSeeAllExa ] = {1848, 5,TabAss,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" },
[ActSeeAllGam ] = {1649, 6,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" },
- [ActSeeAllRub ] = {1951, 7,TabAss,ActSeeAllRub ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"tasks" },
+ [ActSeeAllRub ] = {1951, 7,TabAss,ActSeeAllRub ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_SeeAllRubrics ,"tasks" },
// Actions not in menu:
[ActFrmNewAsg ] = { 812,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RequestCreatOrEditAsg ,NULL},
@@ -834,6 +835,14 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActDwnGamQst ] = {1669,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_MoveDownQst ,NULL},
[ActReqLnkGam ] = {1935,-1,TabUnk,ActSeeAllGam ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,GamRsc_GetLinkToGame ,NULL},
+ [ActSeeRub ] = {1952,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_SeeOneRubric ,NULL},
+ [ActFrmNewRub ] = {1953,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RequestCreatOrEditRubric ,NULL},
+ [ActEdiOneRub ] = {1954,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RequestCreatOrEditRubric ,NULL},
+ [ActNewRub ] = {1955,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_ReceiveFormRubric ,NULL},
+ [ActChgRub ] = {1956,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_ReceiveFormRubric ,NULL},
+ [ActReqRemRub ] = {1957,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_AskRemRubric ,NULL},
+ [ActRemRub ] = {1958,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RemoveRubric ,NULL},
+
// TabFil ******************************************************************
// Actions in menu:
[ActSeeAdmDocIns ] = {1249, 0,TabFil,ActSeeAdmDocIns , 0, 0, 0, 0,0x3C7, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,"folder-open" },
@@ -3816,4 +3825,11 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re
ActSeeOnePrj, // #1949
ActChgPrjRev, // #1950
ActSeeAllRub, // #1951
+ ActSeeRub, // #1952
+ ActFrmNewRub, // #1953
+ ActEdiOneRub, // #1954
+ ActNewRub, // #1955
+ ActChgRub, // #1956
+ ActReqRemRub, // #1957
+ ActRemRub, // #1958
};
diff --git a/swad_action_list.h b/swad_action_list.h
index 930ffd86..6accd5c4 100644
--- a/swad_action_list.h
+++ b/swad_action_list.h
@@ -759,479 +759,487 @@
#define ActDwnGamQst (ActChgCrsTT1stDay + 218)
#define ActReqLnkGam (ActChgCrsTT1stDay + 219)
+#define ActSeeRub (ActChgCrsTT1stDay + 220)
+#define ActFrmNewRub (ActChgCrsTT1stDay + 221)
+#define ActEdiOneRub (ActChgCrsTT1stDay + 222)
+#define ActNewRub (ActChgCrsTT1stDay + 223)
+#define ActChgRub (ActChgCrsTT1stDay + 224)
+#define ActReqRemRub (ActChgCrsTT1stDay + 225)
+#define ActRemRub (ActChgCrsTT1stDay + 226)
+
/*****************************************************************************/
/******************************** Files tab **********************************/
/*****************************************************************************/
// Actions in menu
-#define ActSeeAdmDocIns (ActReqLnkGam + 1)
-#define ActAdmShaIns (ActReqLnkGam + 2)
-#define ActSeeAdmDocCtr (ActReqLnkGam + 3)
-#define ActAdmShaCtr (ActReqLnkGam + 4)
-#define ActSeeAdmDocDeg (ActReqLnkGam + 5)
-#define ActAdmShaDeg (ActReqLnkGam + 6)
-#define ActSeeAdmDocCrsGrp (ActReqLnkGam + 7)
-#define ActAdmTchCrsGrp (ActReqLnkGam + 8)
-#define ActAdmShaCrsGrp (ActReqLnkGam + 9)
-#define ActAdmAsgWrkUsr (ActReqLnkGam + 10)
-#define ActReqAsgWrkCrs (ActReqLnkGam + 11)
-#define ActSeeAdmMrk (ActReqLnkGam + 12)
-#define ActAdmBrf (ActReqLnkGam + 13)
+#define ActSeeAdmDocIns (ActRemRub + 1)
+#define ActAdmShaIns (ActRemRub + 2)
+#define ActSeeAdmDocCtr (ActRemRub + 3)
+#define ActAdmShaCtr (ActRemRub + 4)
+#define ActSeeAdmDocDeg (ActRemRub + 5)
+#define ActAdmShaDeg (ActRemRub + 6)
+#define ActSeeAdmDocCrsGrp (ActRemRub + 7)
+#define ActAdmTchCrsGrp (ActRemRub + 8)
+#define ActAdmShaCrsGrp (ActRemRub + 9)
+#define ActAdmAsgWrkUsr (ActRemRub + 10)
+#define ActReqAsgWrkCrs (ActRemRub + 11)
+#define ActSeeAdmMrk (ActRemRub + 12)
+#define ActAdmBrf (ActRemRub + 13)
// Secondary actions
-#define ActChgToSeeDocIns (ActReqLnkGam + 14)
-#define ActSeeDocIns (ActReqLnkGam + 15)
-#define ActExpSeeDocIns (ActReqLnkGam + 16)
-#define ActConSeeDocIns (ActReqLnkGam + 17)
-#define ActZIPSeeDocIns (ActReqLnkGam + 18)
-#define ActReqDatSeeDocIns (ActReqLnkGam + 19)
-#define ActDowSeeDocIns (ActReqLnkGam + 20)
-#define ActChgToAdmDocIns (ActReqLnkGam + 21)
-#define ActAdmDocIns (ActReqLnkGam + 22)
-#define ActReqRemFilDocIns (ActReqLnkGam + 23)
-#define ActRemFilDocIns (ActReqLnkGam + 24)
-#define ActRemFolDocIns (ActReqLnkGam + 25)
-#define ActCopDocIns (ActReqLnkGam + 26)
-#define ActPasDocIns (ActReqLnkGam + 27)
-#define ActRemTreDocIns (ActReqLnkGam + 28)
-#define ActFrmCreDocIns (ActReqLnkGam + 29)
-#define ActCreFolDocIns (ActReqLnkGam + 30)
-#define ActCreLnkDocIns (ActReqLnkGam + 31)
-#define ActRenFolDocIns (ActReqLnkGam + 32)
-#define ActRcvFilDocInsDZ (ActReqLnkGam + 33)
-#define ActRcvFilDocInsCla (ActReqLnkGam + 34)
-#define ActExpAdmDocIns (ActReqLnkGam + 35)
-#define ActConAdmDocIns (ActReqLnkGam + 36)
-#define ActZIPAdmDocIns (ActReqLnkGam + 37)
-#define ActUnhDocIns (ActReqLnkGam + 38)
-#define ActHidDocIns (ActReqLnkGam + 39)
-#define ActReqDatAdmDocIns (ActReqLnkGam + 40)
-#define ActChgDatAdmDocIns (ActReqLnkGam + 41)
-#define ActDowAdmDocIns (ActReqLnkGam + 42)
+#define ActChgToSeeDocIns (ActRemRub + 14)
+#define ActSeeDocIns (ActRemRub + 15)
+#define ActExpSeeDocIns (ActRemRub + 16)
+#define ActConSeeDocIns (ActRemRub + 17)
+#define ActZIPSeeDocIns (ActRemRub + 18)
+#define ActReqDatSeeDocIns (ActRemRub + 19)
+#define ActDowSeeDocIns (ActRemRub + 20)
+#define ActChgToAdmDocIns (ActRemRub + 21)
+#define ActAdmDocIns (ActRemRub + 22)
+#define ActReqRemFilDocIns (ActRemRub + 23)
+#define ActRemFilDocIns (ActRemRub + 24)
+#define ActRemFolDocIns (ActRemRub + 25)
+#define ActCopDocIns (ActRemRub + 26)
+#define ActPasDocIns (ActRemRub + 27)
+#define ActRemTreDocIns (ActRemRub + 28)
+#define ActFrmCreDocIns (ActRemRub + 29)
+#define ActCreFolDocIns (ActRemRub + 30)
+#define ActCreLnkDocIns (ActRemRub + 31)
+#define ActRenFolDocIns (ActRemRub + 32)
+#define ActRcvFilDocInsDZ (ActRemRub + 33)
+#define ActRcvFilDocInsCla (ActRemRub + 34)
+#define ActExpAdmDocIns (ActRemRub + 35)
+#define ActConAdmDocIns (ActRemRub + 36)
+#define ActZIPAdmDocIns (ActRemRub + 37)
+#define ActUnhDocIns (ActRemRub + 38)
+#define ActHidDocIns (ActRemRub + 39)
+#define ActReqDatAdmDocIns (ActRemRub + 40)
+#define ActChgDatAdmDocIns (ActRemRub + 41)
+#define ActDowAdmDocIns (ActRemRub + 42)
-#define ActReqRemFilShaIns (ActReqLnkGam + 43)
-#define ActRemFilShaIns (ActReqLnkGam + 44)
-#define ActRemFolShaIns (ActReqLnkGam + 45)
-#define ActCopShaIns (ActReqLnkGam + 46)
-#define ActPasShaIns (ActReqLnkGam + 47)
-#define ActRemTreShaIns (ActReqLnkGam + 48)
-#define ActFrmCreShaIns (ActReqLnkGam + 49)
-#define ActCreFolShaIns (ActReqLnkGam + 50)
-#define ActCreLnkShaIns (ActReqLnkGam + 51)
-#define ActRenFolShaIns (ActReqLnkGam + 52)
-#define ActRcvFilShaInsDZ (ActReqLnkGam + 53)
-#define ActRcvFilShaInsCla (ActReqLnkGam + 54)
-#define ActExpShaIns (ActReqLnkGam + 55)
-#define ActConShaIns (ActReqLnkGam + 56)
-#define ActZIPShaIns (ActReqLnkGam + 57)
-#define ActReqDatShaIns (ActReqLnkGam + 58)
-#define ActChgDatShaIns (ActReqLnkGam + 59)
-#define ActDowShaIns (ActReqLnkGam + 60)
+#define ActReqRemFilShaIns (ActRemRub + 43)
+#define ActRemFilShaIns (ActRemRub + 44)
+#define ActRemFolShaIns (ActRemRub + 45)
+#define ActCopShaIns (ActRemRub + 46)
+#define ActPasShaIns (ActRemRub + 47)
+#define ActRemTreShaIns (ActRemRub + 48)
+#define ActFrmCreShaIns (ActRemRub + 49)
+#define ActCreFolShaIns (ActRemRub + 50)
+#define ActCreLnkShaIns (ActRemRub + 51)
+#define ActRenFolShaIns (ActRemRub + 52)
+#define ActRcvFilShaInsDZ (ActRemRub + 53)
+#define ActRcvFilShaInsCla (ActRemRub + 54)
+#define ActExpShaIns (ActRemRub + 55)
+#define ActConShaIns (ActRemRub + 56)
+#define ActZIPShaIns (ActRemRub + 57)
+#define ActReqDatShaIns (ActRemRub + 58)
+#define ActChgDatShaIns (ActRemRub + 59)
+#define ActDowShaIns (ActRemRub + 60)
-#define ActChgToSeeDocCtr (ActReqLnkGam + 61)
-#define ActSeeDocCtr (ActReqLnkGam + 62)
-#define ActExpSeeDocCtr (ActReqLnkGam + 63)
-#define ActConSeeDocCtr (ActReqLnkGam + 64)
-#define ActZIPSeeDocCtr (ActReqLnkGam + 65)
-#define ActReqDatSeeDocCtr (ActReqLnkGam + 66)
-#define ActDowSeeDocCtr (ActReqLnkGam + 67)
-#define ActChgToAdmDocCtr (ActReqLnkGam + 68)
-#define ActAdmDocCtr (ActReqLnkGam + 69)
-#define ActReqRemFilDocCtr (ActReqLnkGam + 70)
-#define ActRemFilDocCtr (ActReqLnkGam + 71)
-#define ActRemFolDocCtr (ActReqLnkGam + 72)
-#define ActCopDocCtr (ActReqLnkGam + 73)
-#define ActPasDocCtr (ActReqLnkGam + 74)
-#define ActRemTreDocCtr (ActReqLnkGam + 75)
-#define ActFrmCreDocCtr (ActReqLnkGam + 76)
-#define ActCreFolDocCtr (ActReqLnkGam + 77)
-#define ActCreLnkDocCtr (ActReqLnkGam + 78)
-#define ActRenFolDocCtr (ActReqLnkGam + 79)
-#define ActRcvFilDocCtrDZ (ActReqLnkGam + 80)
-#define ActRcvFilDocCtrCla (ActReqLnkGam + 81)
-#define ActExpAdmDocCtr (ActReqLnkGam + 82)
-#define ActConAdmDocCtr (ActReqLnkGam + 83)
-#define ActZIPAdmDocCtr (ActReqLnkGam + 84)
-#define ActUnhDocCtr (ActReqLnkGam + 85)
-#define ActHidDocCtr (ActReqLnkGam + 86)
-#define ActReqDatAdmDocCtr (ActReqLnkGam + 87)
-#define ActChgDatAdmDocCtr (ActReqLnkGam + 88)
-#define ActDowAdmDocCtr (ActReqLnkGam + 89)
+#define ActChgToSeeDocCtr (ActRemRub + 61)
+#define ActSeeDocCtr (ActRemRub + 62)
+#define ActExpSeeDocCtr (ActRemRub + 63)
+#define ActConSeeDocCtr (ActRemRub + 64)
+#define ActZIPSeeDocCtr (ActRemRub + 65)
+#define ActReqDatSeeDocCtr (ActRemRub + 66)
+#define ActDowSeeDocCtr (ActRemRub + 67)
+#define ActChgToAdmDocCtr (ActRemRub + 68)
+#define ActAdmDocCtr (ActRemRub + 69)
+#define ActReqRemFilDocCtr (ActRemRub + 70)
+#define ActRemFilDocCtr (ActRemRub + 71)
+#define ActRemFolDocCtr (ActRemRub + 72)
+#define ActCopDocCtr (ActRemRub + 73)
+#define ActPasDocCtr (ActRemRub + 74)
+#define ActRemTreDocCtr (ActRemRub + 75)
+#define ActFrmCreDocCtr (ActRemRub + 76)
+#define ActCreFolDocCtr (ActRemRub + 77)
+#define ActCreLnkDocCtr (ActRemRub + 78)
+#define ActRenFolDocCtr (ActRemRub + 79)
+#define ActRcvFilDocCtrDZ (ActRemRub + 80)
+#define ActRcvFilDocCtrCla (ActRemRub + 81)
+#define ActExpAdmDocCtr (ActRemRub + 82)
+#define ActConAdmDocCtr (ActRemRub + 83)
+#define ActZIPAdmDocCtr (ActRemRub + 84)
+#define ActUnhDocCtr (ActRemRub + 85)
+#define ActHidDocCtr (ActRemRub + 86)
+#define ActReqDatAdmDocCtr (ActRemRub + 87)
+#define ActChgDatAdmDocCtr (ActRemRub + 88)
+#define ActDowAdmDocCtr (ActRemRub + 89)
-#define ActReqRemFilShaCtr (ActReqLnkGam + 90)
-#define ActRemFilShaCtr (ActReqLnkGam + 91)
-#define ActRemFolShaCtr (ActReqLnkGam + 92)
-#define ActCopShaCtr (ActReqLnkGam + 93)
-#define ActPasShaCtr (ActReqLnkGam + 94)
-#define ActRemTreShaCtr (ActReqLnkGam + 95)
-#define ActFrmCreShaCtr (ActReqLnkGam + 96)
-#define ActCreFolShaCtr (ActReqLnkGam + 97)
-#define ActCreLnkShaCtr (ActReqLnkGam + 98)
-#define ActRenFolShaCtr (ActReqLnkGam + 99)
-#define ActRcvFilShaCtrDZ (ActReqLnkGam + 100)
-#define ActRcvFilShaCtrCla (ActReqLnkGam + 101)
-#define ActExpShaCtr (ActReqLnkGam + 102)
-#define ActConShaCtr (ActReqLnkGam + 103)
-#define ActZIPShaCtr (ActReqLnkGam + 104)
-#define ActReqDatShaCtr (ActReqLnkGam + 105)
-#define ActChgDatShaCtr (ActReqLnkGam + 106)
-#define ActDowShaCtr (ActReqLnkGam + 107)
+#define ActReqRemFilShaCtr (ActRemRub + 90)
+#define ActRemFilShaCtr (ActRemRub + 91)
+#define ActRemFolShaCtr (ActRemRub + 92)
+#define ActCopShaCtr (ActRemRub + 93)
+#define ActPasShaCtr (ActRemRub + 94)
+#define ActRemTreShaCtr (ActRemRub + 95)
+#define ActFrmCreShaCtr (ActRemRub + 96)
+#define ActCreFolShaCtr (ActRemRub + 97)
+#define ActCreLnkShaCtr (ActRemRub + 98)
+#define ActRenFolShaCtr (ActRemRub + 99)
+#define ActRcvFilShaCtrDZ (ActRemRub + 100)
+#define ActRcvFilShaCtrCla (ActRemRub + 101)
+#define ActExpShaCtr (ActRemRub + 102)
+#define ActConShaCtr (ActRemRub + 103)
+#define ActZIPShaCtr (ActRemRub + 104)
+#define ActReqDatShaCtr (ActRemRub + 105)
+#define ActChgDatShaCtr (ActRemRub + 106)
+#define ActDowShaCtr (ActRemRub + 107)
-#define ActChgToSeeDocDeg (ActReqLnkGam + 108)
-#define ActSeeDocDeg (ActReqLnkGam + 109)
-#define ActExpSeeDocDeg (ActReqLnkGam + 110)
-#define ActConSeeDocDeg (ActReqLnkGam + 111)
-#define ActZIPSeeDocDeg (ActReqLnkGam + 112)
-#define ActReqDatSeeDocDeg (ActReqLnkGam + 113)
-#define ActDowSeeDocDeg (ActReqLnkGam + 114)
-#define ActChgToAdmDocDeg (ActReqLnkGam + 115)
-#define ActAdmDocDeg (ActReqLnkGam + 116)
-#define ActReqRemFilDocDeg (ActReqLnkGam + 117)
-#define ActRemFilDocDeg (ActReqLnkGam + 118)
-#define ActRemFolDocDeg (ActReqLnkGam + 119)
-#define ActCopDocDeg (ActReqLnkGam + 120)
-#define ActPasDocDeg (ActReqLnkGam + 121)
-#define ActRemTreDocDeg (ActReqLnkGam + 122)
-#define ActFrmCreDocDeg (ActReqLnkGam + 123)
-#define ActCreFolDocDeg (ActReqLnkGam + 124)
-#define ActCreLnkDocDeg (ActReqLnkGam + 125)
-#define ActRenFolDocDeg (ActReqLnkGam + 126)
-#define ActRcvFilDocDegDZ (ActReqLnkGam + 127)
-#define ActRcvFilDocDegCla (ActReqLnkGam + 128)
-#define ActExpAdmDocDeg (ActReqLnkGam + 129)
-#define ActConAdmDocDeg (ActReqLnkGam + 130)
-#define ActZIPAdmDocDeg (ActReqLnkGam + 131)
-#define ActUnhDocDeg (ActReqLnkGam + 132)
-#define ActHidDocDeg (ActReqLnkGam + 133)
-#define ActReqDatAdmDocDeg (ActReqLnkGam + 134)
-#define ActChgDatAdmDocDeg (ActReqLnkGam + 135)
-#define ActDowAdmDocDeg (ActReqLnkGam + 136)
+#define ActChgToSeeDocDeg (ActRemRub + 108)
+#define ActSeeDocDeg (ActRemRub + 109)
+#define ActExpSeeDocDeg (ActRemRub + 110)
+#define ActConSeeDocDeg (ActRemRub + 111)
+#define ActZIPSeeDocDeg (ActRemRub + 112)
+#define ActReqDatSeeDocDeg (ActRemRub + 113)
+#define ActDowSeeDocDeg (ActRemRub + 114)
+#define ActChgToAdmDocDeg (ActRemRub + 115)
+#define ActAdmDocDeg (ActRemRub + 116)
+#define ActReqRemFilDocDeg (ActRemRub + 117)
+#define ActRemFilDocDeg (ActRemRub + 118)
+#define ActRemFolDocDeg (ActRemRub + 119)
+#define ActCopDocDeg (ActRemRub + 120)
+#define ActPasDocDeg (ActRemRub + 121)
+#define ActRemTreDocDeg (ActRemRub + 122)
+#define ActFrmCreDocDeg (ActRemRub + 123)
+#define ActCreFolDocDeg (ActRemRub + 124)
+#define ActCreLnkDocDeg (ActRemRub + 125)
+#define ActRenFolDocDeg (ActRemRub + 126)
+#define ActRcvFilDocDegDZ (ActRemRub + 127)
+#define ActRcvFilDocDegCla (ActRemRub + 128)
+#define ActExpAdmDocDeg (ActRemRub + 129)
+#define ActConAdmDocDeg (ActRemRub + 130)
+#define ActZIPAdmDocDeg (ActRemRub + 131)
+#define ActUnhDocDeg (ActRemRub + 132)
+#define ActHidDocDeg (ActRemRub + 133)
+#define ActReqDatAdmDocDeg (ActRemRub + 134)
+#define ActChgDatAdmDocDeg (ActRemRub + 135)
+#define ActDowAdmDocDeg (ActRemRub + 136)
-#define ActReqRemFilShaDeg (ActReqLnkGam + 137)
-#define ActRemFilShaDeg (ActReqLnkGam + 138)
-#define ActRemFolShaDeg (ActReqLnkGam + 139)
-#define ActCopShaDeg (ActReqLnkGam + 140)
-#define ActPasShaDeg (ActReqLnkGam + 141)
-#define ActRemTreShaDeg (ActReqLnkGam + 142)
-#define ActFrmCreShaDeg (ActReqLnkGam + 143)
-#define ActCreFolShaDeg (ActReqLnkGam + 144)
-#define ActCreLnkShaDeg (ActReqLnkGam + 145)
-#define ActRenFolShaDeg (ActReqLnkGam + 146)
-#define ActRcvFilShaDegDZ (ActReqLnkGam + 147)
-#define ActRcvFilShaDegCla (ActReqLnkGam + 148)
-#define ActExpShaDeg (ActReqLnkGam + 149)
-#define ActConShaDeg (ActReqLnkGam + 150)
-#define ActZIPShaDeg (ActReqLnkGam + 151)
-#define ActReqDatShaDeg (ActReqLnkGam + 152)
-#define ActChgDatShaDeg (ActReqLnkGam + 153)
-#define ActDowShaDeg (ActReqLnkGam + 154)
+#define ActReqRemFilShaDeg (ActRemRub + 137)
+#define ActRemFilShaDeg (ActRemRub + 138)
+#define ActRemFolShaDeg (ActRemRub + 139)
+#define ActCopShaDeg (ActRemRub + 140)
+#define ActPasShaDeg (ActRemRub + 141)
+#define ActRemTreShaDeg (ActRemRub + 142)
+#define ActFrmCreShaDeg (ActRemRub + 143)
+#define ActCreFolShaDeg (ActRemRub + 144)
+#define ActCreLnkShaDeg (ActRemRub + 145)
+#define ActRenFolShaDeg (ActRemRub + 146)
+#define ActRcvFilShaDegDZ (ActRemRub + 147)
+#define ActRcvFilShaDegCla (ActRemRub + 148)
+#define ActExpShaDeg (ActRemRub + 149)
+#define ActConShaDeg (ActRemRub + 150)
+#define ActZIPShaDeg (ActRemRub + 151)
+#define ActReqDatShaDeg (ActRemRub + 152)
+#define ActChgDatShaDeg (ActRemRub + 153)
+#define ActDowShaDeg (ActRemRub + 154)
-#define ActChgToSeeDocCrs (ActReqLnkGam + 155)
-#define ActSeeDocCrs (ActReqLnkGam + 156)
-#define ActExpSeeDocCrs (ActReqLnkGam + 157)
-#define ActConSeeDocCrs (ActReqLnkGam + 158)
-#define ActZIPSeeDocCrs (ActReqLnkGam + 159)
-#define ActReqDatSeeDocCrs (ActReqLnkGam + 160)
-#define ActReqLnkSeeDocCrs (ActReqLnkGam + 161)
-#define ActDowSeeDocCrs (ActReqLnkGam + 162)
+#define ActChgToSeeDocCrs (ActRemRub + 155)
+#define ActSeeDocCrs (ActRemRub + 156)
+#define ActExpSeeDocCrs (ActRemRub + 157)
+#define ActConSeeDocCrs (ActRemRub + 158)
+#define ActZIPSeeDocCrs (ActRemRub + 159)
+#define ActReqDatSeeDocCrs (ActRemRub + 160)
+#define ActReqLnkSeeDocCrs (ActRemRub + 161)
+#define ActDowSeeDocCrs (ActRemRub + 162)
-#define ActSeeDocGrp (ActReqLnkGam + 163)
-#define ActExpSeeDocGrp (ActReqLnkGam + 164)
-#define ActConSeeDocGrp (ActReqLnkGam + 165)
-#define ActZIPSeeDocGrp (ActReqLnkGam + 166)
-#define ActReqDatSeeDocGrp (ActReqLnkGam + 167)
-#define ActDowSeeDocGrp (ActReqLnkGam + 168)
+#define ActSeeDocGrp (ActRemRub + 163)
+#define ActExpSeeDocGrp (ActRemRub + 164)
+#define ActConSeeDocGrp (ActRemRub + 165)
+#define ActZIPSeeDocGrp (ActRemRub + 166)
+#define ActReqDatSeeDocGrp (ActRemRub + 167)
+#define ActDowSeeDocGrp (ActRemRub + 168)
-#define ActChgToAdmDocCrs (ActReqLnkGam + 169)
-#define ActAdmDocCrs (ActReqLnkGam + 170)
-#define ActReqRemFilDocCrs (ActReqLnkGam + 171)
-#define ActRemFilDocCrs (ActReqLnkGam + 172)
-#define ActRemFolDocCrs (ActReqLnkGam + 173)
-#define ActCopDocCrs (ActReqLnkGam + 174)
-#define ActPasDocCrs (ActReqLnkGam + 175)
-#define ActRemTreDocCrs (ActReqLnkGam + 176)
-#define ActFrmCreDocCrs (ActReqLnkGam + 177)
-#define ActCreFolDocCrs (ActReqLnkGam + 178)
-#define ActCreLnkDocCrs (ActReqLnkGam + 179)
-#define ActRenFolDocCrs (ActReqLnkGam + 180)
-#define ActRcvFilDocCrsDZ (ActReqLnkGam + 181)
-#define ActRcvFilDocCrsCla (ActReqLnkGam + 182)
-#define ActExpAdmDocCrs (ActReqLnkGam + 183)
-#define ActConAdmDocCrs (ActReqLnkGam + 184)
-#define ActZIPAdmDocCrs (ActReqLnkGam + 185)
-#define ActUnhDocCrs (ActReqLnkGam + 186)
-#define ActHidDocCrs (ActReqLnkGam + 187)
-#define ActReqDatAdmDocCrs (ActReqLnkGam + 188)
-#define ActChgDatAdmDocCrs (ActReqLnkGam + 189)
-#define ActReqLnkAdmDocCrs (ActReqLnkGam + 190)
-#define ActDowAdmDocCrs (ActReqLnkGam + 191)
+#define ActChgToAdmDocCrs (ActRemRub + 169)
+#define ActAdmDocCrs (ActRemRub + 170)
+#define ActReqRemFilDocCrs (ActRemRub + 171)
+#define ActRemFilDocCrs (ActRemRub + 172)
+#define ActRemFolDocCrs (ActRemRub + 173)
+#define ActCopDocCrs (ActRemRub + 174)
+#define ActPasDocCrs (ActRemRub + 175)
+#define ActRemTreDocCrs (ActRemRub + 176)
+#define ActFrmCreDocCrs (ActRemRub + 177)
+#define ActCreFolDocCrs (ActRemRub + 178)
+#define ActCreLnkDocCrs (ActRemRub + 179)
+#define ActRenFolDocCrs (ActRemRub + 180)
+#define ActRcvFilDocCrsDZ (ActRemRub + 181)
+#define ActRcvFilDocCrsCla (ActRemRub + 182)
+#define ActExpAdmDocCrs (ActRemRub + 183)
+#define ActConAdmDocCrs (ActRemRub + 184)
+#define ActZIPAdmDocCrs (ActRemRub + 185)
+#define ActUnhDocCrs (ActRemRub + 186)
+#define ActHidDocCrs (ActRemRub + 187)
+#define ActReqDatAdmDocCrs (ActRemRub + 188)
+#define ActChgDatAdmDocCrs (ActRemRub + 189)
+#define ActReqLnkAdmDocCrs (ActRemRub + 190)
+#define ActDowAdmDocCrs (ActRemRub + 191)
-#define ActAdmDocGrp (ActReqLnkGam + 192)
-#define ActReqRemFilDocGrp (ActReqLnkGam + 193)
-#define ActRemFilDocGrp (ActReqLnkGam + 194)
-#define ActRemFolDocGrp (ActReqLnkGam + 195)
-#define ActCopDocGrp (ActReqLnkGam + 196)
-#define ActPasDocGrp (ActReqLnkGam + 197)
-#define ActRemTreDocGrp (ActReqLnkGam + 198)
-#define ActFrmCreDocGrp (ActReqLnkGam + 199)
-#define ActCreFolDocGrp (ActReqLnkGam + 200)
-#define ActCreLnkDocGrp (ActReqLnkGam + 201)
-#define ActRenFolDocGrp (ActReqLnkGam + 202)
-#define ActRcvFilDocGrpDZ (ActReqLnkGam + 203)
-#define ActRcvFilDocGrpCla (ActReqLnkGam + 204)
-#define ActExpAdmDocGrp (ActReqLnkGam + 205)
-#define ActConAdmDocGrp (ActReqLnkGam + 206)
-#define ActZIPAdmDocGrp (ActReqLnkGam + 207)
-#define ActUnhDocGrp (ActReqLnkGam + 208)
-#define ActHidDocGrp (ActReqLnkGam + 209)
-#define ActReqDatAdmDocGrp (ActReqLnkGam + 210)
-#define ActChgDatAdmDocGrp (ActReqLnkGam + 211)
-#define ActDowAdmDocGrp (ActReqLnkGam + 212)
+#define ActAdmDocGrp (ActRemRub + 192)
+#define ActReqRemFilDocGrp (ActRemRub + 193)
+#define ActRemFilDocGrp (ActRemRub + 194)
+#define ActRemFolDocGrp (ActRemRub + 195)
+#define ActCopDocGrp (ActRemRub + 196)
+#define ActPasDocGrp (ActRemRub + 197)
+#define ActRemTreDocGrp (ActRemRub + 198)
+#define ActFrmCreDocGrp (ActRemRub + 199)
+#define ActCreFolDocGrp (ActRemRub + 200)
+#define ActCreLnkDocGrp (ActRemRub + 201)
+#define ActRenFolDocGrp (ActRemRub + 202)
+#define ActRcvFilDocGrpDZ (ActRemRub + 203)
+#define ActRcvFilDocGrpCla (ActRemRub + 204)
+#define ActExpAdmDocGrp (ActRemRub + 205)
+#define ActConAdmDocGrp (ActRemRub + 206)
+#define ActZIPAdmDocGrp (ActRemRub + 207)
+#define ActUnhDocGrp (ActRemRub + 208)
+#define ActHidDocGrp (ActRemRub + 209)
+#define ActReqDatAdmDocGrp (ActRemRub + 210)
+#define ActChgDatAdmDocGrp (ActRemRub + 211)
+#define ActDowAdmDocGrp (ActRemRub + 212)
-#define ActChgToAdmTch (ActReqLnkGam + 213)
+#define ActChgToAdmTch (ActRemRub + 213)
-#define ActAdmTchCrs (ActReqLnkGam + 214)
-#define ActReqRemFilTchCrs (ActReqLnkGam + 215)
-#define ActRemFilTchCrs (ActReqLnkGam + 216)
-#define ActRemFolTchCrs (ActReqLnkGam + 217)
-#define ActCopTchCrs (ActReqLnkGam + 218)
-#define ActPasTchCrs (ActReqLnkGam + 219)
-#define ActRemTreTchCrs (ActReqLnkGam + 220)
-#define ActFrmCreTchCrs (ActReqLnkGam + 221)
-#define ActCreFolTchCrs (ActReqLnkGam + 222)
-#define ActCreLnkTchCrs (ActReqLnkGam + 223)
-#define ActRenFolTchCrs (ActReqLnkGam + 224)
-#define ActRcvFilTchCrsDZ (ActReqLnkGam + 225)
-#define ActRcvFilTchCrsCla (ActReqLnkGam + 226)
-#define ActExpTchCrs (ActReqLnkGam + 227)
-#define ActConTchCrs (ActReqLnkGam + 228)
-#define ActZIPTchCrs (ActReqLnkGam + 229)
-#define ActReqDatTchCrs (ActReqLnkGam + 230)
-#define ActChgDatTchCrs (ActReqLnkGam + 231)
-#define ActDowTchCrs (ActReqLnkGam + 232)
+#define ActAdmTchCrs (ActRemRub + 214)
+#define ActReqRemFilTchCrs (ActRemRub + 215)
+#define ActRemFilTchCrs (ActRemRub + 216)
+#define ActRemFolTchCrs (ActRemRub + 217)
+#define ActCopTchCrs (ActRemRub + 218)
+#define ActPasTchCrs (ActRemRub + 219)
+#define ActRemTreTchCrs (ActRemRub + 220)
+#define ActFrmCreTchCrs (ActRemRub + 221)
+#define ActCreFolTchCrs (ActRemRub + 222)
+#define ActCreLnkTchCrs (ActRemRub + 223)
+#define ActRenFolTchCrs (ActRemRub + 224)
+#define ActRcvFilTchCrsDZ (ActRemRub + 225)
+#define ActRcvFilTchCrsCla (ActRemRub + 226)
+#define ActExpTchCrs (ActRemRub + 227)
+#define ActConTchCrs (ActRemRub + 228)
+#define ActZIPTchCrs (ActRemRub + 229)
+#define ActReqDatTchCrs (ActRemRub + 230)
+#define ActChgDatTchCrs (ActRemRub + 231)
+#define ActDowTchCrs (ActRemRub + 232)
-#define ActAdmTchGrp (ActReqLnkGam + 233)
-#define ActReqRemFilTchGrp (ActReqLnkGam + 234)
-#define ActRemFilTchGrp (ActReqLnkGam + 235)
-#define ActRemFolTchGrp (ActReqLnkGam + 236)
-#define ActCopTchGrp (ActReqLnkGam + 237)
-#define ActPasTchGrp (ActReqLnkGam + 238)
-#define ActRemTreTchGrp (ActReqLnkGam + 239)
-#define ActFrmCreTchGrp (ActReqLnkGam + 240)
-#define ActCreFolTchGrp (ActReqLnkGam + 241)
-#define ActCreLnkTchGrp (ActReqLnkGam + 242)
-#define ActRenFolTchGrp (ActReqLnkGam + 243)
-#define ActRcvFilTchGrpDZ (ActReqLnkGam + 244)
-#define ActRcvFilTchGrpCla (ActReqLnkGam + 245)
-#define ActExpTchGrp (ActReqLnkGam + 246)
-#define ActConTchGrp (ActReqLnkGam + 247)
-#define ActZIPTchGrp (ActReqLnkGam + 248)
-#define ActReqDatTchGrp (ActReqLnkGam + 249)
-#define ActChgDatTchGrp (ActReqLnkGam + 250)
-#define ActDowTchGrp (ActReqLnkGam + 251)
+#define ActAdmTchGrp (ActRemRub + 233)
+#define ActReqRemFilTchGrp (ActRemRub + 234)
+#define ActRemFilTchGrp (ActRemRub + 235)
+#define ActRemFolTchGrp (ActRemRub + 236)
+#define ActCopTchGrp (ActRemRub + 237)
+#define ActPasTchGrp (ActRemRub + 238)
+#define ActRemTreTchGrp (ActRemRub + 239)
+#define ActFrmCreTchGrp (ActRemRub + 240)
+#define ActCreFolTchGrp (ActRemRub + 241)
+#define ActCreLnkTchGrp (ActRemRub + 242)
+#define ActRenFolTchGrp (ActRemRub + 243)
+#define ActRcvFilTchGrpDZ (ActRemRub + 244)
+#define ActRcvFilTchGrpCla (ActRemRub + 245)
+#define ActExpTchGrp (ActRemRub + 246)
+#define ActConTchGrp (ActRemRub + 247)
+#define ActZIPTchGrp (ActRemRub + 248)
+#define ActReqDatTchGrp (ActRemRub + 249)
+#define ActChgDatTchGrp (ActRemRub + 250)
+#define ActDowTchGrp (ActRemRub + 251)
-#define ActChgToAdmSha (ActReqLnkGam + 252)
+#define ActChgToAdmSha (ActRemRub + 252)
-#define ActAdmShaCrs (ActReqLnkGam + 253)
-#define ActReqRemFilShaCrs (ActReqLnkGam + 254)
-#define ActRemFilShaCrs (ActReqLnkGam + 255)
-#define ActRemFolShaCrs (ActReqLnkGam + 256)
-#define ActCopShaCrs (ActReqLnkGam + 257)
-#define ActPasShaCrs (ActReqLnkGam + 258)
-#define ActRemTreShaCrs (ActReqLnkGam + 259)
-#define ActFrmCreShaCrs (ActReqLnkGam + 260)
-#define ActCreFolShaCrs (ActReqLnkGam + 261)
-#define ActCreLnkShaCrs (ActReqLnkGam + 262)
-#define ActRenFolShaCrs (ActReqLnkGam + 263)
-#define ActRcvFilShaCrsDZ (ActReqLnkGam + 264)
-#define ActRcvFilShaCrsCla (ActReqLnkGam + 265)
-#define ActExpShaCrs (ActReqLnkGam + 266)
-#define ActConShaCrs (ActReqLnkGam + 267)
-#define ActZIPShaCrs (ActReqLnkGam + 268)
-#define ActReqDatShaCrs (ActReqLnkGam + 269)
-#define ActChgDatShaCrs (ActReqLnkGam + 270)
-#define ActDowShaCrs (ActReqLnkGam + 271)
+#define ActAdmShaCrs (ActRemRub + 253)
+#define ActReqRemFilShaCrs (ActRemRub + 254)
+#define ActRemFilShaCrs (ActRemRub + 255)
+#define ActRemFolShaCrs (ActRemRub + 256)
+#define ActCopShaCrs (ActRemRub + 257)
+#define ActPasShaCrs (ActRemRub + 258)
+#define ActRemTreShaCrs (ActRemRub + 259)
+#define ActFrmCreShaCrs (ActRemRub + 260)
+#define ActCreFolShaCrs (ActRemRub + 261)
+#define ActCreLnkShaCrs (ActRemRub + 262)
+#define ActRenFolShaCrs (ActRemRub + 263)
+#define ActRcvFilShaCrsDZ (ActRemRub + 264)
+#define ActRcvFilShaCrsCla (ActRemRub + 265)
+#define ActExpShaCrs (ActRemRub + 266)
+#define ActConShaCrs (ActRemRub + 267)
+#define ActZIPShaCrs (ActRemRub + 268)
+#define ActReqDatShaCrs (ActRemRub + 269)
+#define ActChgDatShaCrs (ActRemRub + 270)
+#define ActDowShaCrs (ActRemRub + 271)
-#define ActAdmShaGrp (ActReqLnkGam + 272)
-#define ActReqRemFilShaGrp (ActReqLnkGam + 273)
-#define ActRemFilShaGrp (ActReqLnkGam + 274)
-#define ActRemFolShaGrp (ActReqLnkGam + 275)
-#define ActCopShaGrp (ActReqLnkGam + 276)
-#define ActPasShaGrp (ActReqLnkGam + 277)
-#define ActRemTreShaGrp (ActReqLnkGam + 278)
-#define ActFrmCreShaGrp (ActReqLnkGam + 279)
-#define ActCreFolShaGrp (ActReqLnkGam + 280)
-#define ActCreLnkShaGrp (ActReqLnkGam + 281)
-#define ActRenFolShaGrp (ActReqLnkGam + 282)
-#define ActRcvFilShaGrpDZ (ActReqLnkGam + 283)
-#define ActRcvFilShaGrpCla (ActReqLnkGam + 284)
-#define ActExpShaGrp (ActReqLnkGam + 285)
-#define ActConShaGrp (ActReqLnkGam + 286)
-#define ActZIPShaGrp (ActReqLnkGam + 287)
-#define ActReqDatShaGrp (ActReqLnkGam + 288)
-#define ActChgDatShaGrp (ActReqLnkGam + 289)
-#define ActDowShaGrp (ActReqLnkGam + 290)
+#define ActAdmShaGrp (ActRemRub + 272)
+#define ActReqRemFilShaGrp (ActRemRub + 273)
+#define ActRemFilShaGrp (ActRemRub + 274)
+#define ActRemFolShaGrp (ActRemRub + 275)
+#define ActCopShaGrp (ActRemRub + 276)
+#define ActPasShaGrp (ActRemRub + 277)
+#define ActRemTreShaGrp (ActRemRub + 278)
+#define ActFrmCreShaGrp (ActRemRub + 279)
+#define ActCreFolShaGrp (ActRemRub + 280)
+#define ActCreLnkShaGrp (ActRemRub + 281)
+#define ActRenFolShaGrp (ActRemRub + 282)
+#define ActRcvFilShaGrpDZ (ActRemRub + 283)
+#define ActRcvFilShaGrpCla (ActRemRub + 284)
+#define ActExpShaGrp (ActRemRub + 285)
+#define ActConShaGrp (ActRemRub + 286)
+#define ActZIPShaGrp (ActRemRub + 287)
+#define ActReqDatShaGrp (ActRemRub + 288)
+#define ActChgDatShaGrp (ActRemRub + 289)
+#define ActDowShaGrp (ActRemRub + 290)
-#define ActAdmAsgWrkCrs (ActReqLnkGam + 291)
+#define ActAdmAsgWrkCrs (ActRemRub + 291)
-#define ActReqRemFilAsgUsr (ActReqLnkGam + 292)
-#define ActRemFilAsgUsr (ActReqLnkGam + 293)
-#define ActRemFolAsgUsr (ActReqLnkGam + 294)
-#define ActCopAsgUsr (ActReqLnkGam + 295)
-#define ActPasAsgUsr (ActReqLnkGam + 296)
-#define ActRemTreAsgUsr (ActReqLnkGam + 297)
-#define ActFrmCreAsgUsr (ActReqLnkGam + 298)
-#define ActCreFolAsgUsr (ActReqLnkGam + 299)
-#define ActCreLnkAsgUsr (ActReqLnkGam + 300)
-#define ActRenFolAsgUsr (ActReqLnkGam + 301)
-#define ActRcvFilAsgUsrDZ (ActReqLnkGam + 302)
-#define ActRcvFilAsgUsrCla (ActReqLnkGam + 303)
-#define ActExpAsgUsr (ActReqLnkGam + 304)
-#define ActConAsgUsr (ActReqLnkGam + 305)
-#define ActZIPAsgUsr (ActReqLnkGam + 306)
-#define ActReqDatAsgUsr (ActReqLnkGam + 307)
-#define ActChgDatAsgUsr (ActReqLnkGam + 308)
-#define ActDowAsgUsr (ActReqLnkGam + 309)
+#define ActReqRemFilAsgUsr (ActRemRub + 292)
+#define ActRemFilAsgUsr (ActRemRub + 293)
+#define ActRemFolAsgUsr (ActRemRub + 294)
+#define ActCopAsgUsr (ActRemRub + 295)
+#define ActPasAsgUsr (ActRemRub + 296)
+#define ActRemTreAsgUsr (ActRemRub + 297)
+#define ActFrmCreAsgUsr (ActRemRub + 298)
+#define ActCreFolAsgUsr (ActRemRub + 299)
+#define ActCreLnkAsgUsr (ActRemRub + 300)
+#define ActRenFolAsgUsr (ActRemRub + 301)
+#define ActRcvFilAsgUsrDZ (ActRemRub + 302)
+#define ActRcvFilAsgUsrCla (ActRemRub + 303)
+#define ActExpAsgUsr (ActRemRub + 304)
+#define ActConAsgUsr (ActRemRub + 305)
+#define ActZIPAsgUsr (ActRemRub + 306)
+#define ActReqDatAsgUsr (ActRemRub + 307)
+#define ActChgDatAsgUsr (ActRemRub + 308)
+#define ActDowAsgUsr (ActRemRub + 309)
-#define ActReqRemFilWrkUsr (ActReqLnkGam + 310)
-#define ActRemFilWrkUsr (ActReqLnkGam + 311)
-#define ActRemFolWrkUsr (ActReqLnkGam + 312)
-#define ActCopWrkUsr (ActReqLnkGam + 313)
-#define ActPasWrkUsr (ActReqLnkGam + 314)
-#define ActRemTreWrkUsr (ActReqLnkGam + 315)
-#define ActFrmCreWrkUsr (ActReqLnkGam + 316)
-#define ActCreFolWrkUsr (ActReqLnkGam + 317)
-#define ActCreLnkWrkUsr (ActReqLnkGam + 318)
-#define ActRenFolWrkUsr (ActReqLnkGam + 319)
-#define ActRcvFilWrkUsrDZ (ActReqLnkGam + 320)
-#define ActRcvFilWrkUsrCla (ActReqLnkGam + 321)
-#define ActExpWrkUsr (ActReqLnkGam + 322)
-#define ActConWrkUsr (ActReqLnkGam + 323)
-#define ActZIPWrkUsr (ActReqLnkGam + 324)
-#define ActReqDatWrkUsr (ActReqLnkGam + 325)
-#define ActChgDatWrkUsr (ActReqLnkGam + 326)
-#define ActDowWrkUsr (ActReqLnkGam + 327)
+#define ActReqRemFilWrkUsr (ActRemRub + 310)
+#define ActRemFilWrkUsr (ActRemRub + 311)
+#define ActRemFolWrkUsr (ActRemRub + 312)
+#define ActCopWrkUsr (ActRemRub + 313)
+#define ActPasWrkUsr (ActRemRub + 314)
+#define ActRemTreWrkUsr (ActRemRub + 315)
+#define ActFrmCreWrkUsr (ActRemRub + 316)
+#define ActCreFolWrkUsr (ActRemRub + 317)
+#define ActCreLnkWrkUsr (ActRemRub + 318)
+#define ActRenFolWrkUsr (ActRemRub + 319)
+#define ActRcvFilWrkUsrDZ (ActRemRub + 320)
+#define ActRcvFilWrkUsrCla (ActRemRub + 321)
+#define ActExpWrkUsr (ActRemRub + 322)
+#define ActConWrkUsr (ActRemRub + 323)
+#define ActZIPWrkUsr (ActRemRub + 324)
+#define ActReqDatWrkUsr (ActRemRub + 325)
+#define ActChgDatWrkUsr (ActRemRub + 326)
+#define ActDowWrkUsr (ActRemRub + 327)
-#define ActReqRemFilAsgCrs (ActReqLnkGam + 328)
-#define ActRemFilAsgCrs (ActReqLnkGam + 329)
-#define ActRemFolAsgCrs (ActReqLnkGam + 330)
-#define ActCopAsgCrs (ActReqLnkGam + 331)
-#define ActPasAsgCrs (ActReqLnkGam + 332)
-#define ActRemTreAsgCrs (ActReqLnkGam + 333)
-#define ActFrmCreAsgCrs (ActReqLnkGam + 334)
-#define ActCreFolAsgCrs (ActReqLnkGam + 335)
-#define ActCreLnkAsgCrs (ActReqLnkGam + 336)
-#define ActRenFolAsgCrs (ActReqLnkGam + 337)
-#define ActRcvFilAsgCrsDZ (ActReqLnkGam + 338)
-#define ActRcvFilAsgCrsCla (ActReqLnkGam + 339)
-#define ActExpAsgCrs (ActReqLnkGam + 340)
-#define ActConAsgCrs (ActReqLnkGam + 341)
-#define ActZIPAsgCrs (ActReqLnkGam + 342)
-#define ActReqDatAsgCrs (ActReqLnkGam + 343)
-#define ActChgDatAsgCrs (ActReqLnkGam + 344)
-#define ActDowAsgCrs (ActReqLnkGam + 345)
+#define ActReqRemFilAsgCrs (ActRemRub + 328)
+#define ActRemFilAsgCrs (ActRemRub + 329)
+#define ActRemFolAsgCrs (ActRemRub + 330)
+#define ActCopAsgCrs (ActRemRub + 331)
+#define ActPasAsgCrs (ActRemRub + 332)
+#define ActRemTreAsgCrs (ActRemRub + 333)
+#define ActFrmCreAsgCrs (ActRemRub + 334)
+#define ActCreFolAsgCrs (ActRemRub + 335)
+#define ActCreLnkAsgCrs (ActRemRub + 336)
+#define ActRenFolAsgCrs (ActRemRub + 337)
+#define ActRcvFilAsgCrsDZ (ActRemRub + 338)
+#define ActRcvFilAsgCrsCla (ActRemRub + 339)
+#define ActExpAsgCrs (ActRemRub + 340)
+#define ActConAsgCrs (ActRemRub + 341)
+#define ActZIPAsgCrs (ActRemRub + 342)
+#define ActReqDatAsgCrs (ActRemRub + 343)
+#define ActChgDatAsgCrs (ActRemRub + 344)
+#define ActDowAsgCrs (ActRemRub + 345)
-#define ActReqRemFilWrkCrs (ActReqLnkGam + 346)
-#define ActRemFilWrkCrs (ActReqLnkGam + 347)
-#define ActRemFolWrkCrs (ActReqLnkGam + 348)
-#define ActCopWrkCrs (ActReqLnkGam + 349)
-#define ActPasWrkCrs (ActReqLnkGam + 350)
-#define ActRemTreWrkCrs (ActReqLnkGam + 351)
-#define ActFrmCreWrkCrs (ActReqLnkGam + 352)
-#define ActCreFolWrkCrs (ActReqLnkGam + 353)
-#define ActCreLnkWrkCrs (ActReqLnkGam + 354)
-#define ActRenFolWrkCrs (ActReqLnkGam + 355)
-#define ActRcvFilWrkCrsDZ (ActReqLnkGam + 356)
-#define ActRcvFilWrkCrsCla (ActReqLnkGam + 357)
-#define ActExpWrkCrs (ActReqLnkGam + 358)
-#define ActConWrkCrs (ActReqLnkGam + 359)
-#define ActZIPWrkCrs (ActReqLnkGam + 360)
-#define ActReqDatWrkCrs (ActReqLnkGam + 361)
-#define ActChgDatWrkCrs (ActReqLnkGam + 362)
-#define ActDowWrkCrs (ActReqLnkGam + 363)
+#define ActReqRemFilWrkCrs (ActRemRub + 346)
+#define ActRemFilWrkCrs (ActRemRub + 347)
+#define ActRemFolWrkCrs (ActRemRub + 348)
+#define ActCopWrkCrs (ActRemRub + 349)
+#define ActPasWrkCrs (ActRemRub + 350)
+#define ActRemTreWrkCrs (ActRemRub + 351)
+#define ActFrmCreWrkCrs (ActRemRub + 352)
+#define ActCreFolWrkCrs (ActRemRub + 353)
+#define ActCreLnkWrkCrs (ActRemRub + 354)
+#define ActRenFolWrkCrs (ActRemRub + 355)
+#define ActRcvFilWrkCrsDZ (ActRemRub + 356)
+#define ActRcvFilWrkCrsCla (ActRemRub + 357)
+#define ActExpWrkCrs (ActRemRub + 358)
+#define ActConWrkCrs (ActRemRub + 359)
+#define ActZIPWrkCrs (ActRemRub + 360)
+#define ActReqDatWrkCrs (ActRemRub + 361)
+#define ActChgDatWrkCrs (ActRemRub + 362)
+#define ActDowWrkCrs (ActRemRub + 363)
-#define ActChgToSeeMrk (ActReqLnkGam + 364)
+#define ActChgToSeeMrk (ActRemRub + 364)
-#define ActSeeMrkCrs (ActReqLnkGam + 365)
-#define ActExpSeeMrkCrs (ActReqLnkGam + 366)
-#define ActConSeeMrkCrs (ActReqLnkGam + 367)
-#define ActReqDatSeeMrkCrs (ActReqLnkGam + 368)
-#define ActReqLnkSeeMrkCrs (ActReqLnkGam + 369)
-#define ActSeeMyMrkCrs (ActReqLnkGam + 370)
+#define ActSeeMrkCrs (ActRemRub + 365)
+#define ActExpSeeMrkCrs (ActRemRub + 366)
+#define ActConSeeMrkCrs (ActRemRub + 367)
+#define ActReqDatSeeMrkCrs (ActRemRub + 368)
+#define ActReqLnkSeeMrkCrs (ActRemRub + 369)
+#define ActSeeMyMrkCrs (ActRemRub + 370)
-#define ActSeeMrkGrp (ActReqLnkGam + 371)
-#define ActExpSeeMrkGrp (ActReqLnkGam + 372)
-#define ActConSeeMrkGrp (ActReqLnkGam + 373)
-#define ActReqDatSeeMrkGrp (ActReqLnkGam + 374)
-#define ActSeeMyMrkGrp (ActReqLnkGam + 375)
+#define ActSeeMrkGrp (ActRemRub + 371)
+#define ActExpSeeMrkGrp (ActRemRub + 372)
+#define ActConSeeMrkGrp (ActRemRub + 373)
+#define ActReqDatSeeMrkGrp (ActRemRub + 374)
+#define ActSeeMyMrkGrp (ActRemRub + 375)
-#define ActChgToAdmMrk (ActReqLnkGam + 376)
+#define ActChgToAdmMrk (ActRemRub + 376)
-#define ActAdmMrkCrs (ActReqLnkGam + 377)
-#define ActReqRemFilMrkCrs (ActReqLnkGam + 378)
-#define ActRemFilMrkCrs (ActReqLnkGam + 379)
-#define ActRemFolMrkCrs (ActReqLnkGam + 380)
-#define ActCopMrkCrs (ActReqLnkGam + 381)
-#define ActPasMrkCrs (ActReqLnkGam + 382)
-#define ActRemTreMrkCrs (ActReqLnkGam + 383)
-#define ActFrmCreMrkCrs (ActReqLnkGam + 384)
-#define ActCreFolMrkCrs (ActReqLnkGam + 385)
-#define ActRenFolMrkCrs (ActReqLnkGam + 386)
-#define ActRcvFilMrkCrsDZ (ActReqLnkGam + 387)
-#define ActRcvFilMrkCrsCla (ActReqLnkGam + 388)
-#define ActExpAdmMrkCrs (ActReqLnkGam + 389)
-#define ActConAdmMrkCrs (ActReqLnkGam + 390)
-#define ActZIPAdmMrkCrs (ActReqLnkGam + 391)
-#define ActUnhMrkCrs (ActReqLnkGam + 392)
-#define ActHidMrkCrs (ActReqLnkGam + 393)
-#define ActReqDatAdmMrkCrs (ActReqLnkGam + 394)
-#define ActChgDatAdmMrkCrs (ActReqLnkGam + 395)
-#define ActReqLnkAdmMrkCrs (ActReqLnkGam + 396)
-#define ActDowAdmMrkCrs (ActReqLnkGam + 397)
-#define ActChgNumRowHeaCrs (ActReqLnkGam + 398)
-#define ActChgNumRowFooCrs (ActReqLnkGam + 399)
+#define ActAdmMrkCrs (ActRemRub + 377)
+#define ActReqRemFilMrkCrs (ActRemRub + 378)
+#define ActRemFilMrkCrs (ActRemRub + 379)
+#define ActRemFolMrkCrs (ActRemRub + 380)
+#define ActCopMrkCrs (ActRemRub + 381)
+#define ActPasMrkCrs (ActRemRub + 382)
+#define ActRemTreMrkCrs (ActRemRub + 383)
+#define ActFrmCreMrkCrs (ActRemRub + 384)
+#define ActCreFolMrkCrs (ActRemRub + 385)
+#define ActRenFolMrkCrs (ActRemRub + 386)
+#define ActRcvFilMrkCrsDZ (ActRemRub + 387)
+#define ActRcvFilMrkCrsCla (ActRemRub + 388)
+#define ActExpAdmMrkCrs (ActRemRub + 389)
+#define ActConAdmMrkCrs (ActRemRub + 390)
+#define ActZIPAdmMrkCrs (ActRemRub + 391)
+#define ActUnhMrkCrs (ActRemRub + 392)
+#define ActHidMrkCrs (ActRemRub + 393)
+#define ActReqDatAdmMrkCrs (ActRemRub + 394)
+#define ActChgDatAdmMrkCrs (ActRemRub + 395)
+#define ActReqLnkAdmMrkCrs (ActRemRub + 396)
+#define ActDowAdmMrkCrs (ActRemRub + 397)
+#define ActChgNumRowHeaCrs (ActRemRub + 398)
+#define ActChgNumRowFooCrs (ActRemRub + 399)
-#define ActAdmMrkGrp (ActReqLnkGam + 400)
-#define ActReqRemFilMrkGrp (ActReqLnkGam + 401)
-#define ActRemFilMrkGrp (ActReqLnkGam + 402)
-#define ActRemFolMrkGrp (ActReqLnkGam + 403)
-#define ActCopMrkGrp (ActReqLnkGam + 404)
-#define ActPasMrkGrp (ActReqLnkGam + 405)
-#define ActRemTreMrkGrp (ActReqLnkGam + 406)
-#define ActFrmCreMrkGrp (ActReqLnkGam + 407)
-#define ActCreFolMrkGrp (ActReqLnkGam + 408)
-#define ActRenFolMrkGrp (ActReqLnkGam + 409)
-#define ActRcvFilMrkGrpDZ (ActReqLnkGam + 410)
-#define ActRcvFilMrkGrpCla (ActReqLnkGam + 411)
-#define ActExpAdmMrkGrp (ActReqLnkGam + 412)
-#define ActConAdmMrkGrp (ActReqLnkGam + 413)
-#define ActZIPAdmMrkGrp (ActReqLnkGam + 414)
-#define ActUnhMrkGrp (ActReqLnkGam + 415)
-#define ActHidMrkGrp (ActReqLnkGam + 416)
-#define ActReqDatAdmMrkGrp (ActReqLnkGam + 417)
-#define ActChgDatAdmMrkGrp (ActReqLnkGam + 418)
-#define ActDowAdmMrkGrp (ActReqLnkGam + 419)
-#define ActChgNumRowHeaGrp (ActReqLnkGam + 420)
-#define ActChgNumRowFooGrp (ActReqLnkGam + 421)
+#define ActAdmMrkGrp (ActRemRub + 400)
+#define ActReqRemFilMrkGrp (ActRemRub + 401)
+#define ActRemFilMrkGrp (ActRemRub + 402)
+#define ActRemFolMrkGrp (ActRemRub + 403)
+#define ActCopMrkGrp (ActRemRub + 404)
+#define ActPasMrkGrp (ActRemRub + 405)
+#define ActRemTreMrkGrp (ActRemRub + 406)
+#define ActFrmCreMrkGrp (ActRemRub + 407)
+#define ActCreFolMrkGrp (ActRemRub + 408)
+#define ActRenFolMrkGrp (ActRemRub + 409)
+#define ActRcvFilMrkGrpDZ (ActRemRub + 410)
+#define ActRcvFilMrkGrpCla (ActRemRub + 411)
+#define ActExpAdmMrkGrp (ActRemRub + 412)
+#define ActConAdmMrkGrp (ActRemRub + 413)
+#define ActZIPAdmMrkGrp (ActRemRub + 414)
+#define ActUnhMrkGrp (ActRemRub + 415)
+#define ActHidMrkGrp (ActRemRub + 416)
+#define ActReqDatAdmMrkGrp (ActRemRub + 417)
+#define ActChgDatAdmMrkGrp (ActRemRub + 418)
+#define ActDowAdmMrkGrp (ActRemRub + 419)
+#define ActChgNumRowHeaGrp (ActRemRub + 420)
+#define ActChgNumRowFooGrp (ActRemRub + 421)
-#define ActReqRemFilBrf (ActReqLnkGam + 422)
-#define ActRemFilBrf (ActReqLnkGam + 423)
-#define ActRemFolBrf (ActReqLnkGam + 424)
-#define ActCopBrf (ActReqLnkGam + 425)
-#define ActPasBrf (ActReqLnkGam + 426)
-#define ActRemTreBrf (ActReqLnkGam + 427)
-#define ActFrmCreBrf (ActReqLnkGam + 428)
-#define ActCreFolBrf (ActReqLnkGam + 429)
-#define ActCreLnkBrf (ActReqLnkGam + 430)
-#define ActRenFolBrf (ActReqLnkGam + 431)
-#define ActRcvFilBrfDZ (ActReqLnkGam + 432)
-#define ActRcvFilBrfCla (ActReqLnkGam + 433)
-#define ActExpBrf (ActReqLnkGam + 434)
-#define ActConBrf (ActReqLnkGam + 435)
-#define ActZIPBrf (ActReqLnkGam + 436)
-#define ActReqDatBrf (ActReqLnkGam + 437)
-#define ActChgDatBrf (ActReqLnkGam + 438)
-#define ActDowBrf (ActReqLnkGam + 439)
-#define ActReqRemOldBrf (ActReqLnkGam + 440)
-#define ActRemOldBrf (ActReqLnkGam + 441)
+#define ActReqRemFilBrf (ActRemRub + 422)
+#define ActRemFilBrf (ActRemRub + 423)
+#define ActRemFolBrf (ActRemRub + 424)
+#define ActCopBrf (ActRemRub + 425)
+#define ActPasBrf (ActRemRub + 426)
+#define ActRemTreBrf (ActRemRub + 427)
+#define ActFrmCreBrf (ActRemRub + 428)
+#define ActCreFolBrf (ActRemRub + 429)
+#define ActCreLnkBrf (ActRemRub + 430)
+#define ActRenFolBrf (ActRemRub + 431)
+#define ActRcvFilBrfDZ (ActRemRub + 432)
+#define ActRcvFilBrfCla (ActRemRub + 433)
+#define ActExpBrf (ActRemRub + 434)
+#define ActConBrf (ActRemRub + 435)
+#define ActZIPBrf (ActRemRub + 436)
+#define ActReqDatBrf (ActRemRub + 437)
+#define ActChgDatBrf (ActRemRub + 438)
+#define ActDowBrf (ActRemRub + 439)
+#define ActReqRemOldBrf (ActRemRub + 440)
+#define ActRemOldBrf (ActRemRub + 441)
/*****************************************************************************/
/******************************* Users tab ***********************************/
@@ -1750,7 +1758,7 @@
#define ActLst_NUM_ACTIONS (ActChgMyTT1stDay + 1)
-#define ActLst_MAX_ACTION_COD 1951
+#define ActLst_MAX_ACTION_COD 1958
#define ActLst_DEFAULT_ACTION_AFTER_LOGIN ActSeeGblTL
diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c
index eb69636c..cf1ed341 100644
--- a/swad_call_for_exam.c
+++ b/swad_call_for_exam.c
@@ -875,8 +875,8 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
Cfe_TypeViewCallForExam_t TypeViewCallForExam,
bool HighLight)
{
- extern const char *Hlp_ASSESSMENT_Calls_for_exam_new_call;
- extern const char *Hlp_ASSESSMENT_Announcements_edit_announcement;
+ extern const char *Hlp_ASSESSMENT_Calls_for_exams_new_call;
+ extern const char *Hlp_ASSESSMENT_Calls_for_exams_edit_call;
extern const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE];
extern const char *Txt_Call_for_exam;
extern const char *Txt_CALL_FOR_EXAM_Course;
@@ -940,8 +940,8 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams,
CallsForExams->ExaCod = ExaCod; // Used to put contextual icons
FunctionToDrawContextualIcons = TypeViewCallForExam == Cfe_NORMAL_VIEW ? Cfe_PutIconsCallForExam :
NULL;
- HelpLink = TypeViewCallForExam == Cfe_FORM_VIEW ? ((ExaCod > 0) ? Hlp_ASSESSMENT_Announcements_edit_announcement :
- Hlp_ASSESSMENT_Calls_for_exam_new_call) :
+ HelpLink = TypeViewCallForExam == Cfe_FORM_VIEW ? ((ExaCod > 0) ? Hlp_ASSESSMENT_Calls_for_exams_edit_call :
+ Hlp_ASSESSMENT_Calls_for_exams_new_call) :
NULL;
if (HighLight)
{
diff --git a/swad_changelog.h b/swad_changelog.h
index eb262098..2dae428c 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -629,6 +629,14 @@ siempre atento a sus comentarios y agradecido de antemano por la ayuda que siemp
TODO: Emilce Barrera Mesa: Calificación integrada de las actividades.
TODO: Emilce Barrera Mesa: Para futuras mejoras podrías incluir por favor la opción de duplicar una pregunta al momento de crearlas. Esto en razón a que si tengo dos preguntas con las mismas opciones de respuesta, pero diferente enunciado me ahorrarías tiempo si me permites duplicar la pregunta y solo cambiar el enunciado.
+ Version 22.65: Mar 01, 2023 New module swad_rubric for rubrics. Not finished. (336989 lines)
+ 2 changes necessary in database:
+CREATE TABLE IF NOT EXISTS rub_rubrics (RubCod INT NOT NULL AUTO_INCREMENT,CrsCod INT NOT NULL DEFAULT -1,UsrCod INT NOT NULL,Title VARCHAR(2047) NOT NULL,Txt TEXT NOT NULL,UNIQUE INDEX(RubCod),INDEX(CrsCod));
+CREATE TABLE IF NOT EXISTS rub_criteria (RubCod INT NOT NULL,CriInd INT NOT NULL,CriCod INT NOT NULL,UNIQUE INDEX(RubCod,CriInd),UNIQUE INDEX(RubCod,CriCod));
+ If you want to use MyISAM:
+ALTER TABLE rub_rubrics ENGINE=MyISAM;
+ALTER TABLE rub_criteria ENGINE=MyISAM;
+
Version 22.64: Feb 23, 2023 Surveys moved to analytics tab. (334217 lines)
Version 22.63: Feb 22, 2023 Assessment information moved to course tab. (334216 lines)
Version 22.62.2: Feb 22, 2023 Changed icon for question bank. (334165 lines)
diff --git a/swad_database.c b/swad_database.c
index 224fa766..f08c7733 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -2796,6 +2796,48 @@ mysql> DESCRIBE roo_check_in;
"INDEX(UsrCod,CheckInTime),"
"INDEX(CheckInTime))");
+ /***** Table rub_criteria *****/
+/*
+mysql> DESCRIBE rub_criteria;
++--------+------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++--------+------+------+-----+---------+-------+
+| RubCod | int | NO | PRI | NULL | |
+| CriInd | int | NO | PRI | NULL | |
+| CriCod | int | NO | | NULL | |
++--------+------+------+-----+---------+-------+
+3 rows in set (0,00 sec)
+*/
+ DB_CreateTable ("CREATE TABLE IF NOT EXISTS rub_criteria ("
+ "RubCod INT NOT NULL,"
+ "CriInd INT NOT NULL,"
+ "CriCod INT NOT NULL,"
+ "UNIQUE INDEX(RubCod,CriInd),"
+ "UNIQUE INDEX(RubCod,CriCod))");
+
+ /***** Table rub_rubrics *****/
+/*
+mysql> DESCRIBE rub_rubrics;
++--------+---------------+------+-----+---------+----------------+
+| Field | Type | Null | Key | Default | Extra |
++--------+---------------+------+-----+---------+----------------+
+| RubCod | int | NO | PRI | NULL | auto_increment |
+| CrsCod | int | NO | MUL | -1 | |
+| UsrCod | int | NO | | NULL | |
+| Title | varchar(2047) | NO | | NULL | |
+| Txt | text | NO | | NULL | |
++--------+---------------+------+-----+---------+----------------+
+5 rows in set (0,00 sec)
+*/
+ DB_CreateTable ("CREATE TABLE IF NOT EXISTS rub_rubrics ("
+ "RubCod INT NOT NULL AUTO_INCREMENT,"
+ "CrsCod INT NOT NULL DEFAULT -1,"
+ "UsrCod INT NOT NULL,"
+ "Title VARCHAR(2047) NOT NULL," // Rub_MAX_BYTES_TITLE
+ "Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
+ "UNIQUE INDEX(RubCod),"
+ "INDEX(CrsCod))");
+
/***** Table ses_params *****/
/*
mysql> DESCRIBE ses_params;
diff --git a/swad_error.c b/swad_error.c
index 37061bd0..aadb1b50 100644
--- a/swad_error.c
+++ b/swad_error.c
@@ -432,6 +432,29 @@ void Err_WrongMatchExit (void)
Err_ShowErrorAndExit ("Wrong match.");
}
+/*****************************************************************************/
+/************** Write error message and exit when wrong ribric ***************/
+/*****************************************************************************/
+
+void Err_WrongRubricExit (void)
+ {
+ Err_ShowErrorAndExit ("Wrong rubric.");
+ }
+
+/*****************************************************************************/
+/************ Write error message and exit when wrong criterion **************/
+/*****************************************************************************/
+
+void Err_WrongCriterionExit (void)
+ {
+ Err_ShowErrorAndExit ("Wrong criterion.");
+ }
+
+void Err_WrongCriterionIndexExit (void)
+ {
+ Err_ShowErrorAndExit ("Wrong criterion index.");
+ }
+
/*****************************************************************************/
/************** Write error message and exit when wrong survey ***************/
/*****************************************************************************/
diff --git a/swad_error.h b/swad_error.h
index af43ea50..35813265 100644
--- a/swad_error.h
+++ b/swad_error.h
@@ -77,6 +77,9 @@ void Err_WrongAnswerTypeExit (void);
void Err_WrongExamSessionExit (void);
void Err_WrongGameExit (void);
void Err_WrongMatchExit (void);
+void Err_WrongRubricExit (void);
+void Err_WrongCriterionExit (void);
+void Err_WrongCriterionIndexExit (void);
void Err_WrongSurveyExit (void);
void Err_WrongWhoExit (void);
void Err_WrongEventExit (void);
diff --git a/swad_figure.c b/swad_figure.c
index 990b93e5..b959e38a 100644
--- a/swad_figure.c
+++ b/swad_figure.c
@@ -47,6 +47,7 @@
#include "swad_privacy.h"
#include "swad_program.h"
#include "swad_project.h"
+#include "swad_rubric.h"
#include "swad_survey.h"
#include "swad_test.h"
#include "swad_theme.h"
@@ -208,6 +209,7 @@ void Fig_ShowFigures (void)
[Fig_TESTS ] = Tst_GetAndShowTestsStats,
[Fig_EXAMS ] = Exa_GetAndShowExamsStats,
[Fig_GAMES ] = Gam_GetAndShowGamesStats,
+ [Fig_RUBRICS ] = Rub_GetAndShowRubricsStats,
[Fig_TIMELINE ] = Tml_GetAndShowTimelineActivityStats,
[Fig_FOLLOW ] = Fol_GetAndShowFollowStats,
[Fig_FORUMS ] = For_GetAndShowForumStats,
diff --git a/swad_figure.h b/swad_figure.h
index 21fcfb64..61a7840e 100644
--- a/swad_figure.h
+++ b/swad_figure.h
@@ -33,7 +33,7 @@
/************************** Public types and constants ***********************/
/*****************************************************************************/
-#define Fig_NUM_FIGURES 32
+#define Fig_NUM_FIGURES 33
typedef enum
{
Fig_USERS, // Number of users
@@ -49,6 +49,7 @@ typedef enum
Fig_TESTS, // Number of test questions
Fig_EXAMS, // Number of exams
Fig_GAMES, // Number of games
+ Fig_RUBRICS, // Number of rubrics
Fig_TIMELINE, // Number of timeline notes
Fig_FOLLOW, // Number of following and followers
Fig_FORUMS, // Number of forums, threads and posts
diff --git a/swad_help_URL.c b/swad_help_URL.c
index 8b969181..da5d245a 100644
--- a/swad_help_URL.c
+++ b/swad_help_URL.c
@@ -1495,6 +1495,75 @@ const char *Hlp_ASSESSMENT_Projects_add_user =
"ASSESSMENT.Projects.en#add-user";
#endif
+const char *Hlp_ASSESSMENT_Calls_for_exams =
+#if L==1
+ "ASSESSMENT.Calls_for_exams.es";
+#elif L==2
+ "ASSESSMENT.Calls_for_exams.en";
+#elif L==3
+ "ASSESSMENT.Calls_for_exams.en";
+#elif L==4
+ "ASSESSMENT.Calls_for_exams.es";
+#elif L==5
+ "ASSESSMENT.Calls_for_exams.en";
+#elif L==6
+ "ASSESSMENT.Calls_for_exams.es";
+#elif L==7
+ "ASSESSMENT.Calls_for_exams.en";
+#elif L==8
+ "ASSESSMENT.Calls_for_exams.en";
+#elif L==9
+ "ASSESSMENT.Calls_for_exams.en";
+#elif L==10 // tr
+ "ASSESSMENT.Calls_for_exams.en";
+#endif
+
+const char *Hlp_ASSESSMENT_Calls_for_exams_new_call =
+#if L==1
+ "ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
+#elif L==2
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#elif L==3
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#elif L==4
+ "ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
+#elif L==5
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#elif L==6
+ "ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
+#elif L==7
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#elif L==8
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#elif L==9
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#elif L==10 // tr
+ "ASSESSMENT.Calls_for_exams.en#new-call";
+#endif
+
+const char *Hlp_ASSESSMENT_Calls_for_exams_edit_call =
+#if L==1
+ "ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
+#elif L==2
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#elif L==3
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#elif L==4
+ "ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
+#elif L==5
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#elif L==6
+ "ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
+#elif L==7
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#elif L==8
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#elif L==9
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#elif L==10 // tr
+ "ASSESSMENT.Calls_for_exams.en#edit-call";
+#endif
+
const char *Hlp_ASSESSMENT_Questions =
#if L==1
"ASSESSMENT.Questions.es";
@@ -1955,165 +2024,96 @@ const char *Hlp_ASSESSMENT_Games_results =
"ASSESSMENT.Games.en#results";
#endif
-const char *Hlp_ASSESSMENT_Surveys =
+const char *Hlp_ASSESSMENT_Rubrics =
#if L==1
- "ASSESSMENT.Surveys.es";
+ "ASSESSMENT.Rubrics.es";
#elif L==2
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#elif L==3
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#elif L==4
- "ASSESSMENT.Surveys.es";
+ "ASSESSMENT.Rubrics.es";
#elif L==5
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#elif L==6
- "ASSESSMENT.Surveys.es";
+ "ASSESSMENT.Rubrics.es";
#elif L==7
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#elif L==8
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#elif L==9
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#elif L==10 // tr
- "ASSESSMENT.Surveys.en";
+ "ASSESSMENT.Rubrics.en";
#endif
-const char *Hlp_ASSESSMENT_Surveys_new_survey =
+const char *Hlp_ASSESSMENT_Rubrics_edit_rubric =
#if L==1
- "ASSESSMENT.Surveys.es#nueva-encuesta";
+ "ASSESSMENT.Rubrics.es#editar-juego";
#elif L==2
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#elif L==3
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#elif L==4
- "ASSESSMENT.Surveys.es#nueva-encuesta";
+ "ASSESSMENT.Rubrics.es#editar-rubrica";
#elif L==5
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#elif L==6
- "ASSESSMENT.Surveys.es#nueva-encuesta";
+ "ASSESSMENT.Rubrics.es#editar-rubrica";
#elif L==7
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#elif L==8
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#elif L==9
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#elif L==10 // tr
- "ASSESSMENT.Surveys.en#new-survey";
+ "ASSESSMENT.Rubrics.en#edit-rubric";
#endif
-const char *Hlp_ASSESSMENT_Surveys_edit_survey =
+const char *Hlp_ASSESSMENT_Rubrics_new_rubric =
#if L==1
- "ASSESSMENT.Surveys.es#editar-encuesta";
+ "ASSESSMENT.Rubrics.es#nuevo-juego";
#elif L==2
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#elif L==3
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#elif L==4
- "ASSESSMENT.Surveys.es#editar-encuesta";
+ "ASSESSMENT.Rubrics.es#nueva-rubrica";
#elif L==5
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#elif L==6
- "ASSESSMENT.Surveys.es#editar-encuesta";
+ "ASSESSMENT.Rubrics.es#nueva-rubrica";
#elif L==7
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#elif L==8
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#elif L==9
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#elif L==10 // tr
- "ASSESSMENT.Surveys.en#edit-survey";
+ "ASSESSMENT.Rubrics.en#new-rubric";
#endif
-const char *Hlp_ASSESSMENT_Surveys_questions =
+const char *Hlp_ASSESSMENT_Rubrics_criteria =
#if L==1
- "ASSESSMENT.Surveys.es#preguntas";
+ "ASSESSMENT.Rubrics.es#criteria";
#elif L==2
- "ASSESSMENT.Surveys.en#questions";
+ "ASSESSMENT.Rubrics.en#criteria";
#elif L==3
- "ASSESSMENT.Surveys.en#questions";
+ "ASSESSMENT.Rubrics.en#criteria";
#elif L==4
- "ASSESSMENT.Surveys.es#preguntas";
+ "ASSESSMENT.Rubrics.es#criterios";
#elif L==5
- "ASSESSMENT.Surveys.en#questions";
+ "ASSESSMENT.Rubrics.en#criteria";
#elif L==6
- "ASSESSMENT.Surveys.es#preguntas";
+ "ASSESSMENT.Rubrics.es#criterios";
#elif L==7
- "ASSESSMENT.Surveys.en#questions";
+ "ASSESSMENT.Rubrics.en#criteria";
#elif L==8
- "ASSESSMENT.Surveys.en#questions";
+ "ASSESSMENT.Rubrics.en#criteria";
#elif L==9
- "ASSESSMENT.Surveys.en#questions";
+ "ASSESSMENT.Rubrics.en#criteria";
#elif L==10 // tr
- "ASSESSMENT.Surveys.en#questions";
-#endif
-
-const char *Hlp_ASSESSMENT_Calls_for_exams =
-#if L==1
- "ASSESSMENT.Calls_for_exams.es";
-#elif L==2
- "ASSESSMENT.Calls_for_exams.en";
-#elif L==3
- "ASSESSMENT.Calls_for_exams.en";
-#elif L==4
- "ASSESSMENT.Calls_for_exams.es";
-#elif L==5
- "ASSESSMENT.Calls_for_exams.en";
-#elif L==6
- "ASSESSMENT.Calls_for_exams.es";
-#elif L==7
- "ASSESSMENT.Calls_for_exams.en";
-#elif L==8
- "ASSESSMENT.Calls_for_exams.en";
-#elif L==9
- "ASSESSMENT.Calls_for_exams.en";
-#elif L==10 // tr
- "ASSESSMENT.Calls_for_exams.en";
-#endif
-
-const char *Hlp_ASSESSMENT_Calls_for_exam_new_call =
-#if L==1
- "ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
-#elif L==2
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#elif L==3
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#elif L==4
- "ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
-#elif L==5
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#elif L==6
- "ASSESSMENT.Calls_for_exams.es#nueva-convocatoria";
-#elif L==7
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#elif L==8
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#elif L==9
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#elif L==10 // tr
- "ASSESSMENT.Calls_for_exams.en#new-call";
-#endif
-
-const char *Hlp_ASSESSMENT_Announcements_edit_announcement =
-#if L==1
- "ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
-#elif L==2
- "ASSESSMENT.Calls_for_exams.en#edit-call";
-#elif L==3
- "ASSESSMENT.Calls_for_exams.en#edit-call";
-#elif L==4
- "ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
-#elif L==5
- "ASSESSMENT.Calls_for_exams.en#edit-call";
-#elif L==6
- "ASSESSMENT.Calls_for_exams.es#editar-convocatoria";
-#elif L==7
- "ASSESSMENT.Calls_for_exams.en#edit-call";
-#elif L==8
- "ASSESSMENT.Calls_for_exams.en#edit-call";
-#elif L==9
- "ASSESSMENT.Calls_for_exams.en#edit-call";
-#elif L==10 // tr
- "ASSESSMENT.Calls_for_exams.en#edit-call";
+ "ASSESSMENT.Rubrics.en#criteria";
#endif
/***** FILES tab *****/
@@ -3435,6 +3435,29 @@ const char *Hlp_ANALYTICS_Figures_games =
"ANALYTICS.Figures.en#games";
#endif
+const char *Hlp_ANALYTICS_Figures_rubrics =
+#if L==1
+ "ANALYTICS.Figures.es#rubricas";
+#elif L==2
+ "ANALYTICS.Figures.en#rubrics";
+#elif L==3
+ "ANALYTICS.Figures.en#rubrics";
+#elif L==4
+ "ANALYTICS.Figures.es#rubricas";
+#elif L==5
+ "ANALYTICS.Figures.en#rubrics";
+#elif L==6
+ "ANALYTICS.Figures.es#rubricas";
+#elif L==7
+ "ANALYTICS.Figures.en#rubrics";
+#elif L==8
+ "ANALYTICS.Figures.en#rubrics";
+#elif L==9
+ "ANALYTICS.Figures.en#rubrics";
+#elif L==10 // tr
+ "ANALYTICS.Figures.en#rubrics";
+#endif
+
const char *Hlp_ANALYTICS_Figures_surveys =
#if L==1
"ANALYTICS.Figures.es#encuestas";
@@ -3964,6 +3987,98 @@ const char *Hlp_ANALYTICS_Visits_visits_to_course =
"ANALYTICS.Visits.en#visits-to-course";
#endif
+const char *Hlp_ANALYTICS_Surveys =
+#if L==1
+ "ANALYTICS.Surveys.es";
+#elif L==2
+ "ANALYTICS.Surveys.en";
+#elif L==3
+ "ANALYTICS.Surveys.en";
+#elif L==4
+ "ANALYTICS.Surveys.es";
+#elif L==5
+ "ANALYTICS.Surveys.en";
+#elif L==6
+ "ANALYTICS.Surveys.es";
+#elif L==7
+ "ANALYTICS.Surveys.en";
+#elif L==8
+ "ANALYTICS.Surveys.en";
+#elif L==9
+ "ANALYTICS.Surveys.en";
+#elif L==10 // tr
+ "ANALYTICS.Surveys.en";
+#endif
+
+const char *Hlp_ANALYTICS_Surveys_new_survey =
+#if L==1
+ "ANALYTICS.Surveys.es#nueva-encuesta";
+#elif L==2
+ "ANALYTICS.Surveys.en#new-survey";
+#elif L==3
+ "ANALYTICS.Surveys.en#new-survey";
+#elif L==4
+ "ANALYTICS.Surveys.es#nueva-encuesta";
+#elif L==5
+ "ANALYTICS.Surveys.en#new-survey";
+#elif L==6
+ "ANALYTICS.Surveys.es#nueva-encuesta";
+#elif L==7
+ "ANALYTICS.Surveys.en#new-survey";
+#elif L==8
+ "ANALYTICS.Surveys.en#new-survey";
+#elif L==9
+ "ANALYTICS.Surveys.en#new-survey";
+#elif L==10 // tr
+ "ANALYTICS.Surveys.en#new-survey";
+#endif
+
+const char *Hlp_ANALYTICS_Surveys_edit_survey =
+#if L==1
+ "ANALYTICS.Surveys.es#editar-encuesta";
+#elif L==2
+ "ANALYTICS.Surveys.en#edit-survey";
+#elif L==3
+ "ANALYTICS.Surveys.en#edit-survey";
+#elif L==4
+ "ANALYTICS.Surveys.es#editar-encuesta";
+#elif L==5
+ "ANALYTICS.Surveys.en#edit-survey";
+#elif L==6
+ "ANALYTICS.Surveys.es#editar-encuesta";
+#elif L==7
+ "ANALYTICS.Surveys.en#edit-survey";
+#elif L==8
+ "ANALYTICS.Surveys.en#edit-survey";
+#elif L==9
+ "ANALYTICS.Surveys.en#edit-survey";
+#elif L==10 // tr
+ "ANALYTICS.Surveys.en#edit-survey";
+#endif
+
+const char *Hlp_ANALYTICS_Surveys_questions =
+#if L==1
+ "ANALYTICS.Surveys.es#preguntas";
+#elif L==2
+ "ANALYTICS.Surveys.en#questions";
+#elif L==3
+ "ANALYTICS.Surveys.en#questions";
+#elif L==4
+ "ANALYTICS.Surveys.es#preguntas";
+#elif L==5
+ "ANALYTICS.Surveys.en#questions";
+#elif L==6
+ "ANALYTICS.Surveys.es#preguntas";
+#elif L==7
+ "ANALYTICS.Surveys.en#questions";
+#elif L==8
+ "ANALYTICS.Surveys.en#questions";
+#elif L==9
+ "ANALYTICS.Surveys.en#questions";
+#elif L==10 // tr
+ "ANALYTICS.Surveys.en#questions";
+#endif
+
const char *Hlp_ANALYTICS_Report =
#if L==1
"ANALYTICS.Report.es";
diff --git a/swad_notification.c b/swad_notification.c
index 2f7e3965..b13213f8 100644
--- a/swad_notification.c
+++ b/swad_notification.c
@@ -102,7 +102,6 @@ const char *Ntf_WSNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
/* Course tab */
/* Assessment tab */
[Ntf_EVENT_ASSIGNMENT ] = "assignment",
- [Ntf_EVENT_SURVEY ] = "survey",
[Ntf_EVENT_CALL_FOR_EXAM ] = "examAnnouncement",
/* Files tab */
[Ntf_EVENT_DOCUMENT_FILE ] = "documentFile",
@@ -120,6 +119,7 @@ const char *Ntf_WSNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
[Ntf_EVENT_FORUM_REPLY ] = "forumReply",
[Ntf_EVENT_MESSAGE ] = "message",
/* Analytics tab */
+ [Ntf_EVENT_SURVEY ] = "survey",
/* Profile tab */
};
@@ -183,7 +183,6 @@ static const char *Ntf_ParamNotifMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
/* Course tab */
/* Assessment tab */
[Ntf_EVENT_ASSIGNMENT ] = "NotifyNtfEventAssignment",
- [Ntf_EVENT_SURVEY ] = "NotifyNtfEventSurvey",
[Ntf_EVENT_CALL_FOR_EXAM ] = "NotifyNtfEventExamAnnouncement",
/* Files tab */
[Ntf_EVENT_DOCUMENT_FILE ] = "NotifyNtfEventDocumentFile",
@@ -201,6 +200,7 @@ static const char *Ntf_ParamNotifMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
[Ntf_EVENT_ENROLMENT_TCH ] = "NotifyNtfEventEnrolmentTeacher",
[Ntf_EVENT_ENROLMENT_REQUEST] = "NotifyNtfEventEnrolmentRequest",
/* Analytics tab */
+ [Ntf_EVENT_SURVEY ] = "NotifyNtfEventSurvey",
/* Profile tab */
};
@@ -222,7 +222,6 @@ static const char *Ntf_ParamEmailMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
/* Course tab */
/* Assessment tab */
[Ntf_EVENT_ASSIGNMENT ] = "EmailNtfEventAssignment",
- [Ntf_EVENT_SURVEY ] = "EmailNtfEventSurvey",
[Ntf_EVENT_CALL_FOR_EXAM ] = "EmailNtfEventExamAnnouncement",
/* Files tab */
[Ntf_EVENT_DOCUMENT_FILE ] = "EmailNtfEventDocumentFile",
@@ -240,6 +239,7 @@ static const char *Ntf_ParamEmailMeAboutNotifyEvents[Ntf_NUM_NOTIFY_EVENTS] =
[Ntf_EVENT_ENROLMENT_TCH ] = "EmailNtfEventEnrolmentTeacher",
[Ntf_EVENT_ENROLMENT_REQUEST] = "EmailNtfEventEnrolmentRequest",
/* Analytics tab */
+ [Ntf_EVENT_SURVEY ] = "EmailNtfEventSurvey",
/* Profile tab */
};
@@ -261,7 +261,6 @@ static const char *Ntf_Icons[Ntf_NUM_NOTIFY_EVENTS] =
/* Course tab */
/* Assessment tab */
[Ntf_EVENT_ASSIGNMENT ] = "edit.svg",
- [Ntf_EVENT_SURVEY ] = "poll.svg",
[Ntf_EVENT_CALL_FOR_EXAM ] = "bullhorn.svg",
/* Files tab */
[Ntf_EVENT_DOCUMENT_FILE ] = "file.svg",
@@ -279,6 +278,7 @@ static const char *Ntf_Icons[Ntf_NUM_NOTIFY_EVENTS] =
[Ntf_EVENT_ENROLMENT_TCH ] = "user-tie.svg",
[Ntf_EVENT_ENROLMENT_REQUEST] = "hand-point-up.svg",
/* Analytics tab */
+ [Ntf_EVENT_SURVEY ] = "poll.svg",
/* Profile tab */
};
diff --git a/swad_notification.h b/swad_notification.h
index 91d8c66a..9ef65eac 100644
--- a/swad_notification.h
+++ b/swad_notification.h
@@ -51,7 +51,9 @@
// If the numbers assigned to each event type change,
// it is necessary to change old numbers to new ones
// in database tables ntf_notifications, sta_notifications and usr_data
-typedef enum // TODO: Change numbers (also in database)!!!!!!!!!!!!!!
+
+// TODO: Change numbers (also in database)!!!!!!!!!!!!!!
+typedef enum
{
Ntf_EVENT_UNKNOWN = 0,
/* Start tab */
diff --git a/swad_pagination.c b/swad_pagination.c
index c2c43e15..4eb7af01 100644
--- a/swad_pagination.c
+++ b/swad_pagination.c
@@ -69,12 +69,13 @@ static const char *Pag_ParamNumPag[Pag_NUM_WHAT_PAGINATE] =
[Pag_PROJECTS ] = "NumPagPrj",
[Pag_EXAMS ] = "NumPagExa",
[Pag_GAMES ] = "NumPagGam",
- [Pag_SURVEYS ] = "NumPagSvy",
+ [Pag_RUBRICS ] = "NumPagRub",
[Pag_ATT_EVENTS ] = "NumPagAtt",
[Pag_THREADS_FORUM ] = "NumPagThr",
[Pag_POSTS_FORUM ] = "NumPagPst",
[Pag_MESSAGES_RECEIVED] = "NumPagRcv",
[Pag_MESSAGES_SENT ] = "NumPagSnt",
+ [Pag_SURVEYS ] = "NumPagSvy",
[Pag_MY_AGENDA ] = "NumPagMyAgd",
[Pag_ANOTHER_AGENDA ] = "NumPagOthAgd",
};
@@ -202,6 +203,10 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
WhichGroups = Grp_GetParamWhichGroups ();
Grp_PutParamWhichGroups (&WhichGroups);
break;
+ case Pag_RUBRICS:
+ Frm_BeginFormAnchor (ActSeeAllRub,Pagination->Anchor);
+ Pag_PutHiddenParamPagNum (WhatPaginate,1);
+ break;
case Pag_ATT_EVENTS:
Frm_BeginFormAnchor (ActSeeAtt,Pagination->Anchor);
Pag_PutHiddenParamPagNum (WhatPaginate,1);
@@ -325,6 +330,10 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
WhichGroups = Grp_GetParamWhichGroups ();
Grp_PutParamWhichGroups (&WhichGroups);
break;
+ case Pag_RUBRICS:
+ Frm_BeginFormAnchor (ActSeeAllRub,Pagination->Anchor);
+ Pag_PutHiddenParamPagNum (WhatPaginate,1);
+ break;
case Pag_ATT_EVENTS:
Frm_BeginFormAnchor (ActSeeAtt,Pagination->Anchor);
Pag_PutHiddenParamPagNum (WhatPaginate,1);
@@ -441,6 +450,10 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
WhichGroups = Grp_GetParamWhichGroups ();
Grp_PutParamWhichGroups (&WhichGroups);
break;
+ case Pag_RUBRICS:
+ Frm_BeginFormAnchor (ActSeeAllRub,Pagination->Anchor);
+ Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage);
+ break;
case Pag_ATT_EVENTS:
Frm_BeginFormAnchor (ActSeeAtt,Pagination->Anchor);
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage);
@@ -570,6 +583,10 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
WhichGroups = Grp_GetParamWhichGroups ();
Grp_PutParamWhichGroups (&WhichGroups);
break;
+ case Pag_RUBRICS:
+ Frm_BeginFormAnchor (ActSeeAllRub,Pagination->Anchor);
+ Pag_PutHiddenParamPagNum (WhatPaginate,NumPage);
+ break;
case Pag_ATT_EVENTS:
Frm_BeginFormAnchor (ActSeeAtt,Pagination->Anchor);
Pag_PutHiddenParamPagNum (WhatPaginate,NumPage);
@@ -685,6 +702,10 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
WhichGroups = Grp_GetParamWhichGroups ();
Grp_PutParamWhichGroups (&WhichGroups);
break;
+ case Pag_RUBRICS:
+ Frm_BeginFormAnchor (ActSeeAllRub,Pagination->Anchor);
+ Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage);
+ break;
case Pag_ATT_EVENTS:
Frm_BeginFormAnchor (ActSeeAtt,Pagination->Anchor);
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage);
@@ -801,6 +822,10 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
WhichGroups = Grp_GetParamWhichGroups ();
Grp_PutParamWhichGroups (&WhichGroups);
break;
+ case Pag_RUBRICS:
+ Frm_BeginFormAnchor (ActSeeAllRub,Pagination->Anchor);
+ Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags);
+ break;
case Pag_ATT_EVENTS:
Frm_BeginFormAnchor (ActSeeAtt,Pagination->Anchor);
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags);
diff --git a/swad_pagination.h b/swad_pagination.h
index 048d1e00..b071924c 100644
--- a/swad_pagination.h
+++ b/swad_pagination.h
@@ -39,7 +39,7 @@
/******************************** Public types *******************************/
/*****************************************************************************/
-#define Pag_NUM_WHAT_PAGINATE 13
+#define Pag_NUM_WHAT_PAGINATE 14
typedef enum
{
Pag_NONE = 0,
@@ -47,14 +47,15 @@ typedef enum
Pag_PROJECTS = 2,
Pag_EXAMS = 3,
Pag_GAMES = 4,
- Pag_SURVEYS = 5,
+ Pag_RUBRICS = 5,
Pag_ATT_EVENTS = 6,
Pag_THREADS_FORUM = 7,
Pag_POSTS_FORUM = 8,
Pag_MESSAGES_RECEIVED = 9,
Pag_MESSAGES_SENT = 10,
- Pag_MY_AGENDA = 11,
- Pag_ANOTHER_AGENDA = 12,
+ Pag_SURVEYS = 11,
+ Pag_MY_AGENDA = 12,
+ Pag_ANOTHER_AGENDA = 13,
} Pag_WhatPaginate_t;
struct Pagination // Used for threads and messages pagination
diff --git a/swad_survey.c b/swad_survey.c
index c63eb6b7..57e8b08a 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -188,7 +188,7 @@ void Svy_SeeAllSurveys (void)
void Svy_ListAllSurveys (struct Svy_Surveys *Surveys)
{
- extern const char *Hlp_ASSESSMENT_Surveys;
+ extern const char *Hlp_ANALYTICS_Surveys;
extern const char *Txt_Surveys;
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
@@ -216,7 +216,7 @@ void Svy_ListAllSurveys (struct Svy_Surveys *Surveys)
/***** Begin box *****/
Box_BoxBegin ("100%",Txt_Surveys,
Svy_PutIconsListSurveys,Surveys,
- Hlp_ASSESSMENT_Surveys,Box_NOT_CLOSABLE);
+ Hlp_ANALYTICS_Surveys,Box_NOT_CLOSABLE);
/***** Select whether show only my groups or all groups *****/
if (Gbl.Crs.Grps.NumGrps)
@@ -423,7 +423,7 @@ void Svy_SeeOneSurvey (void)
static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
bool ShowOnlyThisSvyComplete)
{
- extern const char *Hlp_ASSESSMENT_Surveys;
+ extern const char *Hlp_ANALYTICS_Surveys;
extern const char *Txt_Survey;
extern const char *Txt_View_survey;
extern const char *Txt_Number_of_questions;
@@ -450,7 +450,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
if (ShowOnlyThisSvyComplete)
Box_BoxBegin (NULL,Txt_Survey,
Svy_PutIconsOneSvy,Surveys,
- Hlp_ASSESSMENT_Surveys,Box_NOT_CLOSABLE);
+ Hlp_ANALYTICS_Surveys,Box_NOT_CLOSABLE);
/***** Set anchor string *****/
Frm_SetAnchorStr (Surveys->Svy.SvyCod,&Anchor);
@@ -1666,8 +1666,8 @@ void Svy_UnhideSurvey (void)
void Svy_RequestCreatOrEditSvy (void)
{
- extern const char *Hlp_ASSESSMENT_Surveys_new_survey;
- extern const char *Hlp_ASSESSMENT_Surveys_edit_survey;
+ extern const char *Hlp_ANALYTICS_Surveys_new_survey;
+ extern const char *Hlp_ANALYTICS_Surveys_edit_survey;
extern const char *Txt_New_survey;
extern const char *Txt_Scope;
extern const char *Txt_Edit_survey;
@@ -1741,13 +1741,13 @@ void Svy_RequestCreatOrEditSvy (void)
if (ItsANewSurvey)
Box_BoxTableBegin (NULL,Txt_New_survey,
NULL,NULL,
- Hlp_ASSESSMENT_Surveys_new_survey,Box_NOT_CLOSABLE,2);
+ Hlp_ANALYTICS_Surveys_new_survey,Box_NOT_CLOSABLE,2);
else
Box_BoxTableBegin (NULL,
Surveys.Svy.Title[0] ? Surveys.Svy.Title :
Txt_Edit_survey,
NULL,NULL,
- Hlp_ASSESSMENT_Surveys_edit_survey,Box_NOT_CLOSABLE,2);
+ Hlp_ANALYTICS_Surveys_edit_survey,Box_NOT_CLOSABLE,2);
/***** Scope of the survey *****/
HTM_TR_Begin (NULL);
@@ -2318,7 +2318,7 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
struct Svy_Question *SvyQst,
char Stem[Cns_MAX_BYTES_TEXT + 1])
{
- extern const char *Hlp_ASSESSMENT_Surveys_questions;
+ extern const char *Hlp_ANALYTICS_Surveys_questions;
extern const char *Txt_Question;
extern const char *Txt_New_question;
extern const char *Txt_Wording;
@@ -2386,7 +2386,7 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
else
Box_BoxBegin (NULL,Txt_New_question,
NULL,NULL,
- Hlp_ASSESSMENT_Surveys_questions,Box_NOT_CLOSABLE);
+ Hlp_ANALYTICS_Surveys_questions,Box_NOT_CLOSABLE);
/***** Begin form *****/
Frm_BeginForm (ActRcvSvyQst);
@@ -2755,7 +2755,7 @@ static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod)
static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys)
{
- extern const char *Hlp_ASSESSMENT_Surveys_questions;
+ extern const char *Hlp_ANALYTICS_Surveys_questions;
extern const char *Txt_Questions;
extern const char *Txt_No_INDEX;
extern const char *Txt_Type;
@@ -2778,11 +2778,11 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys)
if (Surveys->Svy.Status.ICanEdit)
Box_BoxBegin (NULL,Txt_Questions,
Svy_PutIconToAddNewQuestion,Surveys,
- Hlp_ASSESSMENT_Surveys_questions,Box_NOT_CLOSABLE);
+ Hlp_ANALYTICS_Surveys_questions,Box_NOT_CLOSABLE);
else
Box_BoxBegin (NULL,Txt_Questions,
NULL,NULL,
- Hlp_ASSESSMENT_Surveys_questions,Box_NOT_CLOSABLE);
+ Hlp_ANALYTICS_Surveys_questions,Box_NOT_CLOSABLE);
/***** Get data of questions from database *****/
if ((NumQsts = Svy_DB_GetSurveyQsts (&mysql_res,Surveys->Svy.SvyCod)))
diff --git a/swad_text.c b/swad_text.c
index b2de791b..62486a64 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -1060,6 +1060,29 @@ const char *Txt_Action =
"Eylem";
#endif
+const char *Txt_Add_criteria =
+#if L==1 // ca
+ "Afegir criteris";
+#elif L==2 // de
+ "Fügen Kriterien";
+#elif L==3 // en
+ "Add criteria";
+#elif L==4 // es
+ "Añadir criterios";
+#elif L==5 // fr
+ "Ajouter critères";
+#elif L==6 // gn
+ "Añadir criterios"; // Okoteve traducción
+#elif L==7 // it
+ "Aggiungere criteri";
+#elif L==8 // pl
+ "Dodaj kryteria";
+#elif L==9 // pt
+ "Adicionar critérios";
+#elif L==10 // tr
+ "Kriter ekle";
+#endif
+
const char *Txt_Add_questions =
#if L==1 // ca
"Afegir preguntes";
@@ -2802,7 +2825,7 @@ const char *Txt_average =
const char *Txt_Average_number_BR_of_ASSIG_BR_per_course =
#if L==1 // ca
- "Nombre mitj´
d'activitats
per assignatura";
+ "Nombre mitjà
d'activitats
per assignatura";
#elif L==2 // de
"Durchschnittliche Anzahl
von Aufgaben
pro Kurs";
#elif L==3 // en
@@ -2823,9 +2846,55 @@ const char *Txt_Average_number_BR_of_ASSIG_BR_per_course =
"Average number
of assignments
per course"; // Çeviri lazim!
#endif
+const char *Txt_Average_number_of_courses_to_which_a_user_belongs =
+#if L==1 // ca
+ "Nombre mitjà d'assignatures a las quals pertany cada usuari";
+#elif L==2 // de
+ "Durchschnittliche Anzahl von Kursen, an denen der Benutzer teilnimmt";
+#elif L==3 // en
+ "Average number of courses to which a user belongs";
+#elif L==4 // es
+ "N.º medio de asignaturas a las que pertenece cada usuario";
+#elif L==5 // fr
+ "Nombre moyen de matières à qui appartient un utilisateur";
+#elif L==6 // gn
+ "N.º medio de asignaturas a las que pertenece cada usuario"; // Okoteve traducción
+#elif L==7 // it
+ "Numero medio di corsi a cui appartiene un utente";
+#elif L==8 // pl
+ "Średnia liczba kursów do której nalezy uzytkownik";
+#elif L==9 // pt
+ "N.º medio de disciplinas em que cada utilizador pertence";
+#elif L==10 // tr
+ "Average number of courses to which a user belongs"; // Çeviri lazim!
+#endif
+
+const char *Txt_Average_number_BR_of_criteria_BR_per_rubric =
+#if L==1 // ca
+ "Nombre mitjà
de criteris
per rúbrica";
+#elif L==2 // de
+ "Durchschnittliche Anzahl
von Kriterien
pro Rubrik";
+#elif L==3 // en
+ "Average number
of criteria
per rubric";
+#elif L==4 // es
+ "N.º medio
de criterios
por rúbrica";
+#elif L==5 // fr
+ "Nombre moyen
de critères
par rubrique";
+#elif L==6 // gn
+ "N.º medio
de criterios
por rúbrica"; // Okoteve traducción
+#elif L==7 // it
+ "Numero medio
di criteri
per rubrica";
+#elif L==8 // pl
+ "Średnia liczba
kryteriów
na rubrykę";
+#elif L==9 // pt
+ "N.º medio
de critérios
por rubrica";
+#elif L==10 // tr
+ "Dereceli puanlama
anahtarı başına
ortalama ölçüt sayısı";
+#endif
+
const char *Txt_Average_number_BR_of_exams_BR_per_course =
#if L==1 // ca
- "Nombre mitj´
d'exàmens
per assignatura";
+ "Nombre mitjà
d'exàmens
per assignatura";
#elif L==2 // de
"Durchschnittliche Anzahl
von Prüfung
pro Kurs";
#elif L==3 // en
@@ -2848,7 +2917,7 @@ const char *Txt_Average_number_BR_of_exams_BR_per_course =
const char *Txt_Average_number_BR_of_games_BR_per_course =
#if L==1 // ca
- "Nombre mitj´
de jocs
per assignatura";
+ "Nombre mitjà
de jocs
per assignatura";
#elif L==2 // de
"Durchschnittliche Anzahl
von Spiele
pro Kurs";
#elif L==3 // en
@@ -2871,7 +2940,7 @@ const char *Txt_Average_number_BR_of_games_BR_per_course =
const char *Txt_Average_number_BR_of_items_BR_per_course =
#if L==1 // ca
- "Nombre mitj´
d'items
per assignatura";
+ "Nombre mitjà
d'items
per assignatura";
#elif L==2 // de
"Durchschnittliche Anzahl
von Programmelemente
pro Kurs";
#elif L==3 // en
@@ -2894,7 +2963,7 @@ const char *Txt_Average_number_BR_of_items_BR_per_course =
const char *Txt_Average_number_BR_of_projects_BR_per_course =
#if L==1 // ca
- "Nombre mitj´
de projectes
per assignatura";
+ "Nombre mitjà
de projectes
per assignatura";
#elif L==2 // de
"Durchschnittliche Anzahl
von Projekte
pro Kurs";
#elif L==3 // en
@@ -2917,7 +2986,7 @@ const char *Txt_Average_number_BR_of_projects_BR_per_course =
const char *Txt_Average_number_BR_of_questions_BR_per_survey =
#if L==1 // ca
- "Nombre mitj´
de preguntes
per enquesta";
+ "Nombre mitjà
de preguntes
per enquesta";
#elif L==2 // de
"Durchschnittliche Anzahl
von Fragen
pro Umfrage";
#elif L==3 // en
@@ -2938,9 +3007,55 @@ const char *Txt_Average_number_BR_of_questions_BR_per_survey =
"Average number
of questions
per survey"; // Çeviri lazim!
#endif
+const char *Txt_Average_number_BR_of_rubrics_BR_per_course =
+#if L==1 // ca
+ "Nombre mitjà
de rúbriques
per assignatura";
+#elif L==2 // de
+ "Durchschnittliche Anzahl
von Rubriken
pro Kurs";
+#elif L==3 // en
+ "Average number
of rubrics
per course";
+#elif L==4 // es
+ "N.º medio
de rúbricas
por asignatura";
+#elif L==5 // fr
+ "Nombre moyen
de rubriques
par matière";
+#elif L==6 // gn
+ "N.º medio
de rúbricas
por asignatura"; // Okoteve traducción
+#elif L==7 // it
+ "Numero medio
di rubriche
per corso";
+#elif L==8 // pl
+ "Średnia liczba
badania
na kurs";
+#elif L==9 // pt
+ "N.º medio
de rubricas
por disciplina";
+#elif L==10 // tr
+ "Kurs başına
ortalama değerlendirme listesi
sayısı";
+#endif
+
+const char *Txt_Average_number_BR_of_surveys_BR_per_course =
+#if L==1 // ca
+ "Nombre mitjà
d'enquestes
per assignatura";
+#elif L==2 // de
+ "Durchschnittliche Anzahl
von Umfragen
pro Kurs";
+#elif L==3 // en
+ "Average number
of surveys
per course";
+#elif L==4 // es
+ "N.º medio
de encuestas
por asignatura";
+#elif L==5 // fr
+ "Nombre moyen
de sondages
par matière";
+#elif L==6 // gn
+ "N.º medio
de encuestas
por asignatura"; // Okoteve traducción
+#elif L==7 // it
+ "Numero medio
di sondaggi
per corso";
+#elif L==8 // pl
+ "Średnia liczba
badania
na kurs";
+#elif L==9 // pt
+ "N.º medio
de inquéritos
por disciplina";
+#elif L==10 // tr
+ "Kurs başına
ortalama anket
sayısı";
+#endif
+
const char *Txt_Average_BR_number_BR_of_test_BR_questions_BR_per_course =
#if L==1 // ca
- "Nombre mitj´
de preguntes
de test per
assignatura";
+ "Nombre mitjà
de preguntes
de test per
assignatura";
#elif L==2 // de
"Durchschnittliche Anzahl
von Testfragen
pro Kurs";
#elif L==3 // en
@@ -2961,52 +3076,6 @@ const char *Txt_Average_BR_number_BR_of_test_BR_questions_BR_per_course =
"Average
number
of test
questions
per course"; // Çeviri lazim!
#endif
-const char *Txt_Average_number_BR_of_surveys_BR_per_course =
-#if L==1 // ca
- "Nombre mitj´
d'enquestes
per assignatura";
-#elif L==2 // de
- "Durchschnittliche Anzahl
von Umfragen
pro Kurs";
-#elif L==3 // en
- "Average number
of surveys
per course";
-#elif L==4 // es
- "N.º medio
de encuestas
por asignatura";
-#elif L==5 // fr
- "Nombre moyen
de sondages
par matière";
-#elif L==6 // gn
- "N.º medio
de encuestas
por asignatura"; // Okoteve traducción
-#elif L==7 // it
- "Numero medio
di sondaggi
per corso";
-#elif L==8 // pl
- "Średnia liczba
badania
na kurs";
-#elif L==9 // pt
- "N.º medio
de inquéritos
por disciplina";
-#elif L==10 // tr
- "Average number
of surveys
per course"; // Çeviri lazim!
-#endif
-
-const char *Txt_Average_number_of_courses_to_which_a_user_belongs =
-#if L==1 // ca
- "Nombre mitjá d'assignatures a las quals pertany cada usuari";
-#elif L==2 // de
- "Durchschnittliche Anzahl von Kursen, an denen der Benutzer teilnimmt";
-#elif L==3 // en
- "Average number of courses to which a user belongs";
-#elif L==4 // es
- "N.º medio de asignaturas a las que pertenece cada usuario";
-#elif L==5 // fr
- "Nombre moyen de matières à qui appartient un utilisateur";
-#elif L==6 // gn
- "N.º medio de asignaturas a las que pertenece cada usuario"; // Okoteve traducción
-#elif L==7 // it
- "Numero medio di corsi a cui appartiene un utente";
-#elif L==8 // pl
- "Średnia liczba kursów do której nalezy uzytkownik";
-#elif L==9 // pt
- "N.º medio de disciplinas em que cada utilizador pertence";
-#elif L==10 // tr
- "Average number of courses to which a user belongs"; // Çeviri lazim!
-#endif
-
const char *Txt_Average_BR_number_of_BR_times_that_BR_a_question_BR_has_been_BR_responded =
#if L==1 // ca
"Mitjà de
vegades
que s'ha
respost
cada pregunta";
@@ -7190,6 +7259,29 @@ const char *Txt_Create_room =
"Create room"; // Çeviri lazim!
#endif
+const char *Txt_Create_rubric =
+#if L==1 // ca
+ "Crear rúbrica";
+#elif L==2 // de
+ "Rubrik erstellen";
+#elif L==3 // en
+ "Create rubric";
+#elif L==4 // es
+ "Crear rúbrica";
+#elif L==5 // fr
+ "Créer rubrique";
+#elif L==6 // gn
+ "Crear rúbrica"; // Okoteve traducción
+#elif L==7 // it
+ "Crea rubrica";
+#elif L==8 // pl
+ "Utwórz rubrykę";
+#elif L==9 // pt
+ "Criar rubrica";
+#elif L==10 // tr
+ "Değerlendirme listesi oluşturun";
+#endif
+
const char *Txt_Create_set_of_questions =
#if L==1 // ca
"Crear conjunt de preguntes";
@@ -7972,6 +8064,75 @@ const char *Txt_Creating_database_tables_if_they_do_not_exist =
"Creating database tables if they do not exist…"; // Çeviri lazim!
#endif
+const char *Txt_Criteria =
+#if L==1 // ca
+ "Criteris";
+#elif L==2 // de
+ "Kriterien";
+#elif L==3 // en
+ "Criteria";
+#elif L==4 // es
+ "Criterios";
+#elif L==5 // fr
+ "Critères";
+#elif L==6 // gn
+ "Criterios"; // Okoteve traducción
+#elif L==7 // it
+ "Criteri";
+#elif L==8 // pl
+ "Kryteria";
+#elif L==9 // pt
+ "Critérios";
+#elif L==10 // tr
+ "Kriterler";
+#endif
+
+const char *Txt_Criterion =
+#if L==1 // ca
+ "Criteri";
+#elif L==2 // de
+ "Kriterium";
+#elif L==3 // en
+ "Criterion";
+#elif L==4 // es
+ "Criterio";
+#elif L==5 // fr
+ "Critère";
+#elif L==6 // gn
+ "Criterio"; // Okoteve traducción
+#elif L==7 // it
+ "Criterio";
+#elif L==8 // pl
+ "Kryterium";
+#elif L==9 // pt
+ "Critério";
+#elif L==10 // tr
+ "Kriter";
+#endif
+
+const char *Txt_Criterion_removed =
+#if L==1 // ca
+ "Criteri eliminat.";
+#elif L==2 // de
+ "Kriterium entfernt.";
+#elif L==3 // en
+ "Criterion removed.";
+#elif L==4 // es
+ "Criterio eliminado.";
+#elif L==5 // fr
+ "Critère supprimé.";
+#elif L==6 // gn
+ "Criterio eliminado."; // Okoteve traducción
+#elif L==7 // it
+ "Criterio rimosso.";
+#elif L==8 // pl
+ "Usunięto kryterium.";
+#elif L==9 // pt
+ "Critério removido.";
+#elif L==10 // tr
+ "Kriter kaldırıldı.";
+#endif
+
const char *Txt_Current_email =
#if L==1 // ca
"Correu actual";
@@ -11544,7 +11705,7 @@ const char *Txt_Edit_game =
#elif L==9 // pt
"Editar jogo";
#elif L==10 // tr
- "Edit game"; // Çeviri lazim!
+ "Oyunu düzenle";
#endif
const char *Txt_Edit_item =
@@ -11639,6 +11800,29 @@ const char *Txt_Edit_record_fields =
"Edit record fields"; // Çeviri lazim!
#endif
+const char *Txt_Edit_rubric =
+#if L==1 // ca
+ "Editar rúbrica";
+#elif L==2 // de
+ "Rubrik bearbeiten";
+#elif L==3 // en
+ "Edit rubric";
+#elif L==4 // es
+ "Editar rúbrica";
+#elif L==5 // fr
+ "Éditer rubrique";
+#elif L==6 // gn
+ "Editar rúbrica"; // Okoteve traducción
+#elif L==7 // it
+ "Editare rubrica";
+#elif L==8 // pl
+ "Edycja rubryka";
+#elif L==9 // pt
+ "Editar rubrica";
+#elif L==10 // tr
+ "Puan anahtarını düzenle";
+#endif
+
const char *Txt_Edit_set_of_questions =
#if L==1 // ca
"Editar conjunt de preguntes";
@@ -24485,7 +24669,7 @@ const char *Txt_My_agenda =
#elif L==9 // pt
"Minha agenda";
#elif L==10 // tr
- "My agenda"; // Çeviri lazim!
+ "Gündemim";
#endif
const char *Txt_My_courses =
@@ -24508,7 +24692,7 @@ const char *Txt_My_courses =
#elif L==9 // pt
"As minha disciplinas";
#elif L==10 // tr
- "My courses"; // Çeviri lazim!
+ "Kurslarım";
#endif
const char *Txt_my_documents =
@@ -24531,7 +24715,7 @@ const char *Txt_my_documents =
#elif L==9 // pt
"meus documentos";
#elif L==10 // tr
- "my documents"; // Çeviri lazim!
+ "benim dökümanlarım";
#endif
const char *Txt_My_frequent_actions =
@@ -24554,7 +24738,7 @@ const char *Txt_My_frequent_actions =
#elif L==9 // pt
"Minhas ações freqüentes";
#elif L==10 // tr
- "My frequent actions"; // Çeviri lazim!
+ "Sık yaptığım eylemler";
#endif
const char *Txt_My_groups =
@@ -24577,7 +24761,7 @@ const char *Txt_My_groups =
#elif L==9 // pt
"Meus grupos";
#elif L==10 // tr
- "My groups"; // Çeviri lazim!
+ "Gruplarım";
#endif
const char *Txt_My_public_profile =
@@ -24600,7 +24784,7 @@ const char *Txt_My_public_profile =
#elif L==9 // pt
"Meu perfil público";
#elif L==10 // tr
- "My public profile"; // Çeviri lazim!
+ "Herkese açık profilim";
#endif
const char *Txt_My_views =
@@ -24623,7 +24807,7 @@ const char *Txt_My_views =
#elif L==9 // pt
"Meus acessos";
#elif L==10 // tr
- "My views"; // Çeviri lazim!
+ "Görüşlerim";
#endif
const char *Txt_Name =
@@ -24646,7 +24830,7 @@ const char *Txt_Name =
#elif L==9 // pt
"Nome";
#elif L==10 // tr
- "Name"; // Çeviri lazim!
+ "İsim";
#endif
const char *Txt_New_assignment =
@@ -24669,7 +24853,7 @@ const char *Txt_New_assignment =
#elif L==9 // pt
"Nova atividade";
#elif L==10 // tr
- "New assignment"; // Çeviri lazim!
+ "Yeni görev";
#endif
const char *Txt_New_announcement =
@@ -24692,7 +24876,7 @@ const char *Txt_New_announcement =
#elif L==9 // pt
"Novo anúncio";
#elif L==10 // tr
- "New announcement"; // Çeviri lazim!
+ "Yeni duyuru";
#endif
const char *Txt_New_call_FOR_EXAM =
@@ -24715,7 +24899,7 @@ const char *Txt_New_call_FOR_EXAM =
#elif L==9 // pt
"Nova chamada";
#elif L==10 // tr
- "New call"; // Çeviri lazim!
+ "Yeni çağrı";
#endif
const char *Txt_New_banner =
@@ -24738,7 +24922,7 @@ const char *Txt_New_banner =
#elif L==9 // pt
"Novo banner";
#elif L==10 // tr
- "New banner"; // Çeviri lazim!
+ "Yeni afiş";
#endif
const char *Txt_New_building =
@@ -24761,30 +24945,40 @@ const char *Txt_New_building =
#elif L==9 // pt
"Novo edifício";
#elif L==10 // tr
- "New building"; // Çeviri lazim!
+ "Yeni bina";
#endif
const char *Txt_New_center =
#if L==1 // ca
- "Nou center (facultat, escola, institut, divisió, edifici...)";
+ "Nou center"
+ " (facultat, escola, institut, divisió, edifici...)";
#elif L==2 // de
- "Neues Lehrinstitut (Fakultät, Schule, Hochschule, Abteilung, Gebäude...)";
+ "Neues Lehrinstitut"
+ " (Fakultät, Schule, Hochschule, Abteilung, Gebäude...)";
#elif L==3 // en
- "New center (faculty, school, college, division, building...)";
+ "New center"
+ " (faculty, school, college, division, building...)";
#elif L==4 // es
- "Nuevo centro (facultad, escuela, instituto, división, edificio...)";
+ "Nuevo centro"
+ " (facultad, escuela, instituto, división, edificio...)";
#elif L==5 // fr
- "Nouveau center (faculté, école, université, division, bâtiment...)";
+ "Nouveau center"
+ " (faculté, école, université, division, bâtiment...)";
#elif L==6 // gn
- "Nuevo centro (facultad, escuela, instituto, división, edificio...)"; // Okoteve traducción
+ "Nuevo centro"
+ " (facultad, escuela, instituto, división, edificio...)"; // Okoteve traducción
#elif L==7 // it
- "Nuovo centro (facoltà, scuola, istituto, divisione, costruzione...)";
+ "Nuovo centro"
+ " (facoltà, scuola, istituto, divisione, costruzione...)";
#elif L==8 // pl
- "Nowe centrum (wydział, szkoła, uczelnia, podział, budowa...)";
+ "Nowe centrum"
+ " (wydział, szkoła, uczelnia, podział, budowa...)";
#elif L==9 // pt
- "Novo centro (faculdade, escola, faculdade, divisão, construção...)";
+ "Novo centro"
+ " (faculdade, escola, faculdade, divisão, construção...)";
#elif L==10 // tr
- "New center (faculty, school, college, division, building...)"; // Çeviri lazim!
+ "Yeni merkez"
+ " (fakülte, okul, kolej, bölüm, bina...)";
#endif
const char *Txt_New_country =
@@ -24807,53 +25001,73 @@ const char *Txt_New_country =
#elif L==9 // pt
"Novo país";
#elif L==10 // tr
- "New country"; // Çeviri lazim!
+ "Yeni ülke";
#endif
const char *Txt_New_course =
#if L==1 // ca
- "Nova assignatura (assignatura, curs, matèria, disciplina...)";
+ "Nova assignatura"
+ " (assignatura, curs, matèria, disciplina...)";
#elif L==2 // de
- "Neue Kurs (Kurs, Thema, Disziplin...)";
+ "Neue Kurs"
+ " (Kurs, Thema, Disziplin...)";
#elif L==3 // en
- "New course (course, subject, discipline...)";
+ "New course"
+ " (course, subject, discipline...)";
#elif L==4 // es
- "Nueva asignatura (asignatura, curso, materia, disciplina...)";
+ "Nueva asignatura"
+ " (asignatura, curso, materia, disciplina...)";
#elif L==5 // fr
- "Nouvelle matière (matière, cours, discipline...)";
+ "Nouvelle matière"
+ " (matière, cours, discipline...)";
#elif L==6 // gn
- "Nueva asignatura (asignatura, curso, materia, disciplina...)"; // Okoteve traducción
+ "Nueva asignatura"
+ " (asignatura, curso, materia, disciplina...)"; // Okoteve traducción
#elif L==7 // it
- "Nuovo corso (corso, materia...)";
+ "Nuovo corso"
+ " (corso, materia...)";
#elif L==8 // pl
- "Nowy kurs";
+ "Nowy kurs"
+ " (kurs, przedmiot, dyscyplina...)";
#elif L==9 // pt
- "Nova disciplina (disciplina, curso...)";
+ "Nova disciplina"
+ " (disciplina, curso...)";
#elif L==10 // tr
- "New course (course, subject, discipline...)"; // Çeviri lazim!
+ "Yeni kurs"
+ " (ders, konu, disiplin...)";
#endif
const char *Txt_New_degree =
#if L==1 // ca
- "Nova titulació (carrera, llicenciatura, diplomatura, grau, postgrau, màster, cicle, nivell...)";
+ "Nova titulació"
+ " (carrera, llicenciatura, diplomatura, grau, postgrau, màster, cicle, nivell...)";
#elif L==2 // de
- "Neuer Studiengang (Karriere, Diplom, Grad, Graduierten, Master, Zyklus, Niveau...)";
+ "Neuer Studiengang"
+ " (Karriere, Diplom, Grad, Graduierten, Master, Zyklus, Niveau...)";
#elif L==3 // en
- "New degree (career, diploma, degree, postgraduate, master, cycle, level...)";
+ "New degree"
+ " (career, diploma, degree, postgraduate, master, cycle, level...)";
#elif L==4 // es
- "Nueva titulación (carrera, licenciatura, diplomatura, grado, posgrado, máster, ciclo, nivel...)";
+ "Nueva titulación"
+ " (carrera, licenciatura, diplomatura, grado, posgrado, máster, ciclo, nivel...)";
#elif L==5 // fr
- "Nouvel étude (carrière, grade, diplôme, degré, troisiàme cycle, master, cycle, niveau...)";
+ "Nouvel étude"
+ " (carrière, grade, diplôme, degré, troisiàme cycle, master, cycle, niveau...)";
#elif L==6 // gn
- "Nueva titulación (carrera, licenciatura, diplomatura, grado, posgrado, máster, ciclo, nivel...)"; // Okoteve traducción
+ "Nueva titulación"
+ " (carrera, licenciatura, diplomatura, grado, posgrado, máster, ciclo, nivel...)"; // Okoteve traducción
#elif L==7 // it
- "Nuova laurea (carriera, diploma, laurea, post-laurea, master, ciclo, livello...)";
+ "Nuova laurea"
+ " (carriera, diploma, laurea, post-laurea, master, ciclo, livello...)";
#elif L==8 // pl
- "Nowy stopień (zawodowe, stopień, dyplom, magisterskie, podyplomowe, magisterskie, cykl, poziom...)";
+ "Nowy stopień"
+ " (zawodowe, stopień, dyplom, magisterskie, podyplomowe, magisterskie, cykl, poziom...)";
#elif L==9 // pt
- "Novo grau (carreira, diploma, grau, pós-grau, mestrado, ciclo, nível...)";
+ "Novo grau"
+ " (carreira, diploma, grau, pós-grau, mestrado, ciclo, nível...)";
#elif L==10 // tr
- "New degree (career, diploma, degree, postgraduate, master, cycle, level...)"; // Çeviri lazim!
+ "Yeni derece"
+ " (kariyer, diploma, derece, lisansüstü, yüksek lisans, döngü, seviye...)";
#endif
const char *Txt_New_department =
@@ -24876,7 +25090,7 @@ const char *Txt_New_department =
#elif L==9 // pt
"Novo departamento";
#elif L==10 // tr
- "New department"; // Çeviri lazim!
+ "Yeni departman";
#endif
const char *Txt_New_email =
@@ -24899,7 +25113,7 @@ const char *Txt_New_email =
#elif L==9 // pt
"Novo email";
#elif L==10 // tr
- "New email"; // Çeviri lazim!
+ "Yeni e-posta";
#endif
const char *Txt_New_email_domain =
@@ -24922,7 +25136,7 @@ const char *Txt_New_email_domain =
#elif L==9 // pt
"Novo domínio de email";
#elif L==10 // tr
- "New email domain"; // Çeviri lazim!
+ "Yeni e-posta alanı";
#endif
const char *Txt_New_event =
@@ -24945,7 +25159,7 @@ const char *Txt_New_event =
#elif L==9 // pt
"Novo evento";
#elif L==10 // tr
- "New event"; // Çeviri lazim!
+ "Yeni etkinlik";
#endif
const char *Txt_New_exam =
@@ -24968,7 +25182,7 @@ const char *Txt_New_exam =
#elif L==9 // pt
"Novo exame";
#elif L==10 // tr
- "New exam"; // Çeviri lazim!
+ "Yeni sınav";
#endif
const char *Txt_New_FILE_OR_FOLDER =
@@ -24991,7 +25205,7 @@ const char *Txt_New_FILE_OR_FOLDER =
#elif L==9 // pt
"Novo";
#elif L==10 // tr
- "New"; // Çeviri lazim!
+ "Yeni";
#endif
const char *Txt_New_game =
@@ -25014,7 +25228,7 @@ const char *Txt_New_game =
#elif L==9 // pt
"Novo jogo";
#elif L==10 // tr
- "New game"; // Çeviri lazim!
+ "Yeni oyun";
#endif
const char *Txt_New_group =
@@ -25037,7 +25251,7 @@ const char *Txt_New_group =
#elif L==9 // pt
"Novo grupo";
#elif L==10 // tr
- "New group"; // Çeviri lazim!
+ "Yeni grup";
#endif
const char *Txt_New_holiday =
@@ -25060,30 +25274,40 @@ const char *Txt_New_holiday =
#elif L==9 // pt
"Nova féria";
#elif L==10 // tr
- "New holiday"; // Çeviri lazim!
+ "Yeni tatil";
#endif
const char *Txt_New_institution =
#if L==1 // ca
- "Nova institución (universitat, institut, escola, acadèmia, organització, empresa...)";
+ "Nova institución"
+ " (universitat, institut, escola, acadèmia, organització, empresa...)";
#elif L==2 // de
- "Neue Hochschule (Universität, Hochschule, Schule, Hochschule, Organisation, Unternehmen...)";
+ "Neue Hochschule"
+ " (Universität, Hochschule, Schule, Hochschule, Organisation, Unternehmen...)";
#elif L==3 // en
- "New institution (university, college, school, academy, organization, company...)";
+ "New institution"
+ " (university, college, school, academy, organization, company...)";
#elif L==4 // es
- "Nueva institución (universidad, instituto, colegio, academia, organización, empresa...)";
+ "Nueva institución"
+ " (universidad, instituto, colegio, academia, organización, empresa...)";
#elif L==5 // fr
- "Nouvel établissement (université, collège, école, académie, organisation, entreprise...)";
+ "Nouvel établissement"
+ " (université, collège, école, académie, organisation, entreprise...)";
#elif L==6 // gn
- "Nueva institución (universidad, instituto, mbo'ehao, academia, organización, empresa...)"; // Okoteve traducción
+ "Nueva institución"
+ " (universidad, instituto, mbo'ehao, academia, organización, empresa...)"; // Okoteve traducción
#elif L==7 // it
- "Nuova istituzione (università, istituto, scuola, accademia, organizzazione, società...)";
+ "Nuova istituzione"
+ " (università, istituto, scuola, accademia, organizzazione, società...)";
#elif L==8 // pl
- "Nowa instytucja (uniwersytet, uczelnia, szkoła, akademia, organizacja, firma...)";
+ "Nowa instytucja"
+ " (uniwersytet, uczelnia, szkoła, akademia, organizacja, firma...)";
#elif L==9 // pt
- "Nova institução (universidade, faculdade, escola, academia, organização, empresa...)";
+ "Nova institução"
+ " (universidade, faculdade, escola, academia, organização, empresa...)";
#elif L==10 // tr
- "New institution (university, college, school, academy, organization, company...)"; // Çeviri lazim!
+ "Yeni kurum"
+ " (üniversite, kolej, okul, akademi, organizasyon, şirket...)";
#endif
const char *Txt_New_item =
@@ -25106,7 +25330,7 @@ const char *Txt_New_item =
#elif L==9 // pt
"Novo item";
#elif L==10 // tr
- "New item"; // Çeviri lazim!
+ "Yeni öğe";
#endif
const char *Txt_New_link =
@@ -25129,7 +25353,7 @@ const char *Txt_New_link =
#elif L==9 // pt
"Nova ligação";
#elif L==10 // tr
- "New link"; // Çeviri lazim!
+ "Yeni bağlantı";
#endif
const char *Txt_New_match = // of a game
@@ -25152,7 +25376,7 @@ const char *Txt_New_match = // of a game
#elif L==9 // pt
"Novo jogo";
#elif L==10 // tr
- "New match"; // Çeviri lazim!
+ "Yeni maç";
#endif
const char *Txt_New_message =
@@ -25175,7 +25399,7 @@ const char *Txt_New_message =
#elif L==9 // pt
"Nova mensagem";
#elif L==10 // tr
- "New message"; // Çeviri lazim!
+ "Yeni mesaj";
#endif
const char *Txt_New_nickname =
@@ -25198,7 +25422,7 @@ const char *Txt_New_nickname =
#elif L==9 // pt
"Nova alcunha";
#elif L==10 // tr
- "New nickname"; // Çeviri lazim!
+ "Yeni takma ad";
#endif
const char *Txt_New_notice =
@@ -25221,7 +25445,7 @@ const char *Txt_New_notice =
#elif L==9 // pt
"Novo aviso";
#elif L==10 // tr
- "New notice"; // Çeviri lazim!
+ "Yeni bildirim";
#endif
const char *Txt_New_on_PLATFORM_Sign_up = // Warning: it is very important to include %s in the following sentences
@@ -25290,7 +25514,7 @@ const char *Txt_New_place =
#elif L==9 // pt
"Nova localização";
#elif L==10 // tr
- "New place"; // Çeviri lazim!
+ "Yeni yer";
#endif
const char *Txt_New_plugin =
@@ -25313,7 +25537,7 @@ const char *Txt_New_plugin =
#elif L==9 // pt
"Novo plugin";
#elif L==10 // tr
- "New plugin"; // Çeviri lazim!
+ "Yeni eklenti";
#endif
const char *Txt_New_post =
@@ -25336,7 +25560,7 @@ const char *Txt_New_post =
#elif L==9 // pt
"Novo post";
#elif L==10 // tr
- "New post"; // Çeviri lazim!
+ "Yeni posta";
#endif
const char *Txt_New_project =
@@ -25359,7 +25583,7 @@ const char *Txt_New_project =
#elif L==9 // pt
"Novo projeto";
#elif L==10 // tr
- "New project"; // Çeviri lazim!
+ "Yeni proje";
#endif
const char *Txt_New_question =
@@ -25382,7 +25606,7 @@ const char *Txt_New_question =
#elif L==9 // pt
"Nova pergunta";
#elif L==10 // tr
- "New question"; // Çeviri lazim!
+ "Yeni soru";
#endif
const char *Txt_New_record_field =
@@ -25405,7 +25629,7 @@ const char *Txt_New_record_field =
#elif L==9 // pt
"Novo campo de cartão";
#elif L==10 // tr
- "New record field"; // Çeviri lazim!
+ "Yeni kayıt alanı";
#endif
const char *Txt_New_resource =
@@ -25451,7 +25675,30 @@ const char *Txt_New_room =
#elif L==9 // pt
"Nova sala";
#elif L==10 // tr
- "New room"; // Çeviri lazim!
+ "Yeni oda";
+#endif
+
+const char *Txt_New_rubric =
+#if L==1 // ca
+ "Nova rúbrica";
+#elif L==2 // de
+ "Neue Rubrik";
+#elif L==3 // en
+ "New rubric";
+#elif L==4 // es
+ "Nueva rúbrica";
+#elif L==5 // fr
+ "Nouvelle rubrique";
+#elif L==6 // gn
+ "Nueva rúbrica"; // Okoteve traducción
+#elif L==7 // it
+ "Nuova rubrica";
+#elif L==8 // pl
+ "Nowa rubryka";
+#elif L==9 // pt
+ "Nova rubrica";
+#elif L==10 // tr
+ "Yeni değerlendirme listesi";
#endif
const char *Txt_New_session =
@@ -25474,7 +25721,7 @@ const char *Txt_New_session =
#elif L==9 // pt
"Nova sessão";
#elif L==10 // tr
- "New session"; // Çeviri lazim!
+ "Yeni sezon";
#endif
const char *Txt_New_set_of_questions =
@@ -25497,7 +25744,7 @@ const char *Txt_New_set_of_questions =
#elif L==9 // pt
"Novo conjunto de perguntas";
#elif L==10 // tr
- "New set of questions"; // Çeviri lazim!
+ "Yeni soru grubu";
#endif
const char *Txt_New_TIMELINE_comment =
@@ -25520,7 +25767,7 @@ const char *Txt_New_TIMELINE_comment =
#elif L==9 // pt
"Novo comentário";
#elif L==10 // tr
- "New comment"; // Çeviri lazim!
+ "Yeni yorum";
#endif
const char *Txt_New_TIMELINE_post =
@@ -25543,7 +25790,7 @@ const char *Txt_New_TIMELINE_post =
#elif L==9 // pt
"Novo post";
#elif L==10 // tr
- "New post"; // Çeviri lazim!
+ "Yeni posta";
#endif
const char *Txt_New_survey =
@@ -25566,7 +25813,7 @@ const char *Txt_New_survey =
#elif L==9 // pt
"Novo inquérito";
#elif L==10 // tr
- "New survey"; // Çeviri lazim!
+ "Yeni anket";
#endif
const char *Txt_new_tag = // Tag used in test
@@ -25589,7 +25836,7 @@ const char *Txt_new_tag = // Tag used in test
#elif L==9 // pt
"novo descritor";
#elif L==10 // tr
- "new tag"; // Çeviri lazim!
+ "yeni etiket";
#endif
const char *Txt_New_thread =
@@ -25612,7 +25859,7 @@ const char *Txt_New_thread =
#elif L==9 // pt
"Nova discussão";
#elif L==10 // tr
- "New thread"; // Çeviri lazim!
+ "Yeni konu";
#endif
const char *Txt_New_type_of_degree =
@@ -25635,7 +25882,7 @@ const char *Txt_New_type_of_degree =
#elif L==9 // pt
"Novo tipo de grau";
#elif L==10 // tr
- "New type of degree"; // Çeviri lazim!
+ "Yeni derece türü";
#endif
const char *Txt_New_type_of_group =
@@ -25658,7 +25905,7 @@ const char *Txt_New_type_of_group =
#elif L==9 // pt
"Novo tipo de grupo";
#elif L==10 // tr
- "New type of group"; // Çeviri lazim!
+ "Yeni grup türü";
#endif
const char *Txt_NEW_YEAR_GREETING = // Warning: it is very important to include %u in the following sentences
@@ -26542,6 +26789,29 @@ const char *Txt_No_results =
"No results."; // Çeviri lazim!
#endif
+const char *Txt_No_rubrics =
+#if L==1 // ca
+ "No hi ha rúbriques.";
+#elif L==2 // de
+ "Keine Rubriken.";
+#elif L==3 // en
+ "No rubrics.";
+#elif L==4 // es
+ "No hay rúbricas.";
+#elif L==5 // fr
+ "Pas de rubriques.";
+#elif L==6 // gn
+ "No hay rúbricas."; // Okoteve traducción
+#elif L==7 // it
+ "Non ci sono rubriche.";
+#elif L==8 // pl
+ "Brak rubryk.";
+#elif L==9 // pt
+ "Não há rubricas.";
+#elif L==10 // tr
+ "Puan anahtarı yok.";
+#endif
+
const char *Txt_no_subject =
#if L==1 // ca
"sense assumpte";
@@ -27971,29 +28241,6 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] =
"Novas mensagens"
#elif L==10 // tr
"New messages" // Çeviri lazim!
-#endif
- ,
- [Ntf_EVENT_SURVEY] =
-#if L==1 // ca
- "Noves enquestes"
-#elif L==2 // de
- "Neue Umfragen"
-#elif L==3 // en
- "New surveys"
-#elif L==4 // es
- "Nuevas encuestas"
-#elif L==5 // fr
- "Nouveaux sondages"
-#elif L==6 // gn
- "Nuevas encuestas" // Okoteve traducción
-#elif L==7 // it
- "Nuove sondaggi"
-#elif L==8 // pl
- "Nowe badania"
-#elif L==9 // pt
- "Novos inquéritos"
-#elif L==10 // tr
- "New surveys" // Çeviri lazim!
#endif
,
[Ntf_EVENT_ENROLMENT_NET] = // TODO: Move to users tab (also necessary in database) !!!!!!!!!
@@ -28017,6 +28264,29 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] =
"Novas inscrições como professor/a não editor/a"
#elif L==10 // tr
"New enrolments as a non-editing teacher" // Çeviri lazim!
+#endif
+ ,
+ [Ntf_EVENT_SURVEY] =
+#if L==1 // ca
+ "Noves enquestes"
+#elif L==2 // de
+ "Neue Umfragen"
+#elif L==3 // en
+ "New surveys"
+#elif L==4 // es
+ "Nuevas encuestas"
+#elif L==5 // fr
+ "Nouveaux sondages"
+#elif L==6 // gn
+ "Nuevas encuestas" // Okoteve traducción
+#elif L==7 // it
+ "Nuove sondaggi"
+#elif L==8 // pl
+ "Nowe badania"
+#elif L==9 // pt
+ "Novos inquéritos"
+#elif L==10 // tr
+ "New surveys" // Çeviri lazim!
#endif
};
@@ -28575,6 +28845,29 @@ const char *Txt_Now_each_student_can_only_belong_to_a_group_of_type_X = // Warni
"Now each student can only belong to a group of type %s."; // Çeviri lazim!
#endif
+const char *Txt_Number_of_criteria =
+#if L==1 // ca
+ "Nombre de criteris";
+#elif L==2 // de
+ "Anzahl der Kriterien";
+#elif L==3 // en
+ "Number of criteria";
+#elif L==4 // es
+ "N.º de criterios";
+#elif L==5 // fr
+ "Nombre de critères";
+#elif L==6 // gn
+ "N.º de criterios"; // Okoteve traducción
+#elif L==7 // it
+ "Numero di criteri";
+#elif L==8 // pl
+ "Liczba kryteriów";
+#elif L==9 // pt
+ "N.º de critérios";
+#elif L==10 // tr
+ "Kriter sayısı";
+#endif
+
const char *Txt_Number_of_files =
#if L==1 // ca
"Nombre d'arxius";
@@ -29055,7 +29348,7 @@ const char *Txt_Number_of_BR_assignments =
#elif L==9 // pt
"N.º de
atividades";
#elif L==10 // tr
- "Number of
assignments"; // Çeviri lazim!
+ "Ödev
sayısı";
#endif
const char *Txt_Number_of_BR_courses_with_BR_assignments =
@@ -29078,7 +29371,7 @@ const char *Txt_Number_of_BR_courses_with_BR_assignments =
#elif L==9 // pt
"N.º de
disciplinas
com atividades";
#elif L==10 // tr
- "Number of
courses with
assignments"; // Çeviri lazim!
+ "Ödev verilen
ders
sayısı";
#endif
const char *Txt_Number_of_BR_courses_with_BR_exams =
@@ -29101,7 +29394,7 @@ const char *Txt_Number_of_BR_courses_with_BR_exams =
#elif L==9 // pt
"N.º de
disciplinas
com exames";
#elif L==10 // tr
- "Number of
courses with
exams"; // Çeviri lazim!
+ "Sınavlı
ders
sayısı";
#endif
const char *Txt_Number_of_BR_courses_with_BR_exportable_BR_test_BR_questions =
@@ -29124,7 +29417,7 @@ const char *Txt_Number_of_BR_courses_with_BR_exportable_BR_test_BR_questions =
#elif L==9 // pt
"N.º de
disciplinas
com
perguntas
de test
exportáveis";
#elif L==10 // tr
- "Number of
courses with
exportable
test
questions"; // Çeviri lazim!
+ "Dışa
aktarılabilir
test
sorularına
sahip
kurs";
#endif
const char *Txt_Number_of_BR_courses_with_BR_games =
@@ -29147,7 +29440,7 @@ const char *Txt_Number_of_BR_courses_with_BR_games =
#elif L==9 // pt
"N.º de
disciplinas
com jogos";
#elif L==10 // tr
- "Number of
courses with
games"; // Çeviri lazim!
+ "Oyunlu
ders
sayısı";
#endif
const char *Txt_Number_of_BR_courses_with_BR_program_items =
@@ -29170,7 +29463,7 @@ const char *Txt_Number_of_BR_courses_with_BR_program_items =
#elif L==9 // pt
"N.º de
disciplinas com
itens de programas";
#elif L==10 // tr
- "Number of
courses with
program items"; // Çeviri lazim!
+ "Program öğelerini içeren
ders
sayısı";
#endif
const char *Txt_Number_of_BR_courses_with_BR_projects =
@@ -29193,7 +29486,7 @@ const char *Txt_Number_of_BR_courses_with_BR_projects =
#elif L==9 // pt
"N.º de
disciplinas
com projetos";
#elif L==10 // tr
- "Number of
courses with
projects"; // Çeviri lazim!
+ "Projeli
ders
sayısı";
#endif
const char *Txt_Number_of_BR_courses_BR_with_test_BR_questions =
@@ -29216,7 +29509,30 @@ const char *Txt_Number_of_BR_courses_BR_with_test_BR_questions =
#elif L==9 // pt
"N.º de
disciplinas
com
perguntas
de test";
#elif L==10 // tr
- "Number of
courses
with test
questions"; // Çeviri lazim!
+ "Sorulu
ders
sayısı";
+#endif
+
+const char *Txt_Number_of_BR_courses_with_BR_rubrics =
+#if L==1 // ca
+ "Nombre
d'assignatures
amb rúbriques";
+#elif L==2 // de
+ "Anzahl der
Kursen
mit Rubriken";
+#elif L==3 // en
+ "Number of
courses with
rubrics";
+#elif L==4 // es
+ "N.º de
asignaturas
con rúbricas";
+#elif L==5 // fr
+ "Nombre de
matières
avec rubriques";
+#elif L==6 // gn
+ "N.º de
asignaturas
con rúbricas"; // Okoteve traducción
+#elif L==7 // it
+ "Numero di
corsi con
rubriche";
+#elif L==8 // pl
+ "Liczba
kursów z
rubryk";
+#elif L==9 // pt
+ "N.º de
disciplinas
com rubricas";
+#elif L==10 // tr
+ "Rubrikli
ders
sayısı";
#endif
const char *Txt_Number_of_BR_courses_with_BR_surveys =
@@ -29239,7 +29555,7 @@ const char *Txt_Number_of_BR_courses_with_BR_surveys =
#elif L==9 // pt
"N.º de
disciplinas
com inquéritos";
#elif L==10 // tr
- "Number of
courses with
surveys"; // Çeviri lazim!
+ "Anketli
ders
sayısı";
#endif
const char *Txt_Number_of_events =
@@ -29403,6 +29719,29 @@ const char *Txt_Number_of_BR_projects =
"Number of
projects"; // Çeviri lazim!
#endif
+const char *Txt_Number_of_BR_rubrics =
+#if L==1 // ca
+ "Nombre de
rúbriques";
+#elif L==2 // de
+ "Anzahl der
Rubriken";
+#elif L==3 // en
+ "Number of
rubrics";
+#elif L==4 // es
+ "N.º de
rúbricas";
+#elif L==5 // fr
+ "Nombre de
rubriques";
+#elif L==6 // gn
+ "N.º de
rúbricas"; // Okoteve traducción
+#elif L==7 // it
+ "Numero di
rubriche";
+#elif L==8 // pl
+ "Liczba
rubryk";
+#elif L==9 // pt
+ "N.º de
rubricas";
+#elif L==10 // tr
+ "Değerlendirme listesi
sayısı";
+#endif
+
const char *Txt_Number_of_students =
#if L==1 // ca
"Nombre d'estudiants";
@@ -29423,7 +29762,7 @@ const char *Txt_Number_of_students =
#elif L==9 // pt
"N.º de estudantes";
#elif L==10 // tr
- "Number of students"; // Çeviri lazim!
+ "Öğrenci sayısı";
#endif
const char *Txt_Number_of_BR_surveys =
@@ -29446,7 +29785,7 @@ const char *Txt_Number_of_BR_surveys =
#elif L==9 // pt
"N.º de
inquéritos";
#elif L==10 // tr
- "Number of
surveys"; // Çeviri lazim!
+ "Anket
sayısı";
#endif
const char *Txt_Number_BR_of_test_BR_questions =
@@ -42197,6 +42536,75 @@ const char *Txt_ROOT_FOLDER_EXTERNAL_NAMES[Brw_NUM_TYPES_FILE_BROWSER] =
#endif
};
+const char *Txt_Rubric =
+#if L==1 // ca
+ "Rúbrica";
+#elif L==2 // de
+ "Rubrik";
+#elif L==3 // en
+ "Rubric";
+#elif L==4 // es
+ "Rúbrica";
+#elif L==5 // fr
+ "Rubrique";
+#elif L==6 // gn
+ "Rúbrica"; // Okoteve traducción
+#elif L==7 // it
+ "Rubriche";
+#elif L==8 // pl
+ "Rubryki";
+#elif L==9 // pt
+ "Rubrica";
+#elif L==10 // tr
+ "Değerlendirme";
+#endif
+
+const char *Txt_Rubric_X_removed = // Warning: it is very important to include %s in the following sentences
+#if L==1 // ca
+ "Rúbrica %s eliminada.";
+#elif L==2 // de
+ "Rubrik %s entfernt.";
+#elif L==3 // en
+ "Rubric %s removed.";
+#elif L==4 // es
+ "Rúbrica %s eliminada.";
+#elif L==5 // fr
+ "Rubrique %s supprimée.";
+#elif L==6 // gn
+ "Rúbrica %s eliminada."; // Okoteve traducción
+#elif L==7 // it
+ "Rubrica %s rimossa.";
+#elif L==8 // pl
+ "Rubryki %s usunięte.";
+#elif L==9 // pt
+ "Rubrica %s removida.";
+#elif L==10 // tr
+ "Değerlendirme listesi %s kaldırıldı.";
+#endif
+
+const char *Txt_Rubrics =
+#if L==1 // ca
+ "Rúbriques";
+#elif L==2 // de
+ "Rubriken";
+#elif L==3 // en
+ "Rubrics";
+#elif L==4 // es
+ "Rúbricas";
+#elif L==5 // fr
+ "Rubriques";
+#elif L==6 // gn
+ "Rúbricas"; // Okoteve traducción
+#elif L==7 // it
+ "Rubriche";
+#elif L==8 // pl
+ "Rubryki";
+#elif L==9 // pt
+ "Rubricas";
+#elif L==10 // tr
+ "Değerlendirme listesi";
+#endif
+
const char *Txt_Save_as =
#if L==1 // ca
"Guardar com";
@@ -45999,6 +46407,29 @@ const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES] =
"Jogos"
#elif L==10 // tr
"Oyunlar"
+#endif
+ ,
+ [Fig_RUBRICS] =
+#if L==1 // ca
+ "Rúbriques"
+#elif L==2 // de
+ "Rubriken"
+#elif L==3 // en
+ "Rubrics"
+#elif L==4 // es
+ "Rúbricas"
+#elif L==5 // fr
+ "Rubriques"
+#elif L==6 // gn
+ "Rúbricas" // Okoteve traducción
+#elif L==7 // it
+ "Rubriche"
+#elif L==8 // pl
+ "Rubryki"
+#elif L==9 // pt
+ "Rubricas"
+#elif L==10 // tr
+ "Değerlendirme"
#endif
,
[Fig_TIMELINE] =
@@ -48295,7 +48726,7 @@ const char *Txt_The_assignment_has_been_modified =
#elif L==9 // pt
"A atividade foi modificada.";
#elif L==10 // tr
- "The assignment has been modified."; // Çeviri lazim!
+ "Ödev değiştirildi.";
#endif
const char *Txt_The_banner_X_already_exists = // Warning: it is very important to include %s in the following sentences
@@ -49655,7 +50086,7 @@ const char *Txt_The_event_has_been_modified =
#elif L==9 // pt
"O evento foi modificado.";
#elif L==10 // tr
- "The event has been modified."; // Çeviri lazim!
+ "Etkinlik değiştirildi.";
#endif
const char *Txt_The_exam_has_been_modified =
@@ -49678,7 +50109,7 @@ const char *Txt_The_exam_has_been_modified =
#elif L==9 // pt
"O exame foi modificado.";
#elif L==10 // tr
- "The exam has been modified."; // Çeviri lazim!
+ "Sınav değiştirildi.";
#endif
const char *Txt_The_file_could_not_be_processed_successfully =
@@ -49997,7 +50428,7 @@ const char *Txt_The_game_has_been_modified =
#elif L==9 // pt
"O jogo foi modificado.";
#elif L==10 // tr
- "The game has been modified."; // Çeviri lazim!
+ "Oyun değiştirildi.";
#endif
const char *Txt_The_group_X_already_exists = // Warning: it is very important to include %s in the following sentences
@@ -51873,7 +52304,7 @@ const char *Txt_The_project_has_been_modified =
#elif L==9 // pt
"O projeto foi modificado.";
#elif L==10 // tr
- "The project has been modified."; // Çeviri lazim!
+ "Proje değiştirildi.";
#endif
const char *Txt_The_properties_of_file_X_have_been_saved = // Warning: it is very important to include %s in the following sentences
@@ -52103,6 +52534,29 @@ const char *Txt_The_room_assigned_to_the_group_X_has_changed =
"The room assigned to the group %s has changed."; // Çeviri lazim!
#endif
+const char *Txt_The_rubric_has_been_modified =
+#if L==1 // ca
+ "La rúbrica ha estat modificada.";
+#elif L==2 // de
+ "Die Rubrik wurde geändert.";
+#elif L==3 // en
+ "The rubric has been modified.";
+#elif L==4 // es
+ "La rúbrica ha sido modificada.";
+#elif L==5 // fr
+ "La rubrique a été modifiée.";
+#elif L==6 // gn
+ "La rúbrica ha sido modificada."; // Okoteve traducción
+#elif L==7 // it
+ "La rubrica è stata modificata.";
+#elif L==8 // pl
+ "Rubryka została zmieniona.";
+#elif L==9 // pt
+ "A rubrica foi modificada.";
+#elif L==10 // tr
+ "Puan anahtarını değiştirildi.";
+#endif
+
const char *Txt_The_X_students_who_belonged_to_the_course_Y_have_been_removed_from_it = // Warning: it is very important to include %u and %s in the following sentences
#if L==1 // ca
"Els %u estudiants que pertanyien a l'assignatura %s"
@@ -52202,7 +52656,7 @@ const char *Txt_The_set_of_questions_has_been_modified =
#elif L==9 // pt
"O conjunto de perguntas foi modificado.";
#elif L==10 // tr
- "The set of questions has been modified."; // Çeviri lazim!
+ "Soru seti değiştirildi.";
#endif
const char *Txt_The_size_of_the_file_exceeds_the_maximum_allowed_X = // Warning: it is very important to include %s in the following sentences
@@ -52350,7 +52804,7 @@ const char *Txt_The_survey_has_been_modified =
#elif L==9 // pt
"O inquérito foi modificado.";
#elif L==10 // tr
- "The survey has been modified."; // Çeviri lazim!
+ "Anket değiştirildi.";
#endif
const char *Txt_The_tag_X_has_been_renamed_as_Y = // Warning: it is very important to include two %s in the following sentences
@@ -58779,6 +59233,29 @@ const char *Txt_View_results =
"View results"; // Çeviri lazim!
#endif
+const char *Txt_View_rubric =
+#if L==1 // ca
+ "Veure rúbrica";
+#elif L==2 // de
+ "Anzeigen Rubrik";
+#elif L==3 // en
+ "View rubric";
+#elif L==4 // es
+ "Ver rúbrica";
+#elif L==5 // fr
+ "Voir rubrique";
+#elif L==6 // gn
+ "Ver rúbrica"; // Okoteve traducción
+#elif L==7 // it
+ "Vedi rubrica";
+#elif L==8 // pl
+ "Zobacz rubrykę";
+#elif L==9 // pt
+ "Ver rubrica";
+#elif L==10 // tr
+ "Puan anahtarını görüntüle";
+#endif
+
const char *Txt_View_survey =
#if L==1 // ca
"Veure enquesta";
@@ -61489,7 +61966,7 @@ const char *Txt_You_must_select_one_ore_more_users =
#elif L==8 // pl
"Musisz wybrać jednego lub więcej użytkowników.";
#elif L==9 // pt
- "Você deve selecionar um ou mais usu´rios.";
+ "Você deve selecionar um ou mais usuários.";
#elif L==10 // tr
"You must select one or more users."; // Çeviri lazim!
#endif
diff --git a/swad_text_action.c b/swad_text_action.c
index 37aa84da..d6f8c117 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -13837,6 +13837,167 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Copy link to game" // Precisa de tradução
#elif L==10 // tr
"Copy link to game" // Çeviri lazim!
+#endif
+ ,
+ [ActSeeRub] =
+#if L==1 // ca
+ "See rubric" // Necessita traducció
+#elif L==2 // de
+ "See rubric" // Need Übersetzung
+#elif L==3 // en
+ "See rubric"
+#elif L==4 // es
+ "Ver rúbrica"
+#elif L==5 // fr
+ "See rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Ver rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "See rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "See rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "See rubric" // Precisa de tradução
+#elif L==10 // tr
+ "See rubric" // Çeviri lazim!
+#endif
+ ,
+ [ActFrmNewRub] =
+#if L==1 // ca
+ "Edit new rubric" // Necessita traducció
+#elif L==2 // de
+ "Edit new rubric" // Need Übersetzung
+#elif L==3 // en
+ "Edit new rubric"
+#elif L==4 // es
+ "Editar nueva rúbrica"
+#elif L==5 // fr
+ "Edit new rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Editar nueva rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Edit new rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "Edit new rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Edit new rubric" // Precisa de tradução
+#elif L==10 // tr
+ "Edit new rubric" // Çeviri lazim!
+#endif
+ ,
+ [ActEdiOneRub] =
+#if L==1 // ca
+ "Edit rubric" // Necessita traducció
+#elif L==2 // de
+ "Edit rubric" // Need Übersetzung
+#elif L==3 // en
+ "Edit rubric"
+#elif L==4 // es
+ "Editar rúbrica"
+#elif L==5 // fr
+ "Edit rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Editar rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Edit rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "Edit rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Edit rubric" // Precisa de tradução
+#elif L==10 // tr
+ "Edit rubric" // Çeviri lazim!
+#endif
+ ,
+ [ActNewRub] =
+#if L==1 // ca
+ "Create new rubric" // Necessita traducció
+#elif L==2 // de
+ "Create new rubric" // Need Übersetzung
+#elif L==3 // en
+ "Create new rubric"
+#elif L==4 // es
+ "Crear nueva rúbrica"
+#elif L==5 // fr
+ "Create new rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Crear nueva rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Create new rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "Create new rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Create new rubric" // Precisa de tradução
+#elif L==10 // tr
+ "Create new rubric" // Çeviri lazim!
+#endif
+ ,
+ [ActChgRub] =
+#if L==1 // ca
+ "Change rubric" // Necessita traducció
+#elif L==2 // de
+ "Change rubric" // Need Übersetzung
+#elif L==3 // en
+ "Change rubric"
+#elif L==4 // es
+ "Cambiar rúbrica"
+#elif L==5 // fr
+ "Change rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Cambiar rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Change rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "Change rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Change rubric" // Precisa de tradução
+#elif L==10 // tr
+ "Change rubric" // Çeviri lazim!
+#endif
+ ,
+ [ActReqRemRub] =
+#if L==1 // ca
+ "Request removal of rubric" // Necessita traducció
+#elif L==2 // de
+ "Request removal of rubric" // Need Übersetzung
+#elif L==3 // en
+ "Request removal of rubric"
+#elif L==4 // es
+ "Solicitar eliminación de rúbrica"
+#elif L==5 // fr
+ "Request removal of rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Solicitar eliminación de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Request removal of rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "Request removal of rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Request removal of rubric" // Precisa de tradução
+#elif L==10 // tr
+ "Request removal of rubric" // Çeviri lazim!
+#endif
+ ,
+ [ActRemRub] =
+#if L==1 // ca
+ "Remove rubric" // Necessita traducció
+#elif L==2 // de
+ "Remove rubric" // Need Übersetzung
+#elif L==3 // en
+ "Remove rubric"
+#elif L==4 // es
+ "Eliminar rúbrica"
+#elif L==5 // fr
+ "Remove rubric" // Besoin de traduction
+#elif L==6 // gn
+ "Eliminar rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Remove rubric" // Bisogno di traduzione
+#elif L==8 // pl
+ "Remove rubric" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Remove rubric" // Precisa de tradução
+#elif L==10 // tr
+ "Remove rubric" // Çeviri lazim!
#endif
,
[ActSeeAdmDocIns] =