mirror of https://github.com/acanas/swad-core.git
Version 15.179
This commit is contained in:
parent
b7fb17f33d
commit
2d2dd7bb9e
|
@ -755,7 +755,8 @@ Assessment:
|
|||
617. ActLstTstQst List for edition several self-assessment test questions
|
||||
618. ActRcvTstQst Receive a question of self-assessment
|
||||
619. ActShfTstQst Change shuffle of of a question of self-assessment
|
||||
620. ActRemTstQst Remove a question of self-assessment
|
||||
NEW 620. ActReqRemTstQst Request removing a self-assesment test question
|
||||
620. ActRemTstQst Remove a self-assesment test question
|
||||
621. ActCfgTst Request renaming of tags of questions of self-assesment
|
||||
622. ActEnableTag Enable a tag
|
||||
623. ActDisableTag Disable a tag
|
||||
|
@ -1336,7 +1337,7 @@ NEW 1071. ActFrmLogIn Show landing page (forms to log in and to create a new
|
|||
1148. ActReqDatBrf Ask for metadata of a file in the briefcase
|
||||
1149. ActChgDatBrf Change metadata of a file in the briefcase
|
||||
1150. ActDowBrf Download a file in the briefcase
|
||||
1151. ActAskRemOldBrf Ask for removing old files in the briefcase
|
||||
1151. ActReqRemOldBrf Ask for removing old files in the briefcase
|
||||
1152. ActRemOldBrf Remove old files in the briefcase
|
||||
*/
|
||||
|
||||
|
@ -2066,6 +2067,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActImpTstQst */{1008,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,TsI_ImportQstsFromXML ,NULL},
|
||||
/* ActLstTstQst */{ 132,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_ListQuestionsToEdit ,NULL},
|
||||
/* ActRcvTstQst */{ 126,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_DATA,Act_MAIN_WINDOW,NULL ,Tst_ReceiveQst ,NULL},
|
||||
/* ActReqRemTstQst */{1523,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_RequestRemoveQst ,NULL},
|
||||
/* ActRemTstQst */{ 133,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_RemoveQst ,NULL},
|
||||
/* ActShfTstQst */{ 455,-1,TabAss,ActReqTst ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Tst_ChangeShuffleQst ,NULL},
|
||||
|
||||
|
@ -2706,7 +2708,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActReqDatBrf */{1047,-1,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileMetadata ,NULL},
|
||||
/* ActChgDatBrf */{1048,-1,TabPrf,ActAdmBrf ,0x1FC,0x1FC,0x1FC,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ChgFileMetadata ,NULL},
|
||||
/* ActDowBrf */{1123,-1,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL},
|
||||
/* ActAskRemOldBrf */{1488,-1,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_AskRemoveOldFiles ,NULL},
|
||||
/* ActReqRemOldBrf */{1488,-1,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_AskRemoveOldFiles ,NULL},
|
||||
/* ActRemOldBrf */{1489,-1,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_RemoveOldFiles ,NULL},
|
||||
};
|
||||
|
||||
|
@ -4203,7 +4205,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActChgCal1stDay, // #1485
|
||||
ActChgCrsTT1stDay, // #1486
|
||||
ActChgMyTT1stDay, // #1487
|
||||
ActAskRemOldBrf, // #1488
|
||||
ActReqRemOldBrf, // #1488
|
||||
ActRemOldBrf, // #1489
|
||||
ActSeeSocTmlGbl, // #1490
|
||||
-1, // #1491 (obsolete action)
|
||||
|
@ -4238,6 +4240,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActSeeSocPrf, // #1520
|
||||
ActFrmLogIn, // #1521
|
||||
ActUpdSignUpReq, // #1522
|
||||
ActReqRemTstQst, // #1523
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
157
swad_action.h
157
swad_action.h
|
@ -71,9 +71,9 @@ typedef enum
|
|||
|
||||
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||
|
||||
#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+205+183+144+172+36+27+83)
|
||||
#define Act_NUM_ACTIONS (1+9+51+15+90+70+67+205+184+144+172+36+27+83)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1522
|
||||
#define Act_MAX_ACTION_COD 1523
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||
|
||||
|
@ -782,90 +782,91 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActImpTstQst (ActRcvRchTxtCrsLnk+106)
|
||||
#define ActLstTstQst (ActRcvRchTxtCrsLnk+107)
|
||||
#define ActRcvTstQst (ActRcvRchTxtCrsLnk+108)
|
||||
#define ActRemTstQst (ActRcvRchTxtCrsLnk+109)
|
||||
#define ActShfTstQst (ActRcvRchTxtCrsLnk+110)
|
||||
#define ActCfgTst (ActRcvRchTxtCrsLnk+111)
|
||||
#define ActEnableTag (ActRcvRchTxtCrsLnk+112)
|
||||
#define ActDisableTag (ActRcvRchTxtCrsLnk+113)
|
||||
#define ActRenTag (ActRcvRchTxtCrsLnk+114)
|
||||
#define ActRcvCfgTst (ActRcvRchTxtCrsLnk+115)
|
||||
#define ActReqRemTstQst (ActRcvRchTxtCrsLnk+109)
|
||||
#define ActRemTstQst (ActRcvRchTxtCrsLnk+110)
|
||||
#define ActShfTstQst (ActRcvRchTxtCrsLnk+111)
|
||||
#define ActCfgTst (ActRcvRchTxtCrsLnk+112)
|
||||
#define ActEnableTag (ActRcvRchTxtCrsLnk+113)
|
||||
#define ActDisableTag (ActRcvRchTxtCrsLnk+114)
|
||||
#define ActRenTag (ActRcvRchTxtCrsLnk+115)
|
||||
#define ActRcvCfgTst (ActRcvRchTxtCrsLnk+116)
|
||||
|
||||
#define ActReqSeeMyTstExa (ActRcvRchTxtCrsLnk+116)
|
||||
#define ActSeeMyTstExa (ActRcvRchTxtCrsLnk+117)
|
||||
#define ActSeeOneTstExaMe (ActRcvRchTxtCrsLnk+118)
|
||||
#define ActReqSeeUsrTstExa (ActRcvRchTxtCrsLnk+119)
|
||||
#define ActSeeUsrTstExa (ActRcvRchTxtCrsLnk+120)
|
||||
#define ActSeeOneTstExaOth (ActRcvRchTxtCrsLnk+121)
|
||||
#define ActReqSeeMyTstExa (ActRcvRchTxtCrsLnk+117)
|
||||
#define ActSeeMyTstExa (ActRcvRchTxtCrsLnk+118)
|
||||
#define ActSeeOneTstExaMe (ActRcvRchTxtCrsLnk+119)
|
||||
#define ActReqSeeUsrTstExa (ActRcvRchTxtCrsLnk+120)
|
||||
#define ActSeeUsrTstExa (ActRcvRchTxtCrsLnk+121)
|
||||
#define ActSeeOneTstExaOth (ActRcvRchTxtCrsLnk+122)
|
||||
|
||||
#define ActPrnCal (ActRcvRchTxtCrsLnk+122)
|
||||
#define ActChgCal1stDay (ActRcvRchTxtCrsLnk+123)
|
||||
#define ActPrnCal (ActRcvRchTxtCrsLnk+123)
|
||||
#define ActChgCal1stDay (ActRcvRchTxtCrsLnk+124)
|
||||
|
||||
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+124)
|
||||
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+125)
|
||||
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+126)
|
||||
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+127)
|
||||
#define ActEdiExaAnn (ActRcvRchTxtCrsLnk+125)
|
||||
#define ActRcvExaAnn (ActRcvRchTxtCrsLnk+126)
|
||||
#define ActPrnExaAnn (ActRcvRchTxtCrsLnk+127)
|
||||
#define ActRemExaAnn (ActRcvRchTxtCrsLnk+128)
|
||||
|
||||
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+128)
|
||||
#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+129)
|
||||
|
||||
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+129)
|
||||
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+130)
|
||||
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
|
||||
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
|
||||
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+133)
|
||||
#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+130)
|
||||
#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+131)
|
||||
#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+132)
|
||||
#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+133)
|
||||
#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+134)
|
||||
|
||||
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+134)
|
||||
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+135)
|
||||
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
|
||||
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
|
||||
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+138)
|
||||
#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+135)
|
||||
#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+136)
|
||||
#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+137)
|
||||
#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+138)
|
||||
#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+139)
|
||||
|
||||
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+139)
|
||||
#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+140)
|
||||
|
||||
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+140)
|
||||
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+141)
|
||||
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+142)
|
||||
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+143)
|
||||
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+144)
|
||||
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+145)
|
||||
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+146)
|
||||
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+147)
|
||||
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+148)
|
||||
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+149)
|
||||
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+150)
|
||||
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+151)
|
||||
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+152)
|
||||
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+153)
|
||||
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+154)
|
||||
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+155)
|
||||
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+156)
|
||||
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+157)
|
||||
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+158)
|
||||
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+159)
|
||||
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+160)
|
||||
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+161)
|
||||
#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+141)
|
||||
#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+142)
|
||||
#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+143)
|
||||
#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+144)
|
||||
#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+145)
|
||||
#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+146)
|
||||
#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+147)
|
||||
#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+148)
|
||||
#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+149)
|
||||
#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+150)
|
||||
#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+151)
|
||||
#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+152)
|
||||
#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+153)
|
||||
#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+154)
|
||||
#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+155)
|
||||
#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+156)
|
||||
#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+157)
|
||||
#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+158)
|
||||
#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+159)
|
||||
#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+160)
|
||||
#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+161)
|
||||
#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+162)
|
||||
|
||||
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+162)
|
||||
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+163)
|
||||
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+164)
|
||||
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+165)
|
||||
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+166)
|
||||
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+167)
|
||||
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+168)
|
||||
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+169)
|
||||
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+170)
|
||||
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+171)
|
||||
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+172)
|
||||
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+173)
|
||||
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+174)
|
||||
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+175)
|
||||
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+176)
|
||||
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+177)
|
||||
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+178)
|
||||
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+179)
|
||||
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+180)
|
||||
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+181)
|
||||
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+182)
|
||||
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+183)
|
||||
#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+163)
|
||||
#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+164)
|
||||
#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+165)
|
||||
#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+166)
|
||||
#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+167)
|
||||
#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+168)
|
||||
#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+169)
|
||||
#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+170)
|
||||
#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+171)
|
||||
#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+172)
|
||||
#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+173)
|
||||
#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+174)
|
||||
#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+175)
|
||||
#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+176)
|
||||
#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+177)
|
||||
#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+178)
|
||||
#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+179)
|
||||
#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+180)
|
||||
#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+181)
|
||||
#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+182)
|
||||
#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+183)
|
||||
#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+184)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************* Users tab ***********************************/
|
||||
|
@ -1392,7 +1393,7 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActChgDatBrf (ActSeeAllStaCrs+80)
|
||||
#define ActDowBrf (ActSeeAllStaCrs+81)
|
||||
|
||||
#define ActAskRemOldBrf (ActSeeAllStaCrs+82)
|
||||
#define ActReqRemOldBrf (ActSeeAllStaCrs+82)
|
||||
#define ActRemOldBrf (ActSeeAllStaCrs+83)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -126,22 +126,27 @@
|
|||
// TODO: Do not show e-mails of administrators and teachers in lists openly
|
||||
// TODO: Fix bug in marks reported by Francisco Ocaña
|
||||
// TODO: In Statistics > Degrees, show only degrees with students
|
||||
// TODO: Change layout of confirm / reject incription. Use green and red buttons
|
||||
// TODO: Change layout of confirm / reject registration. Use green and red buttons
|
||||
|
||||
// TODO: Ask for confirmation when removing a test question
|
||||
// TODO: When editing an existing question, put upper left contextual link to remove the question
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.178.2 (2016-04-05)"
|
||||
#define CSS_FILE "swad15.178.1.css"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.179 (2016-04-05)"
|
||||
#define CSS_FILE "swad15.178.2.css"
|
||||
#define JS_FILE "swad15.178.2.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 15.178.2: Apr 04, 2016 Changes in JavaScript related to images in test questions. (198265 lines)
|
||||
Version 15.179: Apr 05, 2016 Fixed bug when getting a parameter.
|
||||
Ask for confirmation when removing a test question. (198355 lines)
|
||||
1 change necessary in database:
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1523','es','N','Preguntar si eliminar pregunta test');
|
||||
|
||||
Version 15.178.2: Apr 05, 2016 Changes in JavaScript related to images in test questions. (198265 lines)
|
||||
Version 15.178.1: Apr 04, 2016 Changes in CSS related to images in test questions. (198240 lines)
|
||||
Version 15.178: Apr 04, 2016 Code refactoring related to images in test questions. (198244 lines)
|
||||
5 changes necessary in database:
|
||||
|
|
|
@ -2074,7 +2074,7 @@ void Brw_GetParAndInitFileBrowser (void)
|
|||
case ActReqDatBrf:
|
||||
case ActChgDatBrf:
|
||||
case ActDowBrf:
|
||||
case ActAskRemOldBrf: // Ask for removing old files in briefcase
|
||||
case ActReqRemOldBrf: // Ask for removing old files in briefcase
|
||||
case ActRemOldBrf: // Remove old files in briefcase
|
||||
Gbl.FileBrowser.Type = Brw_ADMI_BRIEF_USR;
|
||||
break;
|
||||
|
@ -2346,7 +2346,6 @@ static void Brw_GetParamsPathInTreeAndFileName (void)
|
|||
{
|
||||
if (strstr (Gbl.FileBrowser.FilFolLnkName,"..")) // ".." is not allowed in the path
|
||||
Lay_ShowErrorAndExit ("Wrong path.");
|
||||
|
||||
Gbl.FileBrowser.FileType = FileType;
|
||||
break;
|
||||
}
|
||||
|
@ -3542,7 +3541,7 @@ static void Brw_WriteTopBeforeShowingFileBrowser (void)
|
|||
|
||||
/***** Write contextual links *****/
|
||||
if (Gbl.FileBrowser.Type == Brw_ADMI_BRIEF_USR &&
|
||||
Gbl.Action.Act != ActAskRemOldBrf)
|
||||
Gbl.Action.Act != ActReqRemOldBrf)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||
Brw_PutFormToAskRemOldFiles ();
|
||||
|
@ -11462,7 +11461,7 @@ static void Brw_PutFormToAskRemOldFiles (void)
|
|||
{
|
||||
extern const char *Txt_Remove_old_files;
|
||||
|
||||
Lay_PutContextualLink (ActAskRemOldBrf,Brw_PutParamsContextualLink,
|
||||
Lay_PutContextualLink (ActReqRemOldBrf,Brw_PutParamsContextualLink,
|
||||
"remove-on64x64.png",
|
||||
Txt_Remove_old_files,Txt_Remove_old_files);
|
||||
}
|
||||
|
|
|
@ -502,8 +502,8 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
|
|||
/***** For multiple parameters, loop for any ocurrence of the parameter
|
||||
For unique parameter, find only the first ocurrence *****/
|
||||
for (Param = Gbl.Params.List, NumTimes = 0;
|
||||
Param != NULL && (FindMoreThanOneOcurrence || NumTimes < 1);
|
||||
NumTimes++)
|
||||
Param != NULL && (FindMoreThanOneOcurrence || NumTimes == 0);
|
||||
)
|
||||
/***** Find next ocurrence of parameter in list of parameters *****/
|
||||
for (ParamFound = false;
|
||||
Param != NULL && !ParamFound;
|
||||
|
@ -531,7 +531,8 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
|
|||
|
||||
if (ParamFound)
|
||||
{
|
||||
if (NumTimes == 0) // The first ocurrence of this parameter
|
||||
NumTimes++;
|
||||
if (NumTimes == 1) // NumTimes == 1 ==> the first ocurrence of this parameter
|
||||
{
|
||||
/***** Get the first ocurrence of this parameter in list *****/
|
||||
if (ParamPtr)
|
||||
|
@ -541,7 +542,7 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
|
|||
if (Param->FileName.Start != 0) // It's a file
|
||||
FindMoreThanOneOcurrence = false;
|
||||
}
|
||||
else // Not the first ocurrence of this parameter
|
||||
else // NumTimes > 1 ==> not the first ocurrence of this parameter
|
||||
{
|
||||
/***** Add separator when param multiple *****/
|
||||
/* Check if there is space to copy separator */
|
||||
|
|
78
swad_test.c
78
swad_test.c
|
@ -208,7 +208,7 @@ static void Tst_WriteScoreStart (unsigned ColSpan);
|
|||
static void Tst_WriteScoreEnd (void);
|
||||
static void Tst_WriteParamQstCod (unsigned NumQst,long QstCod);
|
||||
static void Tst_GetAndWriteTagsQst (long QstCod);
|
||||
static int Tst_GetParamsTst (void);
|
||||
static bool Tst_GetParamsTst (void);
|
||||
static unsigned Tst_GetAndCheckParamNumTst (void);
|
||||
static void Tst_GetParamNumQst (void);
|
||||
static bool Tst_GetCreateXMLFromForm (void);
|
||||
|
@ -2606,7 +2606,6 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
|
|||
Act_FormStart (ActLstTstQst);
|
||||
Sta_WriteParamsDatesSeeAccesses ();
|
||||
Tst_WriteParamEditQst ();
|
||||
Par_PutHiddenParamChar ("OnlyThisQst",'N');
|
||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||
Act_LinkFormSubmit (Txt_TST_STR_ORDER_FULL[Order],"TIT_TBL");
|
||||
if (Order == Gbl.Test.SelectedOrderType)
|
||||
|
@ -2652,13 +2651,12 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
|
|||
/* Write icon to remove the question */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"BT%u\">",Gbl.RowEvenOdd);
|
||||
Act_FormStart (ActRemTstQst);
|
||||
Act_FormStart (ActReqRemTstQst);
|
||||
Sta_WriteParamsDatesSeeAccesses ();
|
||||
Tst_WriteParamEditQst ();
|
||||
Par_PutHiddenParamLong ("QstCod",QstCod);
|
||||
Par_PutHiddenParamChar ("OnlyThisQst",
|
||||
NumRows == 1 ? 'Y' :
|
||||
'N'); // If there are only one row, don't list again after removing
|
||||
if (NumRows == 1)
|
||||
Par_PutHiddenParamChar ("OnlyThisQst",'Y'); // If there are only one row, don't list again after removing
|
||||
Lay_PutIconRemove ();
|
||||
Act_FormEnd ();
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
@ -2723,9 +2721,8 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
|
|||
Par_PutHiddenParamLong ("QstCod",QstCod);
|
||||
Sta_WriteParamsDatesSeeAccesses ();
|
||||
Tst_WriteParamEditQst ();
|
||||
Par_PutHiddenParamChar ("OnlyThisQst",
|
||||
NumRows == 1 ? 'Y' :
|
||||
'N'); // If editing only one question, don't edit others
|
||||
if (NumRows == 1)
|
||||
Par_PutHiddenParamChar ("OnlyThisQst",'Y'); // If editing only one question, don't edit others
|
||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Test.SelectedOrderType);
|
||||
fprintf (Gbl.F.Out,"<input type=\"checkbox\" name=\"Shuffle\" value=\"Y\"");
|
||||
if (Str_ConvertToUpperLetter (row[3][0]) == 'Y')
|
||||
|
@ -4040,9 +4037,9 @@ static void Tst_GetAndWriteTagsQst (long QstCod)
|
|||
/*****************************************************************************/
|
||||
/************ Get parameters for the selection of test questions *************/
|
||||
/*****************************************************************************/
|
||||
// Return 1 (OK) if all parameters are found, or 0 (error) if any necessary parameter is not found
|
||||
// Return true (OK) if all parameters are found, or false (error) if any necessary parameter is not found
|
||||
|
||||
static int Tst_GetParamsTst (void)
|
||||
static bool Tst_GetParamsTst (void)
|
||||
{
|
||||
extern const char *Txt_You_must_select_one_ore_more_tags;
|
||||
extern const char *Txt_You_must_select_one_ore_more_types_of_answer;
|
||||
|
@ -4114,8 +4111,7 @@ static int Tst_GetParamsTst (void)
|
|||
Gbl.Test.XML.CreateXML = Tst_GetCreateXMLFromForm ();
|
||||
}
|
||||
|
||||
return Error ? 0 :
|
||||
1;
|
||||
return !Error;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -5469,7 +5465,58 @@ static void Tst_EnableOrDisableTag (long TagCod,bool TagHidden)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************* Remove a question ***************************/
|
||||
/******************** Request the removal of a question **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Tst_RequestRemoveQst (void)
|
||||
{
|
||||
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
|
||||
extern const char *Txt_Remove_question;
|
||||
char YN[1+1];
|
||||
bool EditingOnlyThisQst;
|
||||
|
||||
/***** Get the question code *****/
|
||||
if (!Tst_GetQstCod ())
|
||||
Lay_ShowErrorAndExit ("Wrong code of question.");
|
||||
|
||||
/***** Get a parameter that indicates whether it's necessary
|
||||
to continue listing the rest of questions ******/
|
||||
Par_GetParToText ("OnlyThisQst",YN,1);
|
||||
EditingOnlyThisQst = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
|
||||
|
||||
/***** Start form *****/
|
||||
Act_FormStart (ActRemTstQst);
|
||||
Par_PutHiddenParamLong ("QstCod",Gbl.Test.QstCod);
|
||||
if (EditingOnlyThisQst)
|
||||
Par_PutHiddenParamChar ("OnlyThisQst",'Y');
|
||||
else
|
||||
{
|
||||
if (Tst_GetParamsTst ()) // Get other parameters from the form
|
||||
{
|
||||
Sta_WriteParamsDatesSeeAccesses ();
|
||||
Tst_WriteParamEditQst ();
|
||||
}
|
||||
Tst_FreeTagsList ();
|
||||
}
|
||||
|
||||
/***** Ask for confirmation of removing *****/
|
||||
sprintf (Gbl.Message,Txt_Do_you_really_want_to_remove_the_question_X,
|
||||
Gbl.Test.QstCod);
|
||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||
Lay_PutRemoveButton (Txt_Remove_question);
|
||||
|
||||
/***** End form *****/
|
||||
Act_FormEnd ();
|
||||
|
||||
/***** Continue editing questions *****/
|
||||
if (EditingOnlyThisQst)
|
||||
Tst_ListOneQstToEdit ();
|
||||
else
|
||||
Tst_ListQuestionsToEdit ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Remove a question *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Tst_RemoveQst (void)
|
||||
|
@ -5483,7 +5530,8 @@ void Tst_RemoveQst (void)
|
|||
if (!Tst_GetQstCod ())
|
||||
Lay_ShowErrorAndExit ("Wrong code of question.");
|
||||
|
||||
/***** Get a parameter that indicates whether it's necessary to continue listing the rest of questions ******/
|
||||
/***** Get a parameter that indicates whether it's necessary
|
||||
to continue listing the rest of questions ******/
|
||||
Par_GetParToText ("OnlyThisQst",YN,1);
|
||||
EditingOnlyThisQst = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
|
||||
|
||||
|
|
|
@ -147,6 +147,7 @@ void Tst_ReceiveQst (void);
|
|||
bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void);
|
||||
long Tst_GetIntAnsFromStr (char *Str);
|
||||
double Tst_GetFloatAnsFromStr (char *Str);
|
||||
void Tst_RequestRemoveQst (void);
|
||||
void Tst_RemoveQst (void);
|
||||
void Tst_ChangeShuffleQst (void);
|
||||
void Tst_InsertOrUpdateQstTagsAnsIntoDB (void);
|
||||
|
|
46
swad_text.c
46
swad_text.c
|
@ -9003,6 +9003,27 @@ const char *Txt_Do_you_really_want_to_remove_the_group_X_Y_students_ = // Warnin
|
|||
"Doing so will remove %u students from that group."; // Necessita de tradução
|
||||
#endif
|
||||
|
||||
const char *Txt_Do_you_really_want_to_remove_the_question_X = // Warning: it is very important to include %ld in the following sentences
|
||||
#if L==1
|
||||
"¿Realmente desea eliminar la pregunta <strong>%ld</strong>?"; // Necessita traduccio
|
||||
#elif L==2
|
||||
"Wollen Sie die Frage <strong>%ld</strong> wirklich entfernen?";
|
||||
#elif L==3
|
||||
"Do you really want to remove the question <strong>%ld</strong>?";
|
||||
#elif L==4
|
||||
"¿Realmente desea eliminar la pregunta <strong>%ld</strong>?";
|
||||
#elif L==5
|
||||
"Voulez-vous vraiment supprimer la question <strong>%ld</strong>?";
|
||||
#elif L==6
|
||||
"¿Realmente desea eliminar la pregunta <strong>%ld</strong>?"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Vuoi realmente rimuovere la domanda <strong>%ld</strong>?";
|
||||
#elif L==8
|
||||
"Czy na pewno chcesz usunac pytanie <strong>%ld</strong>?";
|
||||
#elif L==9
|
||||
"Você realmente deseja remover a questão <strong>%ld</strong>?";
|
||||
#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
|
||||
#if L==1
|
||||
"¿Realmente desea eliminar la encuesta <strong>%s</strong>?"; // Necessita traduccio
|
||||
|
@ -30131,6 +30152,27 @@ const char *Txt_Remove_photo =
|
|||
"Remover foto";
|
||||
#endif
|
||||
|
||||
const char *Txt_Remove_question =
|
||||
#if L==1
|
||||
"Eliminar pregunta";
|
||||
#elif L==2
|
||||
"Entfernen Frage";
|
||||
#elif L==3
|
||||
"Remove question";
|
||||
#elif L==4
|
||||
"Eliminar pregunta";
|
||||
#elif L==5
|
||||
"Supprimer question";
|
||||
#elif L==6
|
||||
"Eliminar pregunta"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Rimuovere domanda";
|
||||
#elif L==8
|
||||
"Usuń pytanie";
|
||||
#elif L==9
|
||||
"Remover questão";
|
||||
#endif
|
||||
|
||||
const char *Txt_Remove_record_field =
|
||||
#if L==1
|
||||
"Eliminar campo de ficha"; // Necessita traduccio
|
||||
|
@ -47397,7 +47439,7 @@ const char *Txt_TST_STR_ORDER_FULL[Tst_NUM_TYPES_ORDER_QST] =
|
|||
const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] =
|
||||
{
|
||||
#if L==1 // Tst_ORDER_STEM
|
||||
"Pregunta" // Necessita traduccio
|
||||
"Pregunta"
|
||||
#elif L==2
|
||||
"Frage"
|
||||
#elif L==3
|
||||
|
@ -47411,7 +47453,7 @@ const char *Txt_TST_STR_ORDER_SHORT[Tst_NUM_TYPES_ORDER_QST] =
|
|||
#elif L==7
|
||||
"Domanda"
|
||||
#elif L==8
|
||||
"Question" // Potrzebujesz tlumaczenie
|
||||
"Pytanie"
|
||||
#elif L==9
|
||||
"Questão"
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue