Version19.229

This commit is contained in:
acanas 2020-05-13 15:22:56 +02:00
parent 68a174d4d5
commit 2acc20731a
12 changed files with 178 additions and 3318 deletions

View File

@ -547,117 +547,6 @@ function readConnUsrsData () {
} }
} }
/*****************************************************************************/
/******* Automatic refresh of current exam event question using AJAX *********/
/*****************************************************************************/
// This function must be called from time to time
var objXMLHttpReqExaEvtStd = false;
function refreshExamEventStd () {
objXMLHttpReqExaEvtStd = AJAXCreateObject();
if (objXMLHttpReqExaEvtStd) {
var RefreshParams = RefreshParamNxtActExaEvt + '&' +
RefreshParamExaEvtCod + '&' +
RefreshParamIdSes;
objXMLHttpReqExaEvtStd.onreadystatechange = readExamEventStdData; // onreadystatechange must be lowercase
objXMLHttpReqExaEvtStd.open('POST',ActionAJAX,true);
objXMLHttpReqExaEvtStd.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
objXMLHttpReqExaEvtStd.send(RefreshParams);
}
}
function readExamEventStdData () {
if (objXMLHttpReqExaEvtStd.readyState == 4) { // Check if data have been received
if (objXMLHttpReqExaEvtStd.status == 200) {
var htmlExamEvent = objXMLHttpReqExaEvtStd.responseText; // Get HTML code
var div = document.getElementById('exam_event'); // Access to refreshable DIV
if (div)
div.innerHTML = htmlExamEvent; // Update DIV content
// Global delay variable is set initially in swad-core
setTimeout('refreshExamEventStd()',delayExamEvent);
}
}
}
/*****************************************************************************/
/** Automatic refresh of left part of current exam event question using AJAX **/
/*****************************************************************************/
//This function must be called from time to time
var objXMLHttpReqExaEvtTch = false;
function refreshExamEventTch () {
objXMLHttpReqExaEvtTch = AJAXCreateObject();
if (objXMLHttpReqExaEvtTch) {
var RefreshParams = RefreshParamNxtActExaEvt + '&' +
RefreshParamExaEvtCod + '&' +
RefreshParamIdSes;
objXMLHttpReqExaEvtTch.onreadystatechange = readExamEventTchData; // onreadystatechange must be lowercase
objXMLHttpReqExaEvtTch.open('POST',ActionAJAX,true);
objXMLHttpReqExaEvtTch.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
objXMLHttpReqExaEvtTch.send(RefreshParams);
}
}
function readExamEventTchData () {
if (objXMLHttpReqExaEvtTch.readyState == 4) { // Check if data have been received
if (objXMLHttpReqExaEvtTch.status == 200) {
var endOfId = objXMLHttpReqExaEvtTch.responseText.indexOf('|',0 ); // Get separator position
var endOfEv = objXMLHttpReqExaEvtTch.responseText.indexOf('|',endOfId + 1); // Get separator position
var id = objXMLHttpReqExaEvtTch.responseText.substring(0 ,endOfId); // Get id
var ev = objXMLHttpReqExaEvtTch.responseText.substring(endOfId + 1,endOfEv); // Get ev ('0' / '1')
var html = objXMLHttpReqExaEvtTch.responseText.substring(endOfEv + 1); // Get HTML code
var div = document.getElementById(id); // Access to refreshable DIV
if (div) {
div.innerHTML = html; // Update DIV content
if (parseInt(ev)) { // 0 / 1
// Scripts in div got via AJAX are not executed ==> execute them
evalScriptsInElem (div);
// Process mathematics; see http://docs.mathjax.org/en/latest/advanced/typeset.html
// MathJax.Hub.Queue(["Typeset",MathJax.Hub,div]); // old versions
MathJax.typeset();
}
}
// Global delay variable is set initially in swad-core
setTimeout('refreshExamEventTch()',delayExamEvent);
}
}
}
/*****************************************************************************/
/**************** Update exam event control area using AJAX ******************/
/*****************************************************************************/
// This function is called when user submit a form inside two parent divs
function updateExamEventTch (id,Params) {
var objXMLHttp = false;
objXMLHttp = AJAXCreateObject ();
if (objXMLHttp) {
/* Send request to server */
objXMLHttp.onreadystatechange = function() { // onreadystatechange must be lowercase
if (objXMLHttp.readyState == 4) { // Check if data have been received
if (objXMLHttp.status == 200)
if (id) {
var div = document.getElementById(id); // Access to DIV
if (div)
div.innerHTML = objXMLHttp.responseText; // Update DIV content
}
}
};
objXMLHttp.open('POST',ActionAJAX,true);
objXMLHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
objXMLHttp.send(Params);
}
}
/*****************************************************************************/ /*****************************************************************************/
/***************** Update exam print main area using AJAX ********************/ /***************** Update exam print main area using AJAX ********************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -477,13 +477,6 @@ CREATE TABLE IF NOT EXISTS exa_events (
StartTime DATETIME NOT NULL, StartTime DATETIME NOT NULL,
EndTime DATETIME NOT NULL, EndTime DATETIME NOT NULL,
Title VARCHAR(2047) NOT NULL, Title VARCHAR(2047) NOT NULL,
QstInd INT NOT NULL DEFAULT 0,
QstCod INT NOT NULL DEFAULT -1,
Showing ENUM('start','stem','answers','results','end') NOT NULL DEFAULT 'start',
Countdown INT NOT NULL DEFAULT -1,
NumCols INT NOT NULL DEFAULT 1,
ShowQstResults ENUM('N','Y') NOT NULL DEFAULT 'N',
ShowUsrResults ENUM('N','Y') NOT NULL DEFAULT 'N',
UNIQUE INDEX(EvtCod), UNIQUE INDEX(EvtCod),
INDEX(ExaCod)); INDEX(ExaCod));
-- --

View File

@ -688,21 +688,6 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActHidExaEvt ] = {1900,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_HideEvent ,NULL}, [ActHidExaEvt ] = {1900,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_HideEvent ,NULL},
[ActShoExaEvt ] = {1901,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_UnhideEvent ,NULL}, [ActShoExaEvt ] = {1901,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_UnhideEvent ,NULL},
[ActResExaEvt ] = {1854,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_ResumeEvent ,NULL},
[ActBckExaEvt ] = {1855,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_BackEvent ,NULL},
[ActPlyPauExaEvt ] = {1856,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_PlayPauseEvent ,NULL},
[ActFwdExaEvt ] = {1857,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_ForwardEvent ,NULL},
[ActChgNumColExaEvt ] = {1858,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_ChangeNumColsEvt ,NULL},
[ActChgVisResExaEvtQst] = {1859,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_ToggleVisibilResultsEvtQst,NULL},
[ActExaEvtCntDwn ] = {1860,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,ExaEvt_GetEventBeingPlayed ,ExaEvt_StartCountdown ,NULL},
[ActRefExaEvtTch ] = {1861,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,ExaEvt_GetEventBeingPlayed ,ExaEvt_RefreshEventTch ,NULL},
[ActJoiExaEvt ] = {1862,-1,TabUnk,ActSeeAllExa ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_JoinEventAsStd ,NULL},
[ActSeeExaEvtAnsQstStd] = {1863,-1,TabUnk,ActSeeAllExa ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_JoinEventAsStd ,NULL},
[ActRemExaEvtAnsQstStd] = {1864,-1,TabUnk,ActSeeAllExa ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_RemoveMyQuestionAnswer ,NULL},
[ActAnsExaEvtQstStd ] = {1865,-1,TabUnk,ActSeeAllExa ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_ReceiveQuestionAnswer ,NULL},
[ActRefExaEvtStd ] = {1866,-1,TabUnk,ActSeeAllExa ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,ExaEvt_GetEventBeingPlayed ,ExaEvt_RefreshEventStd ,NULL},
[ActSeeMyExaEvtResCrs] = {1867,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInCrs ,NULL}, [ActSeeMyExaEvtResCrs] = {1867,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInCrs ,NULL},
[ActSeeMyExaEvtResExa] = {1868,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInExa ,NULL}, [ActSeeMyExaEvtResExa] = {1868,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInExa ,NULL},
[ActSeeMyExaEvtResEvt] = {1869,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInEvt ,NULL}, [ActSeeMyExaEvtResEvt] = {1869,-1,TabUnk,ActSeeAllExa ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRes_ShowMyExaResultsInEvt ,NULL},
@ -3675,19 +3660,19 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActRemExaEvt, // #1851 ActRemExaEvt, // #1851
ActReqNewExaEvt, // #1852 ActReqNewExaEvt, // #1852
ActNewExaEvt, // #1853 ActNewExaEvt, // #1853
ActResExaEvt, // #1854 -1, // #1854 (obsolete action)
ActBckExaEvt, // #1855 -1, // #1855 (obsolete action)
ActPlyPauExaEvt, // #1856 -1, // #1856 (obsolete action)
ActFwdExaEvt, // #1857 -1, // #1857 (obsolete action)
ActChgNumColExaEvt, // #1858 -1, // #1858 (obsolete action)
ActChgVisResExaEvtQst, // #1859 -1, // #1859 (obsolete action)
ActExaEvtCntDwn, // #1860 -1, // #1860 (obsolete action)
ActRefExaEvtTch, // #1861 -1, // #1861 (obsolete action)
ActJoiExaEvt, // #1862 -1, // #1862 (obsolete action)
ActSeeExaEvtAnsQstStd, // #1863 -1, // #1863 (obsolete action)
ActRemExaEvtAnsQstStd, // #1864 -1, // #1864 (obsolete action)
ActAnsExaEvtQstStd, // #1865 -1, // #1865 (obsolete action)
ActRefExaEvtStd, // #1866 -1, // #1866 (obsolete action)
ActSeeMyExaEvtResCrs, // #1867 ActSeeMyExaEvtResCrs, // #1867
ActSeeMyExaEvtResExa, // #1868 ActSeeMyExaEvtResExa, // #1868
ActSeeMyExaEvtResEvt, // #1869 ActSeeMyExaEvtResEvt, // #1869

View File

@ -654,135 +654,121 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActHidExaEvt (ActChgCrsTT1stDay + 130) #define ActHidExaEvt (ActChgCrsTT1stDay + 130)
#define ActShoExaEvt (ActChgCrsTT1stDay + 131) #define ActShoExaEvt (ActChgCrsTT1stDay + 131)
#define ActResExaEvt (ActChgCrsTT1stDay + 132) #define ActSeeMyExaEvtResCrs (ActChgCrsTT1stDay + 132)
#define ActBckExaEvt (ActChgCrsTT1stDay + 133) #define ActSeeMyExaEvtResExa (ActChgCrsTT1stDay + 133)
#define ActPlyPauExaEvt (ActChgCrsTT1stDay + 134) #define ActSeeMyExaEvtResEvt (ActChgCrsTT1stDay + 134)
#define ActFwdExaEvt (ActChgCrsTT1stDay + 135) #define ActSeeOneExaEvtResMe (ActChgCrsTT1stDay + 135)
#define ActChgNumColExaEvt (ActChgCrsTT1stDay + 136)
#define ActChgVisResExaEvtQst (ActChgCrsTT1stDay + 137)
#define ActExaEvtCntDwn (ActChgCrsTT1stDay + 138)
#define ActRefExaEvtTch (ActChgCrsTT1stDay + 139)
#define ActJoiExaEvt (ActChgCrsTT1stDay + 140)
#define ActSeeExaEvtAnsQstStd (ActChgCrsTT1stDay + 141)
#define ActRemExaEvtAnsQstStd (ActChgCrsTT1stDay + 142)
#define ActAnsExaEvtQstStd (ActChgCrsTT1stDay + 143)
#define ActRefExaEvtStd (ActChgCrsTT1stDay + 144)
#define ActSeeMyExaEvtResCrs (ActChgCrsTT1stDay + 145) #define ActReqSeeAllExaEvtRes (ActChgCrsTT1stDay + 136)
#define ActSeeMyExaEvtResExa (ActChgCrsTT1stDay + 146) #define ActSeeAllExaEvtResCrs (ActChgCrsTT1stDay + 137)
#define ActSeeMyExaEvtResEvt (ActChgCrsTT1stDay + 147) #define ActSeeAllExaEvtResExa (ActChgCrsTT1stDay + 138)
#define ActSeeOneExaEvtResMe (ActChgCrsTT1stDay + 148) #define ActSeeAllExaEvtResEvt (ActChgCrsTT1stDay + 139)
#define ActSeeOneExaEvtResOth (ActChgCrsTT1stDay + 140)
#define ActReqSeeAllExaEvtRes (ActChgCrsTT1stDay + 149) #define ActChgVisResExaEvtUsr (ActChgCrsTT1stDay + 141)
#define ActSeeAllExaEvtResCrs (ActChgCrsTT1stDay + 150)
#define ActSeeAllExaEvtResExa (ActChgCrsTT1stDay + 151)
#define ActSeeAllExaEvtResEvt (ActChgCrsTT1stDay + 152)
#define ActSeeOneExaEvtResOth (ActChgCrsTT1stDay + 153)
#define ActChgVisResExaEvtUsr (ActChgCrsTT1stDay + 154) #define ActFrmNewExa (ActChgCrsTT1stDay + 142)
#define ActEdiOneExa (ActChgCrsTT1stDay + 143)
#define ActNewExa (ActChgCrsTT1stDay + 144)
#define ActChgExa (ActChgCrsTT1stDay + 145)
#define ActReqRemExa (ActChgCrsTT1stDay + 146)
#define ActRemExa (ActChgCrsTT1stDay + 147)
#define ActHidExa (ActChgCrsTT1stDay + 148)
#define ActShoExa (ActChgCrsTT1stDay + 149)
#define ActFrmNewExaSet (ActChgCrsTT1stDay + 150)
#define ActNewExaSet (ActChgCrsTT1stDay + 151)
#define ActReqRemExaSet (ActChgCrsTT1stDay + 152)
#define ActRemExaSet (ActChgCrsTT1stDay + 153)
#define ActUp_ExaSet (ActChgCrsTT1stDay + 154)
#define ActDwnExaSet (ActChgCrsTT1stDay + 155)
#define ActChgTitExaSet (ActChgCrsTT1stDay + 156)
#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 157)
#define ActFrmNewExa (ActChgCrsTT1stDay + 155) #define ActReqAddQstExaSet (ActChgCrsTT1stDay + 158)
#define ActEdiOneExa (ActChgCrsTT1stDay + 156) #define ActLstTstQstForSet (ActChgCrsTT1stDay + 159)
#define ActNewExa (ActChgCrsTT1stDay + 157) #define ActAddQstToExa (ActChgCrsTT1stDay + 160)
#define ActChgExa (ActChgCrsTT1stDay + 158) #define ActReqRemSetQst (ActChgCrsTT1stDay + 161)
#define ActReqRemExa (ActChgCrsTT1stDay + 159) #define ActRemExaQst (ActChgCrsTT1stDay + 162)
#define ActRemExa (ActChgCrsTT1stDay + 160)
#define ActHidExa (ActChgCrsTT1stDay + 161)
#define ActShoExa (ActChgCrsTT1stDay + 162)
#define ActFrmNewExaSet (ActChgCrsTT1stDay + 163)
#define ActNewExaSet (ActChgCrsTT1stDay + 164)
#define ActReqRemExaSet (ActChgCrsTT1stDay + 165)
#define ActRemExaSet (ActChgCrsTT1stDay + 166)
#define ActUp_ExaSet (ActChgCrsTT1stDay + 167)
#define ActDwnExaSet (ActChgCrsTT1stDay + 168)
#define ActChgTitExaSet (ActChgCrsTT1stDay + 169)
#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 170)
#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 171) #define ActSeeExaPrn (ActChgCrsTT1stDay + 163)
#define ActLstTstQstForSet (ActChgCrsTT1stDay + 172) #define ActAnsExaPrn (ActChgCrsTT1stDay + 164)
#define ActAddQstToExa (ActChgCrsTT1stDay + 173) #define ActEndExaPrn (ActChgCrsTT1stDay + 165)
#define ActReqRemSetQst (ActChgCrsTT1stDay + 174)
#define ActRemExaQst (ActChgCrsTT1stDay + 175)
#define ActSeeExaPrn (ActChgCrsTT1stDay + 176) #define ActSeeGam (ActChgCrsTT1stDay + 166)
#define ActAnsExaPrn (ActChgCrsTT1stDay + 177) #define ActReqRemMch (ActChgCrsTT1stDay + 167)
#define ActEndExaPrn (ActChgCrsTT1stDay + 178) #define ActRemMch (ActChgCrsTT1stDay + 168)
#define ActReqNewMch (ActChgCrsTT1stDay + 169)
#define ActNewMch (ActChgCrsTT1stDay + 170)
#define ActResMch (ActChgCrsTT1stDay + 171)
#define ActBckMch (ActChgCrsTT1stDay + 172)
#define ActPlyPauMch (ActChgCrsTT1stDay + 173)
#define ActFwdMch (ActChgCrsTT1stDay + 174)
#define ActChgNumColMch (ActChgCrsTT1stDay + 175)
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 176)
#define ActMchCntDwn (ActChgCrsTT1stDay + 177)
#define ActRefMchTch (ActChgCrsTT1stDay + 178)
#define ActSeeGam (ActChgCrsTT1stDay + 179) #define ActJoiMch (ActChgCrsTT1stDay + 179)
#define ActReqRemMch (ActChgCrsTT1stDay + 180) #define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 180)
#define ActRemMch (ActChgCrsTT1stDay + 181) #define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 181)
#define ActReqNewMch (ActChgCrsTT1stDay + 182) #define ActAnsMchQstStd (ActChgCrsTT1stDay + 182)
#define ActNewMch (ActChgCrsTT1stDay + 183) #define ActRefMchStd (ActChgCrsTT1stDay + 183)
#define ActResMch (ActChgCrsTT1stDay + 184)
#define ActBckMch (ActChgCrsTT1stDay + 185)
#define ActPlyPauMch (ActChgCrsTT1stDay + 186)
#define ActFwdMch (ActChgCrsTT1stDay + 187)
#define ActChgNumColMch (ActChgCrsTT1stDay + 188)
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 189)
#define ActMchCntDwn (ActChgCrsTT1stDay + 190)
#define ActRefMchTch (ActChgCrsTT1stDay + 191)
#define ActJoiMch (ActChgCrsTT1stDay + 192) #define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 184)
#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 193) #define ActSeeMyMchResGam (ActChgCrsTT1stDay + 185)
#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 194) #define ActSeeMyMchResMch (ActChgCrsTT1stDay + 186)
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 195) #define ActSeeOneMchResMe (ActChgCrsTT1stDay + 187)
#define ActRefMchStd (ActChgCrsTT1stDay + 196)
#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 197) #define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 188)
#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 198) #define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 189)
#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 199) #define ActSeeAllMchResGam (ActChgCrsTT1stDay + 190)
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 200) #define ActSeeAllMchResMch (ActChgCrsTT1stDay + 191)
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 192)
#define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 201) #define ActChgVisResMchUsr (ActChgCrsTT1stDay + 193)
#define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 202)
#define ActSeeAllMchResGam (ActChgCrsTT1stDay + 203)
#define ActSeeAllMchResMch (ActChgCrsTT1stDay + 204)
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 205)
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 206) #define ActFrmNewGam (ActChgCrsTT1stDay + 194)
#define ActEdiOneGam (ActChgCrsTT1stDay + 195)
#define ActNewGam (ActChgCrsTT1stDay + 196)
#define ActChgGam (ActChgCrsTT1stDay + 197)
#define ActReqRemGam (ActChgCrsTT1stDay + 198)
#define ActRemGam (ActChgCrsTT1stDay + 199)
#define ActHidGam (ActChgCrsTT1stDay + 200)
#define ActShoGam (ActChgCrsTT1stDay + 201)
#define ActAddOneGamQst (ActChgCrsTT1stDay + 202)
#define ActGamLstTstQst (ActChgCrsTT1stDay + 203)
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 204)
#define ActReqRemGamQst (ActChgCrsTT1stDay + 205)
#define ActRemGamQst (ActChgCrsTT1stDay + 206)
#define ActUp_GamQst (ActChgCrsTT1stDay + 207)
#define ActDwnGamQst (ActChgCrsTT1stDay + 208)
#define ActFrmNewGam (ActChgCrsTT1stDay + 207) #define ActSeeSvy (ActChgCrsTT1stDay + 209)
#define ActEdiOneGam (ActChgCrsTT1stDay + 208) #define ActAnsSvy (ActChgCrsTT1stDay + 210)
#define ActNewGam (ActChgCrsTT1stDay + 209) #define ActFrmNewSvy (ActChgCrsTT1stDay + 211)
#define ActChgGam (ActChgCrsTT1stDay + 210) #define ActEdiOneSvy (ActChgCrsTT1stDay + 212)
#define ActReqRemGam (ActChgCrsTT1stDay + 211) #define ActNewSvy (ActChgCrsTT1stDay + 213)
#define ActRemGam (ActChgCrsTT1stDay + 212) #define ActChgSvy (ActChgCrsTT1stDay + 214)
#define ActHidGam (ActChgCrsTT1stDay + 213) #define ActReqRemSvy (ActChgCrsTT1stDay + 215)
#define ActShoGam (ActChgCrsTT1stDay + 214) #define ActRemSvy (ActChgCrsTT1stDay + 216)
#define ActAddOneGamQst (ActChgCrsTT1stDay + 215) #define ActReqRstSvy (ActChgCrsTT1stDay + 217)
#define ActGamLstTstQst (ActChgCrsTT1stDay + 216) #define ActRstSvy (ActChgCrsTT1stDay + 218)
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 217) #define ActHidSvy (ActChgCrsTT1stDay + 219)
#define ActReqRemGamQst (ActChgCrsTT1stDay + 218) #define ActShoSvy (ActChgCrsTT1stDay + 220)
#define ActRemGamQst (ActChgCrsTT1stDay + 219) #define ActEdiOneSvyQst (ActChgCrsTT1stDay + 221)
#define ActUp_GamQst (ActChgCrsTT1stDay + 220) #define ActRcvSvyQst (ActChgCrsTT1stDay + 222)
#define ActDwnGamQst (ActChgCrsTT1stDay + 221) #define ActReqRemSvyQst (ActChgCrsTT1stDay + 223)
#define ActRemSvyQst (ActChgCrsTT1stDay + 224)
#define ActSeeSvy (ActChgCrsTT1stDay + 222) #define ActSeeOneExaAnn (ActChgCrsTT1stDay + 225)
#define ActAnsSvy (ActChgCrsTT1stDay + 223) #define ActSeeDatExaAnn (ActChgCrsTT1stDay + 226)
#define ActFrmNewSvy (ActChgCrsTT1stDay + 224) #define ActEdiExaAnn (ActChgCrsTT1stDay + 227)
#define ActEdiOneSvy (ActChgCrsTT1stDay + 225) #define ActRcvExaAnn (ActChgCrsTT1stDay + 228)
#define ActNewSvy (ActChgCrsTT1stDay + 226) #define ActPrnExaAnn (ActChgCrsTT1stDay + 229)
#define ActChgSvy (ActChgCrsTT1stDay + 227) #define ActReqRemExaAnn (ActChgCrsTT1stDay + 230)
#define ActReqRemSvy (ActChgCrsTT1stDay + 228) #define ActRemExaAnn (ActChgCrsTT1stDay + 231)
#define ActRemSvy (ActChgCrsTT1stDay + 229) #define ActHidExaAnn (ActChgCrsTT1stDay + 232)
#define ActReqRstSvy (ActChgCrsTT1stDay + 230) #define ActShoExaAnn (ActChgCrsTT1stDay + 233)
#define ActRstSvy (ActChgCrsTT1stDay + 231)
#define ActHidSvy (ActChgCrsTT1stDay + 232)
#define ActShoSvy (ActChgCrsTT1stDay + 233)
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 234)
#define ActRcvSvyQst (ActChgCrsTT1stDay + 235)
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 236)
#define ActRemSvyQst (ActChgCrsTT1stDay + 237)
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 238)
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 239)
#define ActEdiExaAnn (ActChgCrsTT1stDay + 240)
#define ActRcvExaAnn (ActChgCrsTT1stDay + 241)
#define ActPrnExaAnn (ActChgCrsTT1stDay + 242)
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 243)
#define ActRemExaAnn (ActChgCrsTT1stDay + 244)
#define ActHidExaAnn (ActChgCrsTT1stDay + 245)
#define ActShoExaAnn (ActChgCrsTT1stDay + 246)
/*****************************************************************************/ /*****************************************************************************/
/******************************** Files tab **********************************/ /******************************** Files tab **********************************/

View File

@ -548,10 +548,14 @@ 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.228.2 (2020-05-13)" #define Log_PLATFORM_VERSION "SWAD 19.229 (2020-05-13)"
#define CSS_FILE "swad19.217.css" #define CSS_FILE "swad19.217.css"
#define JS_FILE "swad19.223.js" #define JS_FILE "swad19.223.js"
/* /*
Version 19.229: May 13, 2020 Removed unused code in exam events. (301163 lines)
1 change necessary in database:
ALTER TABLE exa_events DROP COLUMN QstInd,DROP COLUMN QstCod,DROP COLUMN Showing,DROP COLUMN Countdown,DROP COLUMN NumCols,DROP COLUMN ShowQstResults;
Version 19.228.2: May 13, 2020 Code refactoring in exam prints. (303829 lines) Version 19.228.2: May 13, 2020 Code refactoring in exam prints. (303829 lines)
Version 19.228.1: May 13, 2020 Code refactoring in exam prints. (303828 lines) Version 19.228.1: May 13, 2020 Code refactoring in exam prints. (303828 lines)
Version 19.228: May 13, 2020 Code refactoring and bug fixing in exam prints. (303837 lines) Version 19.228: May 13, 2020 Code refactoring and bug fixing in exam prints. (303837 lines)

View File

@ -1040,25 +1040,19 @@ mysql> DESCRIBE exa_groups;
/***** Table exa_events *****/ /***** Table exa_events *****/
/* /*
mysql> DESCRIBE exa_events; mysql> DESCRIBE exa_events;
+----------------+------------------------------------------------+------+-----+---------+----------------+ +----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+----------------+------------------------------------------------+------+-----+---------+----------------+ +----------------+---------------+------+-----+---------+----------------+
| EvtCod | int(11) | NO | PRI | NULL | auto_increment | | EvtCod | int(11) | NO | PRI | NULL | auto_increment |
| ExaCod | int(11) | NO | MUL | NULL | | | ExaCod | int(11) | NO | MUL | NULL | |
| Hidden | enum('N','Y') | NO | | N | | | Hidden | enum('N','Y') | NO | | N | |
| UsrCod | int(11) | NO | | NULL | | | UsrCod | int(11) | NO | | NULL | |
| StartTime | datetime | NO | | NULL | | | StartTime | datetime | NO | | NULL | |
| EndTime | datetime | NO | | NULL | | | EndTime | datetime | NO | | NULL | |
| Title | varchar(2047) | NO | | NULL | | | Title | varchar(2047) | NO | | NULL | |
| QstInd | int(11) | NO | | 0 | | | ShowUsrResults | enum('N','Y') | NO | | N | |
| QstCod | int(11) | NO | | -1 | | +----------------+---------------+------+-----+---------+----------------+
| Showing | enum('start','stem','answers','results','end') | NO | | start | | 8 rows in set (0.00 sec)
| Countdown | int(11) | NO | | -1 | |
| NumCols | int(11) | NO | | 1 | |
| ShowQstResults | enum('N','Y') | NO | | N | |
| ShowUsrResults | enum('N','Y') | NO | | N | |
+----------------+------------------------------------------------+------+-----+---------+----------------+
14 rows in set (0.00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS exa_events (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS exa_events ("
"EvtCod INT NOT NULL AUTO_INCREMENT," "EvtCod INT NOT NULL AUTO_INCREMENT,"
@ -1068,12 +1062,6 @@ mysql> DESCRIBE exa_events;
"StartTime DATETIME NOT NULL," "StartTime DATETIME NOT NULL,"
"EndTime DATETIME NOT NULL," "EndTime DATETIME NOT NULL,"
"Title VARCHAR(2047) NOT NULL," // ExaEvt_MAX_BYTES_TITLE "Title VARCHAR(2047) NOT NULL," // ExaEvt_MAX_BYTES_TITLE
"QstInd INT NOT NULL DEFAULT 0,"
"QstCod INT NOT NULL DEFAULT -1,"
"Showing ENUM('start','stem','answers','results','end') NOT NULL DEFAULT 'start',"
"Countdown INT NOT NULL DEFAULT -1,"
"NumCols INT NOT NULL DEFAULT 1,"
"ShowQstResults ENUM('N','Y') NOT NULL DEFAULT 'N',"
"ShowUsrResults ENUM('N','Y') NOT NULL DEFAULT 'N'," "ShowUsrResults ENUM('N','Y') NOT NULL DEFAULT 'N',"
"UNIQUE INDEX(EvtCod)," "UNIQUE INDEX(EvtCod),"
"INDEX(ExaCod))"); "INDEX(ExaCod))");

File diff suppressed because it is too large Load Diff

View File

@ -48,8 +48,6 @@ struct ExaEvt_UsrAnswer
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
long ExaEvt_GetEvtCodBeingPlayed (void);
void ExaEvt_ResetEvent (struct ExaEvt_Event *Event); void ExaEvt_ResetEvent (struct ExaEvt_Event *Event);
void ExaEvt_ListEvents (struct Exa_Exams *Exams, void ExaEvt_ListEvents (struct Exa_Exams *Exams,
@ -79,44 +77,16 @@ long ExaEvt_GetParamEvtCod (void);
void ExaEvt_PutButtonNewEvent (struct Exa_Exams *Exams,long ExaCod); void ExaEvt_PutButtonNewEvent (struct Exa_Exams *Exams,long ExaCod);
void ExaEvt_RequestCreatOrEditEvent (void); void ExaEvt_RequestCreatOrEditEvent (void);
void ExaEvt_ReceiveFormEvent (void); void ExaEvt_ReceiveFormEvent (void);
void ExaEvt_ResumeEvent (void);
void ExaEvt_GetIndexes (long EvtCod,unsigned QstInd,
unsigned Indexes[Tst_MAX_OPTIONS_PER_QUESTION]);
void ExaEvt_RemoveGroup (long GrpCod); void ExaEvt_RemoveGroup (long GrpCod);
void ExaEvt_RemoveGroupsOfType (long GrpTypCod); void ExaEvt_RemoveGroupsOfType (long GrpTypCod);
void ExaEvt_PlayPauseEvent (void);
void ExaEvt_ChangeNumColsEvt (void);
void ExaEvt_ToggleVisibilResultsEvtQst (void);
void ExaEvt_BackEvent (void);
void ExaEvt_ForwardEvent (void);
unsigned ExaEvt_GetNumEventsInExam (long ExaCod); unsigned ExaEvt_GetNumEventsInExam (long ExaCod);
unsigned ExaEvt_GetNumOpenEventsInExam (long ExaCod); unsigned ExaEvt_GetNumOpenEventsInExam (long ExaCod);
bool ExaEvt_CheckIfICanPlayThisEventBasedOnGrps (const struct ExaEvt_Event *Event); bool ExaEvt_CheckIfICanPlayThisEventBasedOnGrps (const struct ExaEvt_Event *Event);
void ExaEvt_WriteChoiceAnsViewEvent (const struct ExaEvt_Event *Event,
const struct Tst_Question *Question,
const char *Class,bool ShowResult);
bool ExaEvt_RegisterMeAsParticipantInEvent (struct ExaEvt_Event *Event);
void ExaEvt_GetEventBeingPlayed (void);
void ExaEvt_JoinEventAsStd (void);
void ExaEvt_RemoveMyQuestionAnswer (void);
void ExaEvt_StartCountdown (void);
void ExaEvt_RefreshEventTch (void);
void ExaEvt_RefreshEventStd (void);
void ExaEvt_GetQstAnsFromDB (long EvtCod,long UsrCod,unsigned QstInd, void ExaEvt_GetQstAnsFromDB (long EvtCod,long UsrCod,unsigned QstInd,
struct ExaEvt_UsrAnswer *UsrAnswer); struct ExaEvt_UsrAnswer *UsrAnswer);
void ExaEvt_ReceiveQuestionAnswer (void);
unsigned ExaEvt_GetNumUsrsWhoAnsweredQst (long EvtCod,unsigned QstInd);
unsigned ExaEvt_GetNumUsrsWhoHaveChosenAns (long EvtCod,unsigned QstInd,unsigned AnsInd);
void ExaEvt_DrawBarNumUsrs (unsigned NumRespondersAns,unsigned NumRespondersQst,bool Correct);
#endif #endif

View File

@ -1444,7 +1444,7 @@ static bool ExaRes_CheckIfICanSeeEventResult (struct ExaEvt_Event *Event,long Us
{ {
case Rol_STD: case Rol_STD:
ItsMe = Usr_ItsMe (UsrCod); ItsMe = Usr_ItsMe (UsrCod);
if (ItsMe && Event->Status.ShowUsrResults) if (ItsMe && Event->ShowUsrResults)
return ExaEvt_CheckIfICanPlayThisEventBasedOnGrps (Event); return ExaEvt_CheckIfICanPlayThisEventBasedOnGrps (Event);
return false; return false;
case Rol_NET: case Rol_NET:

View File

@ -127,17 +127,6 @@ struct ExaSet_Set
char Title[ExaSet_MAX_BYTES_TITLE + 1]; // Title of the set char Title[ExaSet_MAX_BYTES_TITLE + 1]; // Title of the set
}; };
#define ExaEvt_NUM_SHOWING 5
typedef enum
{
ExaEvt_START, // Start: don't show anything
ExaEvt_STEM, // Showing only the question stem
ExaEvt_ANSWERS, // Showing the question stem and the answers
ExaEvt_RESULTS, // Showing the results
ExaEvt_END, // End: don't show anything
} ExaEvt_Showing_t;
#define ExaEvt_SHOWING_DEFAULT ExaEvt_START
struct ExaEvt_Event struct ExaEvt_Event
{ {
long EvtCod; long EvtCod;
@ -147,21 +136,7 @@ struct ExaEvt_Event
char Title[ExaEvt_MAX_BYTES_TITLE + 1]; char Title[ExaEvt_MAX_BYTES_TITLE + 1];
bool Hidden; bool Hidden;
bool Open; // If now is between start and end dates bool Open; // If now is between start and end dates
struct bool ShowUsrResults; // Show exam with results of all questions for the student
{
unsigned QstInd; // 0 means that the exam has not started. First question has index 1.
long QstCod;
time_t QstStartTimeUTC;
ExaEvt_Showing_t Showing; // What is shown on teacher's screen
long Countdown; // > 0 ==> countdown in progress
// = 0 ==> countdown over ==> go to next step
// < 0 ==> no countdown at this time
unsigned NumCols; // Number of columns for answers on teacher's screen
bool ShowQstResults; // Show global results of current question while playing
bool ShowUsrResults; // Show exam with results of all questions for the student
bool Happening; // Is being played now?
unsigned NumParticipants;
} Status; // Status related to event playing
}; };
#endif #endif

View File

@ -282,16 +282,6 @@ void Lay_WriteStartOfPage (void)
HTM_Txt ("<body onload=\"init();\""); HTM_Txt ("<body onload=\"init();\"");
switch (Gbl.Action.Act) switch (Gbl.Action.Act)
{ {
case ActNewExaEvt:
case ActResExaEvt:
case ActBckExaEvt:
case ActPlyPauExaEvt:
case ActFwdExaEvt:
case ActChgNumColExaEvt:
case ActChgVisResExaEvtQst:
case ActExaEvtCntDwn:
HTM_Txt (" class=\"EXA_BG\"");
break;
case ActNewMch: case ActNewMch:
case ActResMch: case ActResMch:
case ActBckMch: case ActBckMch:
@ -764,8 +754,6 @@ static void Lay_WriteScriptInit (void)
bool RefreshConnected; bool RefreshConnected;
bool RefreshLastClicks = false; bool RefreshLastClicks = false;
bool RefreshNewTimeline = false; bool RefreshNewTimeline = false;
bool RefreshExamEventStd = false;
bool RefreshExamEventTch = false;
bool RefreshMatchStd = false; bool RefreshMatchStd = false;
bool RefreshMatchTch = false; bool RefreshMatchTch = false;
@ -790,24 +778,6 @@ static void Lay_WriteScriptInit (void)
RefreshNewTimeline = true; RefreshNewTimeline = true;
break; break;
/* Exam event */
case ActJoiExaEvt:
case ActSeeExaEvtAnsQstStd:
case ActRemExaEvtAnsQstStd:
case ActAnsExaEvtQstStd:
RefreshExamEventStd = true;
break;
case ActNewExaEvt:
case ActResExaEvt:
case ActBckExaEvt:
case ActPlyPauExaEvt:
case ActFwdExaEvt:
case ActChgNumColExaEvt:
case ActChgVisResExaEvtQst:
case ActExaEvtCntDwn:
RefreshExamEventTch = true;
break;
/* Match */ /* Match */
case ActJoiMch: case ActJoiMch:
case ActSeeMchAnsQstStd: case ActSeeMchAnsQstStd:
@ -836,10 +806,6 @@ static void Lay_WriteScriptInit (void)
if (RefreshNewTimeline) // Refresh new timeline via AJAX if (RefreshNewTimeline) // Refresh new timeline via AJAX
HTM_TxtF ("\tvar delayNewTL = %lu;\n",Cfg_TIME_TO_REFRESH_TIMELINE); HTM_TxtF ("\tvar delayNewTL = %lu;\n",Cfg_TIME_TO_REFRESH_TIMELINE);
else if (RefreshExamEventStd) // Refresh exam event via AJAX
HTM_TxtF ("\tvar delayExamEvent = %lu;\n",Cfg_TIME_TO_REFRESH_MATCH_STD);
else if (RefreshExamEventTch) // Refresh exam event via AJAX
HTM_TxtF ("\tvar delayExamEvent = %lu;\n",Cfg_TIME_TO_REFRESH_MATCH_TCH);
else if (RefreshMatchStd) // Refresh match via AJAX else if (RefreshMatchStd) // Refresh match via AJAX
HTM_TxtF ("\tvar delayMatch = %lu;\n",Cfg_TIME_TO_REFRESH_MATCH_STD); HTM_TxtF ("\tvar delayMatch = %lu;\n",Cfg_TIME_TO_REFRESH_MATCH_STD);
else if (RefreshMatchTch) // Refresh match via AJAX else if (RefreshMatchTch) // Refresh match via AJAX
@ -862,10 +828,6 @@ static void Lay_WriteScriptInit (void)
Cfg_TIME_TO_REFRESH_LAST_CLICKS); Cfg_TIME_TO_REFRESH_LAST_CLICKS);
else if (RefreshNewTimeline) // Refresh timeline via AJAX else if (RefreshNewTimeline) // Refresh timeline via AJAX
HTM_Txt ("\tsetTimeout(\"refreshNewTL()\",delayNewTL);\n"); HTM_Txt ("\tsetTimeout(\"refreshNewTL()\",delayNewTL);\n");
else if (RefreshExamEventStd) // Refresh exam event for a student via AJAX
HTM_Txt ("\tsetTimeout(\"refreshExamEventStd()\",delayExamEvent);\n");
else if (RefreshExamEventTch) // Refresh exam event for a teacher via AJAX
HTM_Txt ("\tsetTimeout(\"refreshExamEventTch()\",delayExamEvent);\n");
else if (RefreshMatchStd) // Refresh match for a student via AJAX else if (RefreshMatchStd) // Refresh match for a student via AJAX
HTM_Txt ("\tsetTimeout(\"refreshMatchStd()\",delayMatch);\n"); HTM_Txt ("\tsetTimeout(\"refreshMatchStd()\",delayMatch);\n");
else if (RefreshMatchTch) // Refresh match for a teacher via AJAX else if (RefreshMatchTch) // Refresh match for a teacher via AJAX
@ -947,34 +909,6 @@ static void Lay_WriteScriptParamsAJAX (void)
Act_GetActCod (ActRefOldSocPubUsr), Act_GetActCod (ActRefOldSocPubUsr),
Gbl.Usrs.Other.UsrDat.EncryptedUsrCod); Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break; break;
/* Parameters related with exam event refreshing (for students) */
case ActJoiExaEvt:
case ActSeeExaEvtAnsQstStd:
case ActRemExaEvtAnsQstStd:
case ActAnsExaEvtQstStd:
// Refresh parameters
HTM_TxtF ("var RefreshParamNxtActExaEvt = \"act=%ld\";\n"
"var RefreshParamExaEvtCod = \"EvtCod=%ld\";\n",
Act_GetActCod (ActRefExaEvtStd),
ExaEvt_GetEvtCodBeingPlayed ());
break;
/* Parameters related with exam event refreshing (for teachers) */
case ActNewExaEvt:
case ActResExaEvt:
case ActBckExaEvt:
case ActPlyPauExaEvt:
case ActFwdExaEvt:
case ActChgNumColExaEvt:
case ActChgVisResExaEvtQst:
case ActExaEvtCntDwn:
// Handle keys in keyboard/presenter
HTM_Txt ("document.addEventListener(\"keydown\",handleMatchKeys);\n");
// Refresh parameters
HTM_TxtF ("var RefreshParamNxtActExaEvt = \"act=%ld\";\n"
"var RefreshParamExaEvtCod = \"EvtCod=%ld\";\n",
Act_GetActCod (ActRefExaEvtTch),
ExaEvt_GetEvtCodBeingPlayed ());
break;
/* Parameters related with match refreshing (for students) */ /* Parameters related with match refreshing (for students) */
case ActJoiMch: case ActJoiMch:
case ActSeeMchAnsQstStd: case ActSeeMchAnsQstStd:

View File

@ -10245,279 +10245,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie "" // Potrzebujesz tlumaczenie
#elif L==9 // pt #elif L==9 // pt
"" // Precisa de tradução "" // Precisa de tradução
#endif
,
[ActResExaEvt] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActBckExaEvt] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActPlyPauExaEvt] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActFwdExaEvt] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActChgNumColExaEvt] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActChgVisResExaEvtQst] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActExaEvtCntDwn] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActRefExaEvtTch] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActJoiExaEvt] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActSeeExaEvtAnsQstStd] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActRemExaEvtAnsQstStd] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActAnsExaEvtQstStd] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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
,
[ActRefExaEvtStd] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
""
#elif L==4 // es
""
#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 #endif
, ,
[ActSeeMyExaEvtResCrs] = [ActSeeMyExaEvtResCrs] =