mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-08 09:45:26 +02:00
Version19.148
This commit is contained in:
parent
adbad19129
commit
5d14676c39
|
@ -635,9 +635,11 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
[ActImpTstQst ] = {1008,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TsI_ImportQstsFromXML ,NULL},
|
[ActImpTstQst ] = {1008,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TsI_ImportQstsFromXML ,NULL},
|
||||||
[ActLstTstQst ] = { 132,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ListQuestionsToEdit ,NULL},
|
[ActLstTstQst ] = { 132,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ListQuestionsToEdit ,NULL},
|
||||||
[ActRcvTstQst ] = { 126,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Tst_ReceiveQst ,NULL},
|
[ActRcvTstQst ] = { 126,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Tst_ReceiveQst ,NULL},
|
||||||
[ActReqRemTstQst ] = {1523,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveQst ,NULL},
|
[ActReqRemSevTstQst ] = {1835,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveSelectedQsts ,NULL},
|
||||||
[ActRemTstQst ] = { 133,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveQst ,NULL},
|
[ActRemSevTstQst ] = {1836,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveSelectedQsts ,NULL},
|
||||||
[ActShfTstQst ] = { 455,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ChangeShuffleQst ,NULL},
|
[ActReqRemOneTstQst ] = {1523,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveOneQst ,NULL},
|
||||||
|
[ActRemOneTstQst ] = { 133,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveOneQst ,NULL},
|
||||||
|
[ActChgShfTstQst ] = { 455,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ChangeShuffleQst ,NULL},
|
||||||
|
|
||||||
[ActCfgTst ] = { 451,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormConfig ,NULL},
|
[ActCfgTst ] = { 451,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormConfig ,NULL},
|
||||||
[ActEnableTag ] = { 453,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_EnableTag ,NULL},
|
[ActEnableTag ] = { 453,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_EnableTag ,NULL},
|
||||||
|
@ -1862,7 +1864,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
-1, // #130 (obsolete action)
|
-1, // #130 (obsolete action)
|
||||||
-1, // #131 (obsolete action)
|
-1, // #131 (obsolete action)
|
||||||
ActLstTstQst, // #132
|
ActLstTstQst, // #132
|
||||||
ActRemTstQst, // #133
|
ActRemOneTstQst, // #133
|
||||||
-1, // #134 (obsolete action)
|
-1, // #134 (obsolete action)
|
||||||
-1, // #135 (obsolete action)
|
-1, // #135 (obsolete action)
|
||||||
-1, // #136 (obsolete action)
|
-1, // #136 (obsolete action)
|
||||||
|
@ -2184,7 +2186,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActDisableTag, // #452
|
ActDisableTag, // #452
|
||||||
ActEnableTag, // #453
|
ActEnableTag, // #453
|
||||||
ActRcvCfgTst, // #454
|
ActRcvCfgTst, // #454
|
||||||
ActShfTstQst, // #455
|
ActChgShfTstQst, // #455
|
||||||
-1, // #456 (obsolete action)
|
-1, // #456 (obsolete action)
|
||||||
-1, // #457 (obsolete action)
|
-1, // #457 (obsolete action)
|
||||||
-1, // #458 (obsolete action)
|
-1, // #458 (obsolete action)
|
||||||
|
@ -3252,7 +3254,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActSeeSocPrf, // #1520
|
ActSeeSocPrf, // #1520
|
||||||
ActFrmLogIn, // #1521
|
ActFrmLogIn, // #1521
|
||||||
ActUpdSignUpReq, // #1522
|
ActUpdSignUpReq, // #1522
|
||||||
ActReqRemTstQst, // #1523
|
ActReqRemOneTstQst, // #1523
|
||||||
ActReqRemSvyQst, // #1524
|
ActReqRemSvyQst, // #1524
|
||||||
ActAdmTchCrsGrp, // #1525
|
ActAdmTchCrsGrp, // #1525
|
||||||
ActChgToAdmTch, // #1526
|
ActChgToAdmTch, // #1526
|
||||||
|
@ -3564,6 +3566,8 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActDwnPrgItm, // #1833
|
ActDwnPrgItm, // #1833
|
||||||
ActRgtPrgItm, // #1833
|
ActRgtPrgItm, // #1833
|
||||||
ActLftPrgItm, // #1834
|
ActLftPrgItm, // #1834
|
||||||
|
ActReqRemSevTstQst, // #1835
|
||||||
|
ActRemSevTstQst, // #1836
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
168
swad_action.h
168
swad_action.h
|
@ -64,7 +64,7 @@ typedef enum
|
||||||
|
|
||||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1834
|
#define Act_MAX_ACTION_COD 1836
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||||
|
|
||||||
|
@ -613,97 +613,99 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActImpTstQst (ActChgCrsTT1stDay + 102)
|
#define ActImpTstQst (ActChgCrsTT1stDay + 102)
|
||||||
#define ActLstTstQst (ActChgCrsTT1stDay + 103)
|
#define ActLstTstQst (ActChgCrsTT1stDay + 103)
|
||||||
#define ActRcvTstQst (ActChgCrsTT1stDay + 104)
|
#define ActRcvTstQst (ActChgCrsTT1stDay + 104)
|
||||||
#define ActReqRemTstQst (ActChgCrsTT1stDay + 105)
|
#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 105)
|
||||||
#define ActRemTstQst (ActChgCrsTT1stDay + 106)
|
#define ActRemSevTstQst (ActChgCrsTT1stDay + 106)
|
||||||
#define ActShfTstQst (ActChgCrsTT1stDay + 107)
|
#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 107)
|
||||||
#define ActCfgTst (ActChgCrsTT1stDay + 108)
|
#define ActRemOneTstQst (ActChgCrsTT1stDay + 108)
|
||||||
#define ActEnableTag (ActChgCrsTT1stDay + 109)
|
#define ActChgShfTstQst (ActChgCrsTT1stDay + 109)
|
||||||
#define ActDisableTag (ActChgCrsTT1stDay + 110)
|
#define ActCfgTst (ActChgCrsTT1stDay + 110)
|
||||||
#define ActRenTag (ActChgCrsTT1stDay + 111)
|
#define ActEnableTag (ActChgCrsTT1stDay + 111)
|
||||||
#define ActRcvCfgTst (ActChgCrsTT1stDay + 112)
|
#define ActDisableTag (ActChgCrsTT1stDay + 112)
|
||||||
|
#define ActRenTag (ActChgCrsTT1stDay + 113)
|
||||||
|
#define ActRcvCfgTst (ActChgCrsTT1stDay + 114)
|
||||||
|
|
||||||
#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 113)
|
#define ActReqSeeMyTstRes (ActChgCrsTT1stDay + 115)
|
||||||
#define ActSeeMyTstRes (ActChgCrsTT1stDay + 114)
|
#define ActSeeMyTstRes (ActChgCrsTT1stDay + 116)
|
||||||
#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 115)
|
#define ActSeeOneTstResMe (ActChgCrsTT1stDay + 117)
|
||||||
#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 116)
|
#define ActReqSeeUsrTstRes (ActChgCrsTT1stDay + 118)
|
||||||
#define ActSeeUsrTstRes (ActChgCrsTT1stDay + 117)
|
#define ActSeeUsrTstRes (ActChgCrsTT1stDay + 119)
|
||||||
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 118)
|
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 120)
|
||||||
|
|
||||||
#define ActSeeGam (ActChgCrsTT1stDay + 119)
|
#define ActSeeGam (ActChgCrsTT1stDay + 121)
|
||||||
#define ActReqRemMch (ActChgCrsTT1stDay + 120)
|
#define ActReqRemMch (ActChgCrsTT1stDay + 122)
|
||||||
#define ActRemMch (ActChgCrsTT1stDay + 121)
|
#define ActRemMch (ActChgCrsTT1stDay + 123)
|
||||||
#define ActReqNewMch (ActChgCrsTT1stDay + 122)
|
#define ActReqNewMch (ActChgCrsTT1stDay + 124)
|
||||||
#define ActNewMch (ActChgCrsTT1stDay + 123)
|
#define ActNewMch (ActChgCrsTT1stDay + 125)
|
||||||
#define ActResMch (ActChgCrsTT1stDay + 124)
|
#define ActResMch (ActChgCrsTT1stDay + 126)
|
||||||
#define ActBckMch (ActChgCrsTT1stDay + 125)
|
#define ActBckMch (ActChgCrsTT1stDay + 127)
|
||||||
#define ActPlyPauMch (ActChgCrsTT1stDay + 126)
|
#define ActPlyPauMch (ActChgCrsTT1stDay + 128)
|
||||||
#define ActFwdMch (ActChgCrsTT1stDay + 127)
|
#define ActFwdMch (ActChgCrsTT1stDay + 129)
|
||||||
#define ActChgNumColMch (ActChgCrsTT1stDay + 128)
|
#define ActChgNumColMch (ActChgCrsTT1stDay + 130)
|
||||||
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 129)
|
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 131)
|
||||||
#define ActMchCntDwn (ActChgCrsTT1stDay + 130)
|
#define ActMchCntDwn (ActChgCrsTT1stDay + 132)
|
||||||
#define ActRefMchTch (ActChgCrsTT1stDay + 131)
|
#define ActRefMchTch (ActChgCrsTT1stDay + 133)
|
||||||
|
|
||||||
#define ActJoiMch (ActChgCrsTT1stDay + 132)
|
#define ActJoiMch (ActChgCrsTT1stDay + 134)
|
||||||
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 133)
|
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 135)
|
||||||
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 134)
|
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 136)
|
||||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 135)
|
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 137)
|
||||||
#define ActRefMchStd (ActChgCrsTT1stDay + 136)
|
#define ActRefMchStd (ActChgCrsTT1stDay + 138)
|
||||||
|
|
||||||
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 137)
|
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 139)
|
||||||
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 138)
|
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 140)
|
||||||
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 139)
|
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 141)
|
||||||
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 140)
|
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 142)
|
||||||
|
|
||||||
#define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 141)
|
#define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 143)
|
||||||
#define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 142)
|
#define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 144)
|
||||||
#define ActSeeAllMchResGam (ActChgCrsTT1stDay + 143)
|
#define ActSeeAllMchResGam (ActChgCrsTT1stDay + 145)
|
||||||
#define ActSeeAllMchResMch (ActChgCrsTT1stDay + 144)
|
#define ActSeeAllMchResMch (ActChgCrsTT1stDay + 146)
|
||||||
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 145)
|
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 147)
|
||||||
|
|
||||||
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 146)
|
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 148)
|
||||||
|
|
||||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 147)
|
#define ActFrmNewGam (ActChgCrsTT1stDay + 149)
|
||||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 148)
|
#define ActEdiOneGam (ActChgCrsTT1stDay + 150)
|
||||||
#define ActNewGam (ActChgCrsTT1stDay + 149)
|
#define ActNewGam (ActChgCrsTT1stDay + 151)
|
||||||
#define ActChgGam (ActChgCrsTT1stDay + 150)
|
#define ActChgGam (ActChgCrsTT1stDay + 152)
|
||||||
#define ActReqRemGam (ActChgCrsTT1stDay + 151)
|
#define ActReqRemGam (ActChgCrsTT1stDay + 153)
|
||||||
#define ActRemGam (ActChgCrsTT1stDay + 152)
|
#define ActRemGam (ActChgCrsTT1stDay + 154)
|
||||||
#define ActHidGam (ActChgCrsTT1stDay + 153)
|
#define ActHidGam (ActChgCrsTT1stDay + 155)
|
||||||
#define ActShoGam (ActChgCrsTT1stDay + 154)
|
#define ActShoGam (ActChgCrsTT1stDay + 156)
|
||||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 155)
|
#define ActAddOneGamQst (ActChgCrsTT1stDay + 157)
|
||||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 156)
|
#define ActGamLstTstQst (ActChgCrsTT1stDay + 158)
|
||||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 157)
|
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 159)
|
||||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 158)
|
#define ActReqRemGamQst (ActChgCrsTT1stDay + 160)
|
||||||
#define ActRemGamQst (ActChgCrsTT1stDay + 159)
|
#define ActRemGamQst (ActChgCrsTT1stDay + 161)
|
||||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 160)
|
#define ActUp_GamQst (ActChgCrsTT1stDay + 162)
|
||||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 161)
|
#define ActDwnGamQst (ActChgCrsTT1stDay + 163)
|
||||||
|
|
||||||
#define ActSeeSvy (ActChgCrsTT1stDay + 162)
|
#define ActSeeSvy (ActChgCrsTT1stDay + 164)
|
||||||
#define ActAnsSvy (ActChgCrsTT1stDay + 163)
|
#define ActAnsSvy (ActChgCrsTT1stDay + 165)
|
||||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 164)
|
#define ActFrmNewSvy (ActChgCrsTT1stDay + 166)
|
||||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 165)
|
#define ActEdiOneSvy (ActChgCrsTT1stDay + 167)
|
||||||
#define ActNewSvy (ActChgCrsTT1stDay + 166)
|
#define ActNewSvy (ActChgCrsTT1stDay + 168)
|
||||||
#define ActChgSvy (ActChgCrsTT1stDay + 167)
|
#define ActChgSvy (ActChgCrsTT1stDay + 169)
|
||||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 168)
|
#define ActReqRemSvy (ActChgCrsTT1stDay + 170)
|
||||||
#define ActRemSvy (ActChgCrsTT1stDay + 169)
|
#define ActRemSvy (ActChgCrsTT1stDay + 171)
|
||||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 170)
|
#define ActReqRstSvy (ActChgCrsTT1stDay + 172)
|
||||||
#define ActRstSvy (ActChgCrsTT1stDay + 171)
|
#define ActRstSvy (ActChgCrsTT1stDay + 173)
|
||||||
#define ActHidSvy (ActChgCrsTT1stDay + 172)
|
#define ActHidSvy (ActChgCrsTT1stDay + 174)
|
||||||
#define ActShoSvy (ActChgCrsTT1stDay + 173)
|
#define ActShoSvy (ActChgCrsTT1stDay + 175)
|
||||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 174)
|
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 176)
|
||||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 175)
|
#define ActRcvSvyQst (ActChgCrsTT1stDay + 177)
|
||||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 176)
|
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 178)
|
||||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 177)
|
#define ActRemSvyQst (ActChgCrsTT1stDay + 179)
|
||||||
|
|
||||||
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 178)
|
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 180)
|
||||||
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 179)
|
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 181)
|
||||||
#define ActEdiExaAnn (ActChgCrsTT1stDay + 180)
|
#define ActEdiExaAnn (ActChgCrsTT1stDay + 182)
|
||||||
#define ActRcvExaAnn (ActChgCrsTT1stDay + 181)
|
#define ActRcvExaAnn (ActChgCrsTT1stDay + 183)
|
||||||
#define ActPrnExaAnn (ActChgCrsTT1stDay + 182)
|
#define ActPrnExaAnn (ActChgCrsTT1stDay + 184)
|
||||||
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 183)
|
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 185)
|
||||||
#define ActRemExaAnn (ActChgCrsTT1stDay + 184)
|
#define ActRemExaAnn (ActChgCrsTT1stDay + 186)
|
||||||
#define ActHidExaAnn (ActChgCrsTT1stDay + 185)
|
#define ActHidExaAnn (ActChgCrsTT1stDay + 187)
|
||||||
#define ActShoExaAnn (ActChgCrsTT1stDay + 186)
|
#define ActShoExaAnn (ActChgCrsTT1stDay + 188)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** Files tab **********************************/
|
/******************************** Files tab **********************************/
|
||||||
|
|
|
@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
||||||
En OpenSWAD:
|
En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 19.147 (2020-03-14)"
|
#define Log_PLATFORM_VERSION "SWAD 19.148 (2020-03-17)"
|
||||||
#define CSS_FILE "swad19.146.css"
|
#define CSS_FILE "swad19.146.css"
|
||||||
#define JS_FILE "swad19.91.1.js"
|
#define JS_FILE "swad19.91.1.js"
|
||||||
/*
|
/*
|
||||||
|
@ -521,10 +521,13 @@ Param
|
||||||
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
|
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
|
||||||
// TODO: En la lista de conectados central, poner el logo de la institución a la que pertenece el usuario
|
// TODO: En la lista de conectados central, poner el logo de la institución a la que pertenece el usuario
|
||||||
// TODO: Miguel Damas: al principio de los exámenes tendría que poner cuánto resta cada pregunta
|
// TODO: Miguel Damas: al principio de los exámenes tendría que poner cuánto resta cada pregunta
|
||||||
// TODO: Si el alumno ha marcado "Permitir que los profesores...", entonces pedir confirmación al pulsar el botón azul, para evitar que se envíe por error antes de tiempo
|
|
||||||
// TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores
|
// TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores
|
||||||
|
// TODO: Si el alumno ha marcado "Permitir que los profesores...", entonces pedir confirmación al pulsar el botón azul, para evitar que se envíe por error antes de tiempo
|
||||||
|
|
||||||
|
Version 19.148: Mar 17, 2020 Code refactoring in tests.
|
||||||
|
New actions to remove several test questions. (282868 lines)
|
||||||
Version 19.147: Mar 14, 2020 Change MathJax to version 3.0.1. (282550 lines)
|
Version 19.147: Mar 14, 2020 Change MathJax to version 3.0.1. (282550 lines)
|
||||||
|
Install MathJax 3.0.1
|
||||||
Copy the following JavaScript file to public directory:
|
Copy the following JavaScript file to public directory:
|
||||||
sudo cp js/mathjax-config.js /var/www/html/swad/
|
sudo cp js/mathjax-config.js /var/www/html/swad/
|
||||||
|
|
||||||
|
|
|
@ -3906,7 +3906,7 @@ void For_ReceiveForumPost (void)
|
||||||
Media.Width = For_IMAGE_SAVED_MAX_WIDTH;
|
Media.Width = For_IMAGE_SAVED_MAX_WIDTH;
|
||||||
Media.Height = For_IMAGE_SAVED_MAX_HEIGHT;
|
Media.Height = For_IMAGE_SAVED_MAX_HEIGHT;
|
||||||
Media.Quality = For_IMAGE_SAVED_QUALITY;
|
Media.Quality = For_IMAGE_SAVED_QUALITY;
|
||||||
Med_GetMediaFromForm (-1,&Media,NULL,
|
Med_GetMediaFromForm (-1L,-1L,-1,&Media,NULL,
|
||||||
For_FORUM_POSTS_SECTION_ID); // Alerts will be shown later in posts section
|
For_FORUM_POSTS_SECTION_ID); // Alerts will be shown later in posts section
|
||||||
|
|
||||||
/***** Create a new message *****/
|
/***** Create a new message *****/
|
||||||
|
|
22
swad_game.c
22
swad_game.c
|
@ -156,7 +156,7 @@ static void Gam_ListGameQuestions (struct Game *Game);
|
||||||
static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res,
|
MYSQL_RES *mysql_res,
|
||||||
bool ICanEditQuestions);
|
bool ICanEditQuestions);
|
||||||
static void Gam_ListQuestionForEdition (const char *StrQstInd);
|
static void Gam_ListQuestionForEdition (long QstCod,const char *StrQstInd);
|
||||||
static void Gam_PutIconToAddNewQuestions (void);
|
static void Gam_PutIconToAddNewQuestions (void);
|
||||||
static void Gam_PutButtonToAddNewQuestions (void);
|
static void Gam_PutButtonToAddNewQuestions (void);
|
||||||
|
|
||||||
|
@ -1873,6 +1873,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
extern const char *Txt_Movement_not_allowed;
|
extern const char *Txt_Movement_not_allowed;
|
||||||
unsigned NumQst;
|
unsigned NumQst;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
long QstCod;
|
||||||
unsigned QstInd;
|
unsigned QstInd;
|
||||||
unsigned MaxQstInd;
|
unsigned MaxQstInd;
|
||||||
char StrQstInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
char StrQstInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||||
|
@ -1915,7 +1916,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
QstInd);
|
QstInd);
|
||||||
|
|
||||||
/* Get question code (row[1]) */
|
/* Get question code (row[1]) */
|
||||||
Gbl.Test.QstCod = Str_ConvertStrCodToLongCod (row[1]);
|
QstCod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
||||||
/***** Icons *****/
|
/***** Icons *****/
|
||||||
Gam_SetCurrentGamCod (GamCod); // Used to pass parameter
|
Gam_SetCurrentGamCod (GamCod); // Used to pass parameter
|
||||||
|
@ -1962,12 +1963,15 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
|
|
||||||
/* Put icon to edit the question */
|
/* Put icon to edit the question */
|
||||||
if (ICanEditQuestions)
|
if (ICanEditQuestions)
|
||||||
Ico_PutContextualIconToEdit (ActEdiOneTstQst,NULL,Tst_PutParamQstCod);
|
{
|
||||||
|
Tst_SetParamGblQstCod (QstCod);
|
||||||
|
Ico_PutContextualIconToEdit (ActEdiOneTstQst,NULL,Tst_PutParamGblQstCod);
|
||||||
|
}
|
||||||
|
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Question *****/
|
/***** Question *****/
|
||||||
Gam_ListQuestionForEdition (StrQstInd);
|
Gam_ListQuestionForEdition (QstCod,StrQstInd);
|
||||||
|
|
||||||
HTM_TR_End ();
|
HTM_TR_End ();
|
||||||
|
|
||||||
|
@ -1983,7 +1987,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
/********************** List game question for edition ***********************/
|
/********************** List game question for edition ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Gam_ListQuestionForEdition (const char *StrQstInd)
|
static void Gam_ListQuestionForEdition (long QstCod,const char *StrQstInd)
|
||||||
{
|
{
|
||||||
extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES];
|
extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES];
|
||||||
extern const char *Txt_Question_removed;
|
extern const char *Txt_Question_removed;
|
||||||
|
@ -1992,7 +1996,7 @@ static void Gam_ListQuestionForEdition (const char *StrQstInd)
|
||||||
bool QstExists;
|
bool QstExists;
|
||||||
|
|
||||||
/***** Get question from database *****/
|
/***** Get question from database *****/
|
||||||
QstExists = Tst_GetOneQuestionByCod (Gbl.Test.QstCod,&mysql_res); // Question exists?
|
QstExists = Tst_GetOneQuestionByCod (QstCod,&mysql_res); // Question exists?
|
||||||
|
|
||||||
if (QstExists)
|
if (QstExists)
|
||||||
{
|
{
|
||||||
|
@ -2033,13 +2037,13 @@ static void Gam_ListQuestionForEdition (const char *StrQstInd)
|
||||||
|
|
||||||
/***** Write question code *****/
|
/***** Write question code *****/
|
||||||
HTM_TD_Begin ("class=\"DAT_SMALL CT COLOR%u\"",Gbl.RowEvenOdd);
|
HTM_TD_Begin ("class=\"DAT_SMALL CT COLOR%u\"",Gbl.RowEvenOdd);
|
||||||
HTM_TxtF ("%ld ",Gbl.Test.QstCod);
|
HTM_TxtF ("%ld ",QstCod);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Write the question tags *****/
|
/***** Write the question tags *****/
|
||||||
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
|
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
|
||||||
if (QstExists)
|
if (QstExists)
|
||||||
Tst_GetAndWriteTagsQst (Gbl.Test.QstCod);
|
Tst_GetAndWriteTagsQst (QstCod);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Write stem and media (row[4]) *****/
|
/***** Write stem and media (row[4]) *****/
|
||||||
|
@ -2063,7 +2067,7 @@ static void Gam_ListQuestionForEdition (const char *StrQstInd)
|
||||||
Tst_WriteQstFeedback (row[5],"TEST_EDI_LIGHT");
|
Tst_WriteQstFeedback (row[5],"TEST_EDI_LIGHT");
|
||||||
|
|
||||||
/* Show answers */
|
/* Show answers */
|
||||||
Tst_WriteAnswersEdit (Gbl.Test.QstCod);
|
Tst_WriteAnswersEdit (QstCod);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -652,7 +652,6 @@ struct Globals
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct Tst_Config Config;
|
struct Tst_Config Config;
|
||||||
long QstCod;
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned Num;
|
unsigned Num;
|
||||||
|
@ -690,11 +689,6 @@ struct Globals
|
||||||
} Answer;
|
} Answer;
|
||||||
char ListAnsTypes[Tst_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
char ListAnsTypes[Tst_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
||||||
Tst_QuestionsOrder_t SelectedOrder;
|
Tst_QuestionsOrder_t SelectedOrder;
|
||||||
struct
|
|
||||||
{
|
|
||||||
bool CreateXML; // Create an XML file and Export questions into it?
|
|
||||||
FILE *FileXML;
|
|
||||||
} XML;
|
|
||||||
} Test;
|
} Test;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|
|
@ -504,11 +504,11 @@ static void Med_PutHiddenFormTypeMediaUploader (const char UniqueId[Frm_MAX_BYTE
|
||||||
/******************** Get media (image/video) from form **********************/
|
/******************** Get media (image/video) from form **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Media constructor must be called before calling this function
|
// Media constructor must be called before calling this function
|
||||||
// If NumMediaInForm < 0, params have no suffix
|
// If NumMediaInForm < 0, params have no suffix
|
||||||
// If NumMediaInForm >= 0, the number is a suffix of the params
|
// If NumMediaInForm >= 0, the number is a suffix of the params
|
||||||
|
|
||||||
void Med_GetMediaFromForm (int NumMediaInForm,struct Media *Media,
|
void Med_GetMediaFromForm (long CrsCod,long QstCod,int NumMediaInForm,struct Media *Media,
|
||||||
void (*GetMediaFromDB) (int NumMediaInForm,struct Media *Media),
|
void (*GetMediaFromDB) (long CrsCod,long QstCod,int NumMediaInForm,struct Media *Media),
|
||||||
const char *SectionForAlerts)
|
const char *SectionForAlerts)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Error_sending_or_processing_image_video;
|
extern const char *Txt_Error_sending_or_processing_image_video;
|
||||||
|
@ -581,7 +581,7 @@ void Med_GetMediaFromForm (int NumMediaInForm,struct Media *Media,
|
||||||
|
|
||||||
/***** Get media name *****/
|
/***** Get media name *****/
|
||||||
if (GetMediaFromDB != NULL)
|
if (GetMediaFromDB != NULL)
|
||||||
GetMediaFromDB (NumMediaInForm,Media);
|
GetMediaFromDB (CrsCod,QstCod,NumMediaInForm,Media);
|
||||||
break;
|
break;
|
||||||
default: // Unknown action
|
default: // Unknown action
|
||||||
Media->Action = Med_ACTION_NO_MEDIA;
|
Media->Action = Med_ACTION_NO_MEDIA;
|
||||||
|
|
|
@ -141,8 +141,8 @@ void Med_ResetMedia (struct Media *Media);
|
||||||
void Med_GetMediaDataByCod (struct Media *Media);
|
void Med_GetMediaDataByCod (struct Media *Media);
|
||||||
|
|
||||||
void Med_PutMediaUploader (int NumMediaInForm,const char *ClassInput);
|
void Med_PutMediaUploader (int NumMediaInForm,const char *ClassInput);
|
||||||
void Med_GetMediaFromForm (int NumMediaInForm,struct Media *Media,
|
void Med_GetMediaFromForm (long CrsCod,long QstCod,int NumMediaInForm,struct Media *Media,
|
||||||
void (*GetMediaFromDB) (int NumMediaInForm,struct Media *Media),
|
void (*GetMediaFromDB) (long CrsCod,long QstCod,int NumMediaInForm,struct Media *Media),
|
||||||
const char *SectionForAlerts);
|
const char *SectionForAlerts);
|
||||||
void Med_SetParamNames (struct ParamUploadMedia *ParamUploadMedia,int NumMediaInForm);
|
void Med_SetParamNames (struct ParamUploadMedia *ParamUploadMedia,int NumMediaInForm);
|
||||||
|
|
||||||
|
|
|
@ -755,7 +755,7 @@ void Msg_RecMsgFromUsr (void)
|
||||||
Media.Width = Msg_IMAGE_SAVED_MAX_WIDTH;
|
Media.Width = Msg_IMAGE_SAVED_MAX_WIDTH;
|
||||||
Media.Height = Msg_IMAGE_SAVED_MAX_HEIGHT;
|
Media.Height = Msg_IMAGE_SAVED_MAX_HEIGHT;
|
||||||
Media.Quality = Msg_IMAGE_SAVED_QUALITY;
|
Media.Quality = Msg_IMAGE_SAVED_QUALITY;
|
||||||
Med_GetMediaFromForm (-1,&Media,NULL,NULL);
|
Med_GetMediaFromForm (-1L,-1L,-1,&Media,NULL,NULL);
|
||||||
Ale_ShowAlerts (NULL);
|
Ale_ShowAlerts (NULL);
|
||||||
|
|
||||||
/***** Loop over the list Gbl.Usrs.Selected.List[Rol_UNK], that holds the list of the
|
/***** Loop over the list Gbl.Usrs.Selected.List[Rol_UNK], that holds the list of the
|
||||||
|
|
877
swad_test.c
877
swad_test.c
File diff suppressed because it is too large
Load Diff
15
swad_test.h
15
swad_test.h
|
@ -193,13 +193,20 @@ bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void);
|
||||||
bool Tst_CheckIfQuestionExistsInDB (void);
|
bool Tst_CheckIfQuestionExistsInDB (void);
|
||||||
|
|
||||||
long Tst_GetIntAnsFromStr (char *Str);
|
long Tst_GetIntAnsFromStr (char *Str);
|
||||||
void Tst_RequestRemoveQst (void);
|
|
||||||
void Tst_RemoveQst (void);
|
void Tst_RequestRemoveSelectedQsts (void);
|
||||||
|
void Tst_RemoveSelectedQsts (void);
|
||||||
|
void Tst_RequestRemoveOneQst (void);
|
||||||
|
void Tst_RemoveOneQst (void);
|
||||||
|
|
||||||
void Tst_ChangeShuffleQst (void);
|
void Tst_ChangeShuffleQst (void);
|
||||||
|
|
||||||
void Tst_PutParamQstCod (void);
|
void Tst_SetParamGblQstCod (long QstCod);
|
||||||
|
long Tst_GetParamGblQstCod (void);
|
||||||
|
void Tst_PutParamGblQstCod (void);
|
||||||
|
void Tst_PutParamQstCod (long QstCod);
|
||||||
|
|
||||||
void Tst_InsertOrUpdateQstTagsAnsIntoDB (void);
|
long Tst_InsertOrUpdateQstTagsAnsIntoDB (long QstCod);
|
||||||
|
|
||||||
void Tst_RemoveCrsTests (long CrsCod);
|
void Tst_RemoveCrsTests (long CrsCod);
|
||||||
|
|
||||||
|
|
|
@ -66,9 +66,12 @@ extern struct Globals Gbl;
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void TsI_PutParamsExportQsts (void);
|
static void TsI_PutParamsExportQsts (void);
|
||||||
|
static void TsI_PutCreateXMLParam (void);
|
||||||
|
|
||||||
static void TsI_GetAndWriteTagsXML (long QstCod);
|
static void TsI_ExportQuestion (long QstCod,FILE *FileXML);
|
||||||
static void TsI_WriteAnswersOfAQstXML (long QstCod);
|
|
||||||
|
static void TsI_GetAndWriteTagsXML (long QstCod,FILE *FileXML);
|
||||||
|
static void TsI_WriteAnswersOfAQstXML (long QstCod,FILE *FileXML);
|
||||||
static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML);
|
static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML);
|
||||||
static void TsI_ImportQuestionsFromXMLBuffer (const char *XMLBuffer);
|
static void TsI_ImportQuestionsFromXMLBuffer (const char *XMLBuffer);
|
||||||
static Tst_AnswerType_t TsI_ConvertFromStrAnsTypXMLToAnsTyp (const char *StrAnsTypeXML);
|
static Tst_AnswerType_t TsI_ConvertFromStrAnsTypXMLToAnsTyp (const char *StrAnsTypeXML);
|
||||||
|
@ -102,9 +105,23 @@ static void TsI_PutParamsExportQsts (void)
|
||||||
Tst_WriteParamEditQst ();
|
Tst_WriteParamEditQst ();
|
||||||
Par_PutHiddenParamChar ("OnlyThisQst",'N');
|
Par_PutHiddenParamChar ("OnlyThisQst",'N');
|
||||||
Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Gbl.Test.SelectedOrder);
|
Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Gbl.Test.SelectedOrder);
|
||||||
|
TsI_PutCreateXMLParam ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************ Parameter to create XML file ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void TsI_PutCreateXMLParam (void)
|
||||||
|
{
|
||||||
Par_PutHiddenParamChar ("CreateXML",'Y');
|
Par_PutHiddenParamChar ("CreateXML",'Y');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TsI_GetCreateXMLParamFromForm (void)
|
||||||
|
{
|
||||||
|
return Par_GetParToBool ("CreateXML");
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Put a link (form) to import test questions ******************/
|
/*************** Put a link (form) to import test questions ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -157,10 +174,10 @@ void TsI_ShowFormImportQstsFromXML (void)
|
||||||
void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res)
|
void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassFormOutBoxBold[The_NUM_THEMES];
|
extern const char *The_ClassFormOutBoxBold[The_NUM_THEMES];
|
||||||
extern const char *Tst_StrAnswerTypesXML[Tst_NUM_ANS_TYPES];
|
|
||||||
extern const char *Txt_NEW_LINE;
|
extern const char *Txt_NEW_LINE;
|
||||||
extern const char *Txt_XML_file;
|
extern const char *Txt_XML_file;
|
||||||
char PathPubFile[PATH_MAX + 1];
|
char PathPubFile[PATH_MAX + 1];
|
||||||
|
FILE *FileXML;
|
||||||
unsigned long NumRow;
|
unsigned long NumRow;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
long QstCod;
|
long QstCod;
|
||||||
|
@ -175,77 +192,31 @@ void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res)
|
||||||
Cfg_PATH_FILE_BROWSER_TMP_PUBLIC,
|
Cfg_PATH_FILE_BROWSER_TMP_PUBLIC,
|
||||||
Gbl.FileBrowser.TmpPubDir.L,
|
Gbl.FileBrowser.TmpPubDir.L,
|
||||||
Gbl.FileBrowser.TmpPubDir.R);
|
Gbl.FileBrowser.TmpPubDir.R);
|
||||||
if ((Gbl.Test.XML.FileXML = fopen (PathPubFile,"wb")) == NULL)
|
if ((FileXML = fopen (PathPubFile,"wb")) == NULL)
|
||||||
Lay_ShowErrorAndExit ("Can not open target file.");
|
Lay_ShowErrorAndExit ("Can not open target file.");
|
||||||
|
|
||||||
/***** Start XML file *****/
|
/***** Start XML file *****/
|
||||||
XML_WriteStartFile (Gbl.Test.XML.FileXML,"test",false);
|
XML_WriteStartFile (FileXML,"test",false);
|
||||||
fprintf (Gbl.Test.XML.FileXML,"%s",Txt_NEW_LINE);
|
fprintf (FileXML,"%s",Txt_NEW_LINE);
|
||||||
|
|
||||||
/***** Write rows *****/
|
/***** Write rows *****/
|
||||||
for (NumRow = 0;
|
for (NumRow = 0;
|
||||||
NumRow < NumRows;
|
NumRow < NumRows;
|
||||||
NumRow++)
|
NumRow++)
|
||||||
{
|
{
|
||||||
|
/* Get question code (row[0]) */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
/*
|
|
||||||
row[0] QstCod
|
|
||||||
row[1] UNIX_TIMESTAMP(EditTime)
|
|
||||||
row[2] AnsType
|
|
||||||
row[3] Shuffle
|
|
||||||
row[4] Stem
|
|
||||||
row[5] Feedback
|
|
||||||
row[6] MedCod
|
|
||||||
row[7] NumHits
|
|
||||||
row[8] NumHitsNotBlank
|
|
||||||
row[9] Score
|
|
||||||
*/
|
|
||||||
/* row[0] holds the code of the question */
|
|
||||||
if ((QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
if ((QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of question.");
|
Lay_ShowErrorAndExit ("Wrong code of question.");
|
||||||
|
|
||||||
/* Write the question type (row[2]) */
|
TsI_ExportQuestion (QstCod,FileXML);
|
||||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<question type=\"%s\">%s",
|
|
||||||
Tst_StrAnswerTypesXML[Gbl.Test.AnswerType],Txt_NEW_LINE);
|
|
||||||
|
|
||||||
/* Write the question tags */
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<tags>%s",Txt_NEW_LINE);
|
|
||||||
TsI_GetAndWriteTagsXML (QstCod);
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"</tags>%s",Txt_NEW_LINE);
|
|
||||||
|
|
||||||
/* Write the stem (row[4]), that is in HTML format */
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<stem>%s</stem>%s",
|
|
||||||
row[4],Txt_NEW_LINE);
|
|
||||||
|
|
||||||
/* Write the feedback (row[5]), that is in HTML format */
|
|
||||||
if (row[5])
|
|
||||||
if (row[5][0])
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<feedback>%s</feedback>%s",
|
|
||||||
row[5],Txt_NEW_LINE);
|
|
||||||
|
|
||||||
/* Write the answers of this question.
|
|
||||||
Shuffle can be enabled or disabled (row[3]) */
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<answer");
|
|
||||||
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
|
|
||||||
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
|
|
||||||
fprintf (Gbl.Test.XML.FileXML," shuffle=\"%s\"",
|
|
||||||
(row[3][0] == 'Y') ? "yes" :
|
|
||||||
"no");
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,">");
|
|
||||||
TsI_WriteAnswersOfAQstXML (QstCod);
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"</answer>%s",Txt_NEW_LINE);
|
|
||||||
|
|
||||||
/* End question */
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,"</question>%s%s",
|
|
||||||
Txt_NEW_LINE,Txt_NEW_LINE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** End XML file *****/
|
/***** End XML file *****/
|
||||||
XML_WriteEndFile (Gbl.Test.XML.FileXML,"test");
|
XML_WriteEndFile (FileXML,"test");
|
||||||
|
|
||||||
/***** Close the XML file *****/
|
/***** Close the XML file *****/
|
||||||
fclose (Gbl.Test.XML.FileXML);
|
fclose (FileXML);
|
||||||
|
|
||||||
/***** Return to start of query result *****/
|
/***** Return to start of query result *****/
|
||||||
mysql_data_seek (mysql_res,0);
|
mysql_data_seek (mysql_res,0);
|
||||||
|
@ -261,11 +232,77 @@ void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res)
|
||||||
HTM_A_End ();
|
HTM_A_End ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************** Write one question into the XML file *********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void TsI_ExportQuestion (long QstCod,FILE *FileXML)
|
||||||
|
{
|
||||||
|
extern const char *Tst_StrAnswerTypesXML[Tst_NUM_ANS_TYPES];
|
||||||
|
extern const char *Txt_NEW_LINE;
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
|
||||||
|
if (Tst_GetOneQuestionByCod (QstCod,&mysql_res))
|
||||||
|
{
|
||||||
|
/***** Get row *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
/*
|
||||||
|
row[0] QstCod
|
||||||
|
row[1] UNIX_TIMESTAMP(EditTime)
|
||||||
|
row[2] AnsType
|
||||||
|
row[3] Shuffle
|
||||||
|
row[4] Stem
|
||||||
|
row[5] Feedback
|
||||||
|
row[6] MedCod
|
||||||
|
row[7] NumHits
|
||||||
|
row[8] NumHitsNotBlank
|
||||||
|
row[9] Score
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***** Write the question type (row[2]) *****/
|
||||||
|
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
|
||||||
|
fprintf (FileXML,"<question type=\"%s\">%s",
|
||||||
|
Tst_StrAnswerTypesXML[Gbl.Test.AnswerType],Txt_NEW_LINE);
|
||||||
|
|
||||||
|
/***** Write the question tags *****/
|
||||||
|
fprintf (FileXML,"<tags>%s",Txt_NEW_LINE);
|
||||||
|
TsI_GetAndWriteTagsXML (QstCod,FileXML);
|
||||||
|
fprintf (FileXML,"</tags>%s",Txt_NEW_LINE);
|
||||||
|
|
||||||
|
/***** Write the stem (row[4]), that is in HTML format *****/
|
||||||
|
fprintf (FileXML,"<stem>%s</stem>%s",
|
||||||
|
row[4],Txt_NEW_LINE);
|
||||||
|
|
||||||
|
/***** Write the feedback (row[5]), that is in HTML format *****/
|
||||||
|
if (row[5])
|
||||||
|
if (row[5][0])
|
||||||
|
fprintf (FileXML,"<feedback>%s</feedback>%s",
|
||||||
|
row[5],Txt_NEW_LINE);
|
||||||
|
|
||||||
|
/***** Write the answers of this question.
|
||||||
|
Shuffle can be enabled or disabled (row[3]) *****/
|
||||||
|
fprintf (FileXML,"<answer");
|
||||||
|
if (Gbl.Test.AnswerType == Tst_ANS_UNIQUE_CHOICE ||
|
||||||
|
Gbl.Test.AnswerType == Tst_ANS_MULTIPLE_CHOICE)
|
||||||
|
fprintf (FileXML," shuffle=\"%s\"",
|
||||||
|
(row[3][0] == 'Y') ? "yes" :
|
||||||
|
"no");
|
||||||
|
fprintf (FileXML,">");
|
||||||
|
TsI_WriteAnswersOfAQstXML (QstCod,FileXML);
|
||||||
|
fprintf (FileXML,"</answer>%s",Txt_NEW_LINE);
|
||||||
|
|
||||||
|
/***** End question *****/
|
||||||
|
fprintf (FileXML,"</question>%s%s",
|
||||||
|
Txt_NEW_LINE,Txt_NEW_LINE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************* Get and write tags of a question into the XML file ************/
|
/************* Get and write tags of a question into the XML file ************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void TsI_GetAndWriteTagsXML (long QstCod)
|
static void TsI_GetAndWriteTagsXML (long QstCod,FILE *FileXML)
|
||||||
{
|
{
|
||||||
extern const char *Txt_NEW_LINE;
|
extern const char *Txt_NEW_LINE;
|
||||||
unsigned long NumRow;
|
unsigned long NumRow;
|
||||||
|
@ -280,7 +317,7 @@ static void TsI_GetAndWriteTagsXML (long QstCod)
|
||||||
NumRow++)
|
NumRow++)
|
||||||
{
|
{
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<tag>%s</tag>%s",
|
fprintf (FileXML,"<tag>%s</tag>%s",
|
||||||
row[0],Txt_NEW_LINE);
|
row[0],Txt_NEW_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +329,7 @@ static void TsI_GetAndWriteTagsXML (long QstCod)
|
||||||
/**************** Get and write the answers of a test question ***************/
|
/**************** Get and write the answers of a test question ***************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void TsI_WriteAnswersOfAQstXML (long QstCod)
|
static void TsI_WriteAnswersOfAQstXML (long QstCod,FILE *FileXML)
|
||||||
{
|
{
|
||||||
extern const char *Txt_NEW_LINE;
|
extern const char *Txt_NEW_LINE;
|
||||||
unsigned NumOpt;
|
unsigned NumOpt;
|
||||||
|
@ -315,7 +352,7 @@ static void TsI_WriteAnswersOfAQstXML (long QstCod)
|
||||||
case Tst_ANS_INT:
|
case Tst_ANS_INT:
|
||||||
Tst_CheckIfNumberOfAnswersIsOne ();
|
Tst_CheckIfNumberOfAnswersIsOne ();
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
fprintf (Gbl.Test.XML.FileXML,"%ld",
|
fprintf (FileXML,"%ld",
|
||||||
Tst_GetIntAnsFromStr (row[1]));
|
Tst_GetIntAnsFromStr (row[1]));
|
||||||
break;
|
break;
|
||||||
case Tst_ANS_FLOAT:
|
case Tst_ANS_FLOAT:
|
||||||
|
@ -329,9 +366,9 @@ static void TsI_WriteAnswersOfAQstXML (long QstCod)
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
FloatNum[i] = Str_GetDoubleFromStr (row[1]);
|
FloatNum[i] = Str_GetDoubleFromStr (row[1]);
|
||||||
}
|
}
|
||||||
fprintf (Gbl.Test.XML.FileXML,"%s"
|
fprintf (FileXML,"%s"
|
||||||
"<lower>%.15lg</lower>%s"
|
"<lower>%.15lg</lower>%s"
|
||||||
"<upper>%.15lg</upper>%s",
|
"<upper>%.15lg</upper>%s",
|
||||||
Txt_NEW_LINE,
|
Txt_NEW_LINE,
|
||||||
FloatNum[0],Txt_NEW_LINE,
|
FloatNum[0],Txt_NEW_LINE,
|
||||||
FloatNum[1],Txt_NEW_LINE);
|
FloatNum[1],Txt_NEW_LINE);
|
||||||
|
@ -339,14 +376,14 @@ static void TsI_WriteAnswersOfAQstXML (long QstCod)
|
||||||
case Tst_ANS_TRUE_FALSE:
|
case Tst_ANS_TRUE_FALSE:
|
||||||
Tst_CheckIfNumberOfAnswersIsOne ();
|
Tst_CheckIfNumberOfAnswersIsOne ();
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
fprintf (Gbl.Test.XML.FileXML,"%s",
|
fprintf (FileXML,"%s",
|
||||||
row[1][0] == 'T' ? "true" :
|
row[1][0] == 'T' ? "true" :
|
||||||
"false");
|
"false");
|
||||||
break;
|
break;
|
||||||
case Tst_ANS_UNIQUE_CHOICE:
|
case Tst_ANS_UNIQUE_CHOICE:
|
||||||
case Tst_ANS_MULTIPLE_CHOICE:
|
case Tst_ANS_MULTIPLE_CHOICE:
|
||||||
case Tst_ANS_TEXT:
|
case Tst_ANS_TEXT:
|
||||||
fprintf (Gbl.Test.XML.FileXML,"%s",Txt_NEW_LINE);
|
fprintf (FileXML,"%s",Txt_NEW_LINE);
|
||||||
for (NumOpt = 0;
|
for (NumOpt = 0;
|
||||||
NumOpt < Gbl.Test.Answer.NumOptions;
|
NumOpt < Gbl.Test.Answer.NumOptions;
|
||||||
NumOpt++)
|
NumOpt++)
|
||||||
|
@ -354,28 +391,28 @@ static void TsI_WriteAnswersOfAQstXML (long QstCod)
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Start answer */
|
/* Start answer */
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<option");
|
fprintf (FileXML,"<option");
|
||||||
|
|
||||||
/* Write whether the answer is correct or not (row[4]) */
|
/* Write whether the answer is correct or not (row[4]) */
|
||||||
if (Gbl.Test.AnswerType != Tst_ANS_TEXT)
|
if (Gbl.Test.AnswerType != Tst_ANS_TEXT)
|
||||||
fprintf (Gbl.Test.XML.FileXML," correct=\"%s\"",
|
fprintf (FileXML," correct=\"%s\"",
|
||||||
(row[4][0] == 'Y') ? "yes" :
|
(row[4][0] == 'Y') ? "yes" :
|
||||||
"no");
|
"no");
|
||||||
|
|
||||||
fprintf (Gbl.Test.XML.FileXML,">%s",Txt_NEW_LINE);
|
fprintf (FileXML,">%s",Txt_NEW_LINE);
|
||||||
|
|
||||||
/* Write the answer (row[1]), that is in HTML */
|
/* Write the answer (row[1]), that is in HTML */
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<text>%s</text>%s",
|
fprintf (FileXML,"<text>%s</text>%s",
|
||||||
row[1],Txt_NEW_LINE);
|
row[1],Txt_NEW_LINE);
|
||||||
|
|
||||||
/* Write the feedback (row[2]) */
|
/* Write the feedback (row[2]) */
|
||||||
if (row[2])
|
if (row[2])
|
||||||
if (row[2][0])
|
if (row[2][0])
|
||||||
fprintf (Gbl.Test.XML.FileXML,"<feedback>%s</feedback>%s",
|
fprintf (FileXML,"<feedback>%s</feedback>%s",
|
||||||
row[2],Txt_NEW_LINE);
|
row[2],Txt_NEW_LINE);
|
||||||
|
|
||||||
/* End answer */
|
/* End answer */
|
||||||
fprintf (Gbl.Test.XML.FileXML,"</option>%s",
|
fprintf (FileXML,"</option>%s",
|
||||||
Txt_NEW_LINE);
|
Txt_NEW_LINE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -438,17 +475,18 @@ void TsI_ImportQstsFromXML (void)
|
||||||
|
|
||||||
static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
|
static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
|
||||||
{
|
{
|
||||||
|
FILE *FileXML;
|
||||||
char *XMLBuffer;
|
char *XMLBuffer;
|
||||||
unsigned long FileSize;
|
unsigned long FileSize;
|
||||||
|
|
||||||
/***** Open file *****/
|
/***** Open file *****/
|
||||||
if ((Gbl.Test.XML.FileXML = fopen (FileNameXML,"rb")) == NULL)
|
if ((FileXML = fopen (FileNameXML,"rb")) == NULL)
|
||||||
Lay_ShowErrorAndExit ("Can not open XML file.");
|
Lay_ShowErrorAndExit ("Can not open XML file.");
|
||||||
|
|
||||||
/***** Compute file size *****/
|
/***** Compute file size *****/
|
||||||
fseek (Gbl.Test.XML.FileXML,0L,SEEK_END);
|
fseek (FileXML,0L,SEEK_END);
|
||||||
FileSize = (unsigned long) ftell (Gbl.Test.XML.FileXML);
|
FileSize = (unsigned long) ftell (FileXML);
|
||||||
fseek (Gbl.Test.XML.FileXML,0L,SEEK_SET);
|
fseek (FileXML,0L,SEEK_SET);
|
||||||
|
|
||||||
/***** Allocate memory for XML buffer *****/
|
/***** Allocate memory for XML buffer *****/
|
||||||
if ((XMLBuffer = (char *) malloc (FileSize + 1)) == NULL)
|
if ((XMLBuffer = (char *) malloc (FileSize + 1)) == NULL)
|
||||||
|
@ -456,7 +494,7 @@ static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Read file contents into XML buffer *****/
|
/***** Read file contents into XML buffer *****/
|
||||||
if (fread (XMLBuffer,sizeof (char),(size_t) FileSize,Gbl.Test.XML.FileXML))
|
if (fread (XMLBuffer,sizeof (char),(size_t) FileSize,FileXML))
|
||||||
XMLBuffer[FileSize] = '\0';
|
XMLBuffer[FileSize] = '\0';
|
||||||
else
|
else
|
||||||
XMLBuffer[0] = '\0';
|
XMLBuffer[0] = '\0';
|
||||||
|
@ -468,7 +506,7 @@ static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Close file *****/
|
/***** Close file *****/
|
||||||
fclose (Gbl.Test.XML.FileXML);
|
fclose (FileXML);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -647,10 +685,8 @@ static void TsI_ImportQuestionsFromXMLBuffer (const char *XMLBuffer)
|
||||||
|
|
||||||
/***** If a new question ==> insert question, tags and answer in the database *****/
|
/***** If a new question ==> insert question, tags and answer in the database *****/
|
||||||
if (!QuestionExists)
|
if (!QuestionExists)
|
||||||
{
|
if (Tst_InsertOrUpdateQstTagsAnsIntoDB (-1L) <= 0)
|
||||||
Gbl.Test.QstCod = -1L;
|
Lay_ShowErrorAndExit ("Can not create question.");
|
||||||
Tst_InsertOrUpdateQstTagsAnsIntoDB ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Destroy test question *****/
|
/***** Destroy test question *****/
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void TsI_PutFormToExportQuestions (void);
|
void TsI_PutFormToExportQuestions (void);
|
||||||
|
bool TsI_GetCreateXMLParamFromForm (void);
|
||||||
void TsI_PutFormToImportQuestions (void);
|
void TsI_PutFormToImportQuestions (void);
|
||||||
void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res);
|
void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res);
|
||||||
void TsI_ShowFormImportQstsFromXML (void);
|
void TsI_ShowFormImportQstsFromXML (void);
|
||||||
|
|
135
swad_text.c
135
swad_text.c
|
@ -1818,7 +1818,7 @@ const char *Txt_Add_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Dodaj pytania";
|
"Dodaj pytania";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Adicionar questões";
|
"Adicionar perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Add_this_ID =
|
const char *Txt_Add_this_ID =
|
||||||
|
@ -2496,7 +2496,7 @@ const char *Txt_Average_number_BR_of_questions_BR_per_survey =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Średnia liczba<br />pytań<br />na ankiety";
|
"Średnia liczba<br />pytań<br />na ankiety";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nº medio<br />de questões<br />por inquérito";
|
"Nº medio<br />de perguntas<br />por inquérito";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Average_BR_number_BR_of_test_BR_questions_BR_per_course =
|
const char *Txt_Average_BR_number_BR_of_test_BR_questions_BR_per_course =
|
||||||
|
@ -2517,7 +2517,7 @@ const char *Txt_Average_BR_number_BR_of_test_BR_questions_BR_per_course =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Średnia liczba<br />pytań<br />testowych<br />na kurs";
|
"Średnia liczba<br />pytań<br />testowych<br />na kurs";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nº medio<br />de questões<br />de test por<br />disciplina";
|
"Nº medio<br />de perguntas<br />de test por<br />disciplina";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Average_number_BR_of_surveys_BR_per_course =
|
const char *Txt_Average_number_BR_of_surveys_BR_per_course =
|
||||||
|
@ -6169,7 +6169,7 @@ const char *Txt_Create_question =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Utwórz pytanie";
|
"Utwórz pytanie";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Criar questão";
|
"Criar pergunta";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Create_record_field =
|
const char *Txt_Create_record_field =
|
||||||
|
@ -9245,7 +9245,28 @@ const char *Txt_Do_you_really_want_to_remove_the_question_X = // Warning: it is
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Czy na pewno chcesz usunac pytanie <strong>%ld</strong>?";
|
"Czy na pewno chcesz usunac pytanie <strong>%ld</strong>?";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Você realmente deseja remover a questão <strong>%ld</strong>?";
|
"Você realmente deseja remover a pergunta <strong>%ld</strong>?";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Do_you_really_want_to_remove_the_selected_questions =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Realment voleu eliminar les preguntes seleccionades?";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Wollen Sie die ausgewählten Fragen wirklich entfernen?";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Do you really want to remove the selected questions?";
|
||||||
|
#elif L==4 // es
|
||||||
|
"¿Realmente desea eliminar las preguntas seleccionadas?";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Voulez-vous vraiment supprimer les questions sélectionnées?";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"¿Realmente desea eliminar las preguntas seleccionadas?"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Vuoi realmente rimuovere le domande selezionate?";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Czy na pewno chcesz usunąć wybrane pytania?";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Você realmente deseja remover as perguntas selecionadas?";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Do_you_really_want_to_remove_the_survey_X = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Do_you_really_want_to_remove_the_survey_X = // Warning: it is very important to include %s in the following sentences
|
||||||
|
@ -11578,7 +11599,7 @@ const char *Txt_Existing_question =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Istniejąca pytanie";
|
"Istniejąca pytanie";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questão existente";
|
"Pergunta existente";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Expand =
|
const char *Txt_Expand =
|
||||||
|
@ -11604,9 +11625,9 @@ const char *Txt_Expand =
|
||||||
|
|
||||||
const char *Txt_Export_questions =
|
const char *Txt_Export_questions =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Exportar preguntas"; // Necessita traduccio
|
"Exporta preguntes";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Export questions"; // Need Übersetzung
|
"Fragen exportieren";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Export questions";
|
"Export questions";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
|
@ -11616,9 +11637,9 @@ const char *Txt_Export_questions =
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Exportar preguntas"; // Okoteve traducción
|
"Exportar preguntas"; // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"Export questions"; // Bisogno di traduzione
|
"Esportare domande";
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Export questions"; // Potrzebujesz tlumaczenie
|
"Eksportuj pytania";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Exportar perguntas";
|
"Exportar perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
@ -17775,7 +17796,7 @@ const char *Txt_List_edit_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Wyświetlić / edytować pytania";
|
"Wyświetlić / edytować pytania";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Listar / editar questões";
|
"Listar / editar perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_List_of_detailed_clicks =
|
const char *Txt_List_of_detailed_clicks =
|
||||||
|
@ -22903,7 +22924,7 @@ const char *Txt_Minimum_time_seconds_per_question_between_two_tests =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Minimalny czas (w sekundach)<br />na pytanie miedzy<br />dwoma badaniami";
|
"Minimalny czas (w sekundach)<br />na pytanie miedzy<br />dwoma badaniami";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Tempo mínimo (segundos)<br />por questão<br />entre dois testes";
|
"Tempo mínimo (segundos)<br />por pergunta<br />entre dois testes";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_minute =
|
const char *Txt_minute =
|
||||||
|
@ -24880,7 +24901,7 @@ const char *Txt_New_question =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Nowe pytanie";
|
"Nowe pytanie";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nova questão";
|
"Nova pergunta";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_New_record_field =
|
const char *Txt_New_record_field =
|
||||||
|
@ -26053,7 +26074,7 @@ const char *Txt_No_of_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Liczba pytań";
|
"Liczba pytań";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nº de questões";
|
"Nº de perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_No_of_threads =
|
const char *Txt_No_of_threads =
|
||||||
|
@ -26200,7 +26221,7 @@ const char *Txt_No_questions_found_matching_your_search_criteria =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Brak pytań spelniajacych zadane kryteria wyszukiwania.";
|
"Brak pytań spelniajacych zadane kryteria wyszukiwania.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Não questões com os seus critérios de pesquisa selecionados.";
|
"Não perguntas com os seus critérios de pesquisa selecionados.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_No_questions_have_been_added =
|
const char *Txt_No_questions_have_been_added =
|
||||||
|
@ -26347,7 +26368,7 @@ const char *Txt_No_test_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Brak pytań testowych.";
|
"Brak pytań testowych.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Não existem questões de test.";
|
"Não existem perguntas de test.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_No_user_has_been_eliminated =
|
const char *Txt_No_user_has_been_eliminated =
|
||||||
|
@ -26716,7 +26737,7 @@ const char *Txt_Non_blank_BR_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Niepustych<br />pytania";
|
"Niepustych<br />pytania";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questões<br />respondidas";
|
"Perguntas<br />respondidas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Not_applicable =
|
const char *Txt_Not_applicable =
|
||||||
|
@ -28183,7 +28204,7 @@ const char *Txt_Number_of_BR_courses_with_BR_exportable_BR_test_BR_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Liczba<br />kursów<br />z eksportowane<br />pytań<br />testowych";
|
"Liczba<br />kursów<br />z eksportowane<br />pytań<br />testowych";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nº de<br />disciplinas<br />com<br />questões<br />de test<br />exportáveis";
|
"Nº de<br />disciplinas<br />com<br />perguntas<br />de test<br />exportáveis";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Number_of_BR_courses_with_BR_games =
|
const char *Txt_Number_of_BR_courses_with_BR_games =
|
||||||
|
@ -28267,7 +28288,7 @@ const char *Txt_Number_of_BR_courses_BR_with_test_BR_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Liczba<br />kursów<br />z pytań<br />testowych";
|
"Liczba<br />kursów<br />z pytań<br />testowych";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nº de<br />disciplinas<br />com<br />questões<br />de test";
|
"Nº de<br />disciplinas<br />com<br />perguntas<br />de test";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Number_of_BR_courses_with_BR_surveys =
|
const char *Txt_Number_of_BR_courses_with_BR_surveys =
|
||||||
|
@ -28456,7 +28477,7 @@ const char *Txt_Number_BR_of_test_BR_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Liczba<br />pytań<br />testowych";
|
"Liczba<br />pytań<br />testowych";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Nº de<br />questões<br />de test";
|
"Nº de<br />perguntas<br />de test";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Number_of_users =
|
const char *Txt_Number_of_users =
|
||||||
|
@ -31944,7 +31965,7 @@ const char *Txt_Question =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytanie";
|
"Pytanie";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questão";
|
"Pergunta";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Question_code_X = // Warning: it is very important to include %ld in the following sentences
|
const char *Txt_Question_code_X = // Warning: it is very important to include %ld in the following sentences
|
||||||
|
@ -31965,7 +31986,7 @@ const char *Txt_Question_code_X = // Warning: it is very important to include %l
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Kodeks pytanie %ld";
|
"Kodeks pytanie %ld";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questão com código %ld";
|
"Pergunta com código %ld";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Question_modified =
|
const char *Txt_Question_modified =
|
||||||
|
@ -31986,7 +32007,7 @@ const char *Txt_Question_modified =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytanie zmodyfikowane.";
|
"Pytanie zmodyfikowane.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questão modificada.";
|
"Pergunta modificada.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Question_removed =
|
const char *Txt_Question_removed =
|
||||||
|
@ -32007,7 +32028,7 @@ const char *Txt_Question_removed =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytanie usuniete.";
|
"Pytanie usuniete.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questão removioda.";
|
"Pergunta removida.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Questions =
|
const char *Txt_Questions =
|
||||||
|
@ -32028,7 +32049,7 @@ const char *Txt_Questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytań";
|
"Pytań";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questões";
|
"Perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Questions_and_problems =
|
const char *Txt_Questions_and_problems =
|
||||||
|
@ -32049,7 +32070,28 @@ const char *Txt_Questions_and_problems =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytania i problemy";
|
"Pytania i problemy";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questões e problemas";
|
"Perguntas e problemas";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Questions_removed_X = // Warning: it is very important to include %u in the following sentences
|
||||||
|
#if L==1 // ca
|
||||||
|
"Preguntas eliminadas: %u.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Fragen entfernt: %u.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Questions removed: %u.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Preguntas eliminadas: %u.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Questions supprimées: %u.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Preguntas eliminadas: %u."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Domande rimosse: %u.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Pytania usuniete: %u.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Perguntas removidas: %u.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Quota_exceeded =
|
const char *Txt_Quota_exceeded =
|
||||||
|
@ -33394,7 +33436,7 @@ const char *Txt_Remove_question =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Eliminar pregunta";
|
"Eliminar pregunta";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"Entfernen Frage";
|
"Frage entfernen";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Remove question";
|
"Remove question";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
|
@ -33408,7 +33450,28 @@ const char *Txt_Remove_question =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Usuń pytanie";
|
"Usuń pytanie";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Remover questão";
|
"Remover pergunta";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Remove_questions =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Eliminar preguntas";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Fragen entfernen";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Remove questions";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Eliminar preguntas";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Supprimer questions";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Eliminar preguntas"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Rimuovere domande";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Usuń pytania";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Remover perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Remove_record_field =
|
const char *Txt_Remove_record_field =
|
||||||
|
@ -39158,7 +39221,7 @@ const char *Txt_Select_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Wybierz pytania";
|
"Wybierz pytania";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Selecionar questões";
|
"Selecionar perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Select_the_groups_in_from_which_you_want_to_register_remove_users_ =
|
const char *Txt_Select_the_groups_in_from_which_you_want_to_register_remove_users_ =
|
||||||
|
@ -40313,7 +40376,7 @@ const char *Txt_Show_questions =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Show questions"; // Potrzebujesz tlumaczenie
|
"Show questions"; // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Mostrar questões";
|
"Mostrar perguntas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Show_statistic =
|
const char *Txt_Show_statistic =
|
||||||
|
@ -47712,7 +47775,7 @@ const char *Txt_The_question_has_been_moved_down =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytanie zostało przeniesione.";
|
"Pytanie zostało przeniesione.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"A questão foi movida para baixo.";
|
"A pergunta foi movida para baixo.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_question_has_been_moved_up =
|
const char *Txt_The_question_has_been_moved_up =
|
||||||
|
@ -47733,7 +47796,7 @@ const char *Txt_The_question_has_been_moved_up =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytanie zostało poruszone.";
|
"Pytanie zostało poruszone.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"A questão foi movida para cima.";
|
"A pergunta foi movida para cima.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_record_field_X_already_exists = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_record_field_X_already_exists = // Warning: it is very important to include %s in the following sentences
|
||||||
|
@ -51578,7 +51641,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Sort by stem of the question" // Potrzebujesz tlumaczenie
|
"Sort by stem of the question" // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Classificar por formulação da questão"
|
"Classificar por formulação da pergunta"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[Tst_ORDER_NUM_HITS] =
|
[Tst_ORDER_NUM_HITS] =
|
||||||
|
@ -51599,7 +51662,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Sort by number of times the question has been answered" // Potrzebujesz tlumaczenie
|
"Sort by number of times the question has been answered" // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Classificar por nº de vezes que a questão foi respondida"
|
"Classificar por nº de vezes que a pergunta foi respondida"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[Tst_ORDER_AVERAGE_SCORE] =
|
[Tst_ORDER_AVERAGE_SCORE] =
|
||||||
|
@ -51650,7 +51713,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] =
|
||||||
" has been answered (excluding blank answers)" // Potrzebujesz tlumaczenie
|
" has been answered (excluding blank answers)" // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Classificar por nº de vezes"
|
"Classificar por nº de vezes"
|
||||||
" que a questão foi respondida (não em branco)"
|
" que a pergunta foi respondida (não em branco)"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[Tst_ORDER_AVERAGE_SCORE_NOT_BLANK] =
|
[Tst_ORDER_AVERAGE_SCORE_NOT_BLANK] =
|
||||||
|
@ -51695,7 +51758,7 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] =
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Pytanie"
|
"Pytanie"
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Questão"
|
"Pergunta"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[Tst_ORDER_NUM_HITS] =
|
[Tst_ORDER_NUM_HITS] =
|
||||||
|
|
|
@ -9512,15 +9512,15 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"" // Precisa de tradução
|
"" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActReqRemTstQst] =
|
[ActReqRemSevTstQst] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"" // Necessita traducció
|
"" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"" // Need Übersetzung
|
"" // Need Übersetzung
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Request removing a self-assesment test question"
|
"Request removing several test questions"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
""
|
"Solicitar eliminación de varias preguntas de test"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"" // Besoin de traduction
|
"" // Besoin de traduction
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
|
@ -9533,15 +9533,15 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"" // Precisa de tradução
|
"" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActRemTstQst] =
|
[ActRemSevTstQst] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"" // Necessita traducció
|
"" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"" // Need Übersetzung
|
"" // Need Übersetzung
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Remove a self-assesment test question"
|
"Remove several test questions"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
""
|
"Eliminar varias preguntas de test"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"" // Besoin de traduction
|
"" // Besoin de traduction
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
|
@ -9554,7 +9554,49 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
"" // Precisa de tradução
|
"" // Precisa de tradução
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActShfTstQst] =
|
[ActReqRemOneTstQst] =
|
||||||
|
#if L==1 // ca
|
||||||
|
"" // Necessita traducció
|
||||||
|
#elif L==2 // de
|
||||||
|
"" // Need Übersetzung
|
||||||
|
#elif L==3 // en
|
||||||
|
"Request removing one test question"
|
||||||
|
#elif L==4 // es
|
||||||
|
"Solicitar eliminación de una pregunta de test"
|
||||||
|
#elif L==5 // fr
|
||||||
|
"" // Besoin de traduction
|
||||||
|
#elif L==6 // gn
|
||||||
|
"" // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"" // Bisogno di traduzione
|
||||||
|
#elif L==8 // pl
|
||||||
|
"" // Potrzebujesz tlumaczenie
|
||||||
|
#elif L==9 // pt
|
||||||
|
"" // Precisa de tradução
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
[ActRemOneTstQst] =
|
||||||
|
#if L==1 // ca
|
||||||
|
"" // Necessita traducció
|
||||||
|
#elif L==2 // de
|
||||||
|
"" // Need Übersetzung
|
||||||
|
#elif L==3 // en
|
||||||
|
"Remove a test question"
|
||||||
|
#elif L==4 // es
|
||||||
|
"Eliminar una pregunta de test"
|
||||||
|
#elif L==5 // fr
|
||||||
|
"" // Besoin de traduction
|
||||||
|
#elif L==6 // gn
|
||||||
|
"" // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"" // Bisogno di traduzione
|
||||||
|
#elif L==8 // pl
|
||||||
|
"" // Potrzebujesz tlumaczenie
|
||||||
|
#elif L==9 // pt
|
||||||
|
"" // Precisa de tradução
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
[ActChgShfTstQst] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"" // Necessita traducció
|
"" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
|
|
@ -2474,7 +2474,7 @@ static long TL_ReceivePost (void)
|
||||||
Content.Media.Width = TL_IMAGE_SAVED_MAX_WIDTH;
|
Content.Media.Width = TL_IMAGE_SAVED_MAX_WIDTH;
|
||||||
Content.Media.Height = TL_IMAGE_SAVED_MAX_HEIGHT;
|
Content.Media.Height = TL_IMAGE_SAVED_MAX_HEIGHT;
|
||||||
Content.Media.Quality = TL_IMAGE_SAVED_QUALITY;
|
Content.Media.Quality = TL_IMAGE_SAVED_QUALITY;
|
||||||
Med_GetMediaFromForm (-1,&Content.Media,NULL,NULL);
|
Med_GetMediaFromForm (-1L,-1L,-1,&Content.Media,NULL,NULL);
|
||||||
Ale_ShowAlerts (NULL);
|
Ale_ShowAlerts (NULL);
|
||||||
|
|
||||||
if (Content.Txt[0] || // Text not empty
|
if (Content.Txt[0] || // Text not empty
|
||||||
|
@ -3405,7 +3405,7 @@ static long TL_ReceiveComment (void)
|
||||||
Content.Media.Width = TL_IMAGE_SAVED_MAX_WIDTH;
|
Content.Media.Width = TL_IMAGE_SAVED_MAX_WIDTH;
|
||||||
Content.Media.Height = TL_IMAGE_SAVED_MAX_HEIGHT;
|
Content.Media.Height = TL_IMAGE_SAVED_MAX_HEIGHT;
|
||||||
Content.Media.Quality = TL_IMAGE_SAVED_QUALITY;
|
Content.Media.Quality = TL_IMAGE_SAVED_QUALITY;
|
||||||
Med_GetMediaFromForm (-1,&Content.Media,NULL,NULL);
|
Med_GetMediaFromForm (-1L,-1L,-1,&Content.Media,NULL,NULL);
|
||||||
Ale_ShowAlerts (NULL);
|
Ale_ShowAlerts (NULL);
|
||||||
|
|
||||||
if (Content.Txt[0] || // Text not empty
|
if (Content.Txt[0] || // Text not empty
|
||||||
|
|
Loading…
Reference in New Issue
Block a user