Version 16.249

This commit is contained in:
Antonio Cañas Vargas 2017-07-04 00:57:18 +02:00
parent e57ed8f6c3
commit b678bf6361
7 changed files with 248 additions and 22 deletions

View File

@ -426,7 +426,7 @@ Assessment:
289. ActSeeAsg Show assignments
290. ActReqTst Request a test of self-assesment
291. ActSeeAllSvy List all surveys in pages
NEW. ActRmtCtl Remote control
NEW. ActSeeAllGam Remote control
292. ActSeeAllExaAnn Show the exam announcements
293. ActEdiAss Edit the assessment system
@ -490,6 +490,23 @@ Assessment:
359. ActReqRemSvyQst Request the removal of a question of a survey
360. ActRemSvyQst Confirm the removal of a question of a survey
NEW. ActSeeOneGam Show one game
NEW. ActAnsGam Answer a game
NEW. ActFrmNewGam Form to create a new game
NEW. ActEdiOneGam Edit one game
NEW. ActNewGam Create new game
NEW. ActChgGam Modify data of an existing game
NEW. ActReqRemGam Request the removal of a game
NEW. ActRemGam Remove game
NEW. ActReqRstGam Request the reset of answers of a game
NEW. ActRstGam Reset answers of game
NEW. ActHidGam Hide game
NEW. ActShoGam Show game
NEW. ActEdiOneGamQst Edit a new question for a game
NEW. ActRcvGamQst Receive a question of a game
NEW. ActReqRemGamQst Request the removal of a question of a game
NEW. ActRemGamQst Confirm the removal of a question of a game
361. ActSeeOneExaAnn Show one exam announcement
362. ActSeeDatExaAnn Show exam announcements of a given date
363. ActEdiExaAnn Edit an exam announcement
@ -1880,7 +1897,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActSeeAsg */{ 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_SeeAssignments ,"desk64x64.gif" },
/* ActReqTst */{ 103, 2,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Tst_ShowFormAskTst ,"test64x64.gif" },
/* ActSeeAllSvy */{ 966, 3,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Svy_SeeAllSurveys ,"survey64x64.gif" },
/* ActRmtCtl */{1649, 4,TabAss,ActRmtCtl ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RemoteControl ,"remote64x64.png" },
/* ActSeeAllGam */{1649, 4,TabAss,ActSeeAllGam ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_SeeAllGames ,"remote64x64.png" },
/* ActSeeAllExaAnn */{ 85, 5,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Exa_ListExamAnnouncementsSee ,"announce64x64.gif" },
// Actions not in menu:
@ -1949,6 +1966,23 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActReqRemSvyQst */{1524,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Svy_RequestRemoveQst ,NULL},
/* ActRemSvyQst */{ 981,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Svy_RemoveQst ,NULL},
/* ActSeeOneGam */{1650,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_SeeOneGame ,NULL},
/* ActAnsGam */{1651,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ReceiveGameAnswers ,NULL},
/* ActFrmNewGam */{1652,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestCreatOrEditGame ,NULL},
/* ActEdiOneGam */{1653,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestCreatOrEditGame ,NULL},
/* ActNewGam */{1654,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RecFormGame ,NULL},
/* ActChgGam */{1655,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RecFormGame ,NULL},
/* ActReqRemGam */{1656,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_AskRemGame ,NULL},
/* ActRemGam */{1657,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RemoveGame ,NULL},
/* ActReqRstGam */{1658,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_AskResetGame ,NULL},
/* ActRstGam */{1659,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ResetGame ,NULL},
/* ActHidGam */{1660,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_HideGame ,NULL},
/* ActShoGam */{1661,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_UnhideGame ,NULL},
/* ActEdiOneGamQst */{1662,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestEditQuestion ,NULL},
/* ActRcvGamQst */{1663,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ReceiveQst ,NULL},
/* ActReqRemGamQst */{1664,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestRemoveQst ,NULL},
/* ActRemGamQst */{1665,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RemoveQst ,NULL},
/* ActSeeOneExaAnn */{1572,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,Exa_GetExaCodToHighlight ,Exa_ListExamAnnouncementsSee ,NULL},
/* ActSeeDatExaAnn */{1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,Exa_GetDateToHighlight ,Exa_ListExamAnnouncementsSee ,NULL},
/* ActEdiExaAnn */{ 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL},
@ -4656,7 +4690,23 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActUpdNET, // #1646
ActRemNETCrs, // #1647
ActChgCtrPlcCfg, // #1648
ActRmtCtl, // #1649
ActSeeAllGam, // #1649
ActSeeOneGam, // #1650
ActAnsGam, // #1651
ActFrmNewGam, // #1652
ActEdiOneGam, // #1653
ActNewGam, // #1654
ActChgGam, // #1655
ActReqRemGam, // #1656
ActRemGam, // #1657
ActReqRstGam, // #1658
ActRstGam, // #1659
ActHidGam, // #1660
ActShoGam, // #1661
ActEdiOneGamQst, // #1662
ActRcvGamQst, // #1663
ActReqRemGamQst, // #1664
ActRemGamQst, // #1665
};
/*****************************************************************************/

View File

@ -57,9 +57,9 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 73 + 416 + 165 + 172 + 42 + 14 + 97)
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 89 + 416 + 165 + 172 + 42 + 14 + 97)
#define Act_MAX_ACTION_COD 1649
#define Act_MAX_ACTION_COD 1665
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12
@ -435,7 +435,7 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActSeeAsg (ActChgCalCrs1stDay + 2)
#define ActReqTst (ActChgCalCrs1stDay + 3)
#define ActSeeAllSvy (ActChgCalCrs1stDay + 4)
#define ActRmtCtl (ActChgCalCrs1stDay + 5)
#define ActSeeAllGam (ActChgCalCrs1stDay + 5)
#define ActSeeAllExaAnn (ActChgCalCrs1stDay + 6)
// Secondary actions
@ -502,15 +502,32 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 63)
#define ActRemSvyQst (ActChgCalCrs1stDay + 64)
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 65)
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 66)
#define ActEdiExaAnn (ActChgCalCrs1stDay + 67)
#define ActRcvExaAnn (ActChgCalCrs1stDay + 68)
#define ActPrnExaAnn (ActChgCalCrs1stDay + 69)
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 70)
#define ActRemExaAnn (ActChgCalCrs1stDay + 71)
#define ActHidExaAnn (ActChgCalCrs1stDay + 72)
#define ActShoExaAnn (ActChgCalCrs1stDay + 73)
#define ActSeeOneGam (ActChgCalCrs1stDay + 65)
#define ActAnsGam (ActChgCalCrs1stDay + 66)
#define ActFrmNewGam (ActChgCalCrs1stDay + 67)
#define ActEdiOneGam (ActChgCalCrs1stDay + 68)
#define ActNewGam (ActChgCalCrs1stDay + 69)
#define ActChgGam (ActChgCalCrs1stDay + 70)
#define ActReqRemGam (ActChgCalCrs1stDay + 71)
#define ActRemGam (ActChgCalCrs1stDay + 72)
#define ActReqRstGam (ActChgCalCrs1stDay + 73)
#define ActRstGam (ActChgCalCrs1stDay + 74)
#define ActHidGam (ActChgCalCrs1stDay + 75)
#define ActShoGam (ActChgCalCrs1stDay + 76)
#define ActEdiOneGamQst (ActChgCalCrs1stDay + 77)
#define ActRcvGamQst (ActChgCalCrs1stDay + 78)
#define ActReqRemGamQst (ActChgCalCrs1stDay + 79)
#define ActRemGamQst (ActChgCalCrs1stDay + 80)
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 81)
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 82)
#define ActEdiExaAnn (ActChgCalCrs1stDay + 83)
#define ActRcvExaAnn (ActChgCalCrs1stDay + 84)
#define ActPrnExaAnn (ActChgCalCrs1stDay + 85)
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 86)
#define ActRemExaAnn (ActChgCalCrs1stDay + 87)
#define ActHidExaAnn (ActChgCalCrs1stDay + 88)
#define ActShoExaAnn (ActChgCalCrs1stDay + 89)
/*****************************************************************************/
/******************************** Files tab **********************************/

View File

@ -236,13 +236,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.248 (2017-07-03)"
#define Log_PLATFORM_VERSION "SWAD 16.249 (2017-07-04)"
#define CSS_FILE "swad16.235.1.css"
#define JS_FILE "swad16.206.3.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
Version 16.249: Jul 04, 2017 Listing games for remote control. Not finished. (226021 lines)
Version 16.248: Jul 03, 2017 New option to emulate a remote control. (222272 lines)
Version 16.247.6: Jul 02, 2017 Fixed bug in user's enrolment. (222151 lines)
Version 16.247.5: Jul 02, 2017 Fixed error in layout when searching for courses. (222138 lines)

View File

@ -67,6 +67,7 @@
#include "swad_place.h"
#include "swad_plugin.h"
#include "swad_record.h"
#include "swad_remote_control.h"
#include "swad_search.h"
#include "swad_session.h"
#include "swad_social.h"
@ -709,6 +710,16 @@ struct Globals
struct DateTime DateEnd; // TODO: Remove in future versions
time_t TimeUTC[2];
} DateRange;
struct
{
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of surveys
long *LstGamCods; // List of game codes
Rmt_Order_t SelectedOrder;
long GamCodToEdit; // Used as parameter in contextual links
long GamQstCodToEdit; // Used as parameter in contextual links
unsigned CurrentPage;
} Games;
struct
{
bool LstIsRead; // Is the list already read from database, or it needs to be read?

View File

@ -1093,6 +1093,90 @@ const char *Hlp_ASSESSMENT_Surveys_questions =
"ASSESSMENT.Surveys.en#questions";
#endif
const char *Hlp_ASSESSMENT_Games =
#if L==1
"ASSESSMENT.Games.es";
#elif L==2
"ASSESSMENT.Games.en";
#elif L==3
"ASSESSMENT.Games.en";
#elif L==4
"ASSESSMENT.Games.es";
#elif L==5
"ASSESSMENT.Games.en";
#elif L==6
"ASSESSMENT.Games.es";
#elif L==7
"ASSESSMENT.Games.en";
#elif L==8
"ASSESSMENT.Games.en";
#elif L==9
"ASSESSMENT.Games.en";
#endif
const char *Hlp_ASSESSMENT_Games_new_juego =
#if L==1
"ASSESSMENT.Games.es#nueva-juego";
#elif L==2
"ASSESSMENT.Games.en#new-juego";
#elif L==3
"ASSESSMENT.Games.en#new-juego";
#elif L==4
"ASSESSMENT.Games.es#nueva-juego";
#elif L==5
"ASSESSMENT.Games.en#new-juego";
#elif L==6
"ASSESSMENT.Games.es#nueva-juego";
#elif L==7
"ASSESSMENT.Games.en#new-juego";
#elif L==8
"ASSESSMENT.Games.en#new-juego";
#elif L==9
"ASSESSMENT.Games.en#new-juego";
#endif
const char *Hlp_ASSESSMENT_Games_edit_juego =
#if L==1
"ASSESSMENT.Games.es#editar-juego";
#elif L==2
"ASSESSMENT.Games.en#edit-juego";
#elif L==3
"ASSESSMENT.Games.en#edit-juego";
#elif L==4
"ASSESSMENT.Games.es#editar-juego";
#elif L==5
"ASSESSMENT.Games.en#edit-juego";
#elif L==6
"ASSESSMENT.Games.es#editar-juego";
#elif L==7
"ASSESSMENT.Games.en#edit-juego";
#elif L==8
"ASSESSMENT.Games.en#edit-juego";
#elif L==9
"ASSESSMENT.Games.en#edit-juego";
#endif
const char *Hlp_ASSESSMENT_Games_questions =
#if L==1
"ASSESSMENT.Games.es#preguntas";
#elif L==2
"ASSESSMENT.Games.en#questions";
#elif L==3
"ASSESSMENT.Games.en#questions";
#elif L==4
"ASSESSMENT.Games.es#preguntas";
#elif L==5
"ASSESSMENT.Games.en#questions";
#elif L==6
"ASSESSMENT.Games.es#preguntas";
#elif L==7
"ASSESSMENT.Games.en#questions";
#elif L==8
"ASSESSMENT.Games.en#questions";
#elif L==9
"ASSESSMENT.Games.en#questions";
#endif
const char *Hlp_ASSESSMENT_Announcements =
#if L==1
"ASSESSMENT.Announcements.es";

View File

@ -180,7 +180,7 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB
ActSeeAsg, // 1
ActReqTst, // 2
ActSeeAllSvy, // 3
ActRmtCtl, // 4
ActSeeAllGam, // 4
ActSeeAllExaAnn, // 5
0, // 6
0, // 7

View File

@ -18876,7 +18876,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Inquéritos"
#endif
,
// 4: ActRmtCtl
// 4: ActSeeAllGam
#if L==1
"Comandament"
#elif L==2
@ -20821,7 +20821,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Inquéritos"
#endif
,
// 4: ActRmtCtl
// 4: ActSeeAllGam
#if L==1
"Comandament"
#elif L==2
@ -23884,6 +23884,27 @@ const char *Txt_New_FILE_OR_FOLDER =
"Novo";
#endif
const char *Txt_New_game =
#if L==1
"Nou joc";
#elif L==2
"Neues Spiel";
#elif L==3
"New game";
#elif L==4
"Nuevo juego";
#elif L==5
"Nouveau jeu";
#elif L==6
"Nuevo juego"; // Okoteve traducción
#elif L==7
"Nuovo gioco";
#elif L==8
"Nowa gra";
#elif L==9
"Novo jogo";
#endif
const char *Txt_New_group =
#if L==1
"Nuevo grupo"; // Necessita traduccio
@ -47469,6 +47490,27 @@ const char *Txt_this_field_is_filled_in_the_records_of_X_students = // Warning:
" (this field is filled in the records of %u students)"; // Necessita de tradução
#endif
const char *Txt_This_game_has_no_questions =
#if L==1
"Aquest joc no té preguntes.";
#elif L==2
"Dieses Spiel hat keine Fragen.";
#elif L==3
"This game has no questions.";
#elif L==4
"Este juego no tiene preguntas.";
#elif L==5
"Ce jeu n'a pas de questions.";
#elif L==6
"Este juego no tiene preguntas."; // Okoteve traducción
#elif L==7
"Questo gioco non ha domande.";
#elif L==8
"Ta gra nie ma pytania.";
#elif L==9
"Este jogo não tem perguntas.";
#endif
const char *Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exists =
#if L==1
"Aquest enllaç romandrà actiu mentre existeixi el seu compte de l'usuari.";
@ -50746,6 +50788,27 @@ const char *Txt_View_event =
"Ver evento";
#endif
const char *Txt_View_game =
#if L==1
"Veure joc";
#elif L==2
"Anzeigen Spiel";
#elif L==3
"View game";
#elif L==4
"Ver juego";
#elif L==5
"Voir jeu";
#elif L==6
"Ver juego"; // Okoteve traducción
#elif L==7
"Vedi gioco";
#elif L==8
"Zobacz grę";
#elif L==9
"Ver jogo";
#endif
const char *Txt_View_in_a_new_window =
#if L==1
"Mostrar en una finestra nova";
@ -50825,14 +50888,14 @@ const char *Txt_View_survey =
#elif L==7
"Vedi sondaggio";
#elif L==8
"View survey"; // Potrzebujesz tlumaczenie
"Zobacz ankietę";
#elif L==9
"Ver inquérito";
#endif
const char *Txt_View_survey_results =
#if L==1
"Ver resultados"; // Necessita traduccio
"Veure resultats";
#elif L==2
"Anzeigen Ergebnisse";
#elif L==3
@ -50846,7 +50909,7 @@ const char *Txt_View_survey_results =
#elif L==7
"Vedi risultati";
#elif L==8
"View survey results"; // Potrzebujesz tlumaczenie
"Wyświetl wyniki ankiety";
#elif L==9
"Ver resultados";
#endif