mirror of https://github.com/acanas/swad-core.git
Version 16.251.3
This commit is contained in:
parent
979ecb9e9b
commit
dd0306fdc4
|
@ -236,13 +236,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.251.2 (2017-07-16)"
|
#define Log_PLATFORM_VERSION "SWAD 16.251.3 (2017-07-18)"
|
||||||
#define CSS_FILE "swad16.235.1.css"
|
#define CSS_FILE "swad16.235.1.css"
|
||||||
#define JS_FILE "swad16.206.3.js"
|
#define JS_FILE "swad16.206.3.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 16.251.3: Jul 18, 2017 Listing games for remote control. Not finished. (227148 lines)
|
||||||
Version 16.251.2: Jul 16, 2017 Listing games for remote control. Not finished. (227062 lines)
|
Version 16.251.2: Jul 16, 2017 Listing games for remote control. Not finished. (227062 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1667','es','N','Añadir tests a juego');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1667','es','N','Añadir tests a juego');
|
||||||
|
|
|
@ -402,6 +402,9 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Test.Tags.All = false;
|
Gbl.Test.Tags.All = false;
|
||||||
Gbl.Test.Tags.List = NULL;
|
Gbl.Test.Tags.List = NULL;
|
||||||
|
|
||||||
|
/* Games for remote control */
|
||||||
|
Gbl.Games.ListQuestions = NULL;
|
||||||
|
|
||||||
/* Public activity */
|
/* Public activity */
|
||||||
Gbl.Social.WhichUsrs = Soc_DEFAULT_WHICH_USRS;
|
Gbl.Social.WhichUsrs = Soc_DEFAULT_WHICH_USRS;
|
||||||
|
|
||||||
|
|
|
@ -719,6 +719,7 @@ struct Globals
|
||||||
long GamCodToEdit; // Used as parameter in contextual links
|
long GamCodToEdit; // Used as parameter in contextual links
|
||||||
long GamQstCodToEdit; // Used as parameter in contextual links
|
long GamQstCodToEdit; // Used as parameter in contextual links
|
||||||
unsigned CurrentPage;
|
unsigned CurrentPage;
|
||||||
|
char *ListQuestions;
|
||||||
} Games;
|
} Games;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|
|
@ -79,6 +79,9 @@ struct GameQuestion
|
||||||
char ListAnsTypes[Rmt_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
char ListAnsTypes[Rmt_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define Rmt_MAX_SELECTED_QUESTIONS 1000
|
||||||
|
#define Rmt_MAX_BYTES_LIST_SELECTED_QUESTIONS (Rmt_MAX_SELECTED_QUESTIONS * (1 + 10 + 1))
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************* Private types *******************************/
|
/******************************* Private types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -145,6 +148,11 @@ static unsigned Rmt_GetNextQuestionIndexInGame (long GamCod);
|
||||||
static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQst);
|
static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQst);
|
||||||
static void Rmt_PutIconToAddNewQuestions (void);
|
static void Rmt_PutIconToAddNewQuestions (void);
|
||||||
static void Rmt_PutButtonToAddNewQuestions (void);
|
static void Rmt_PutButtonToAddNewQuestions (void);
|
||||||
|
|
||||||
|
static void Rmt_AllocateListSelectedQuestions (void);
|
||||||
|
static void Rmt_FreeListsSelectedQuestions (void);
|
||||||
|
static unsigned Rmt_CountNumQuestionsInList (void);
|
||||||
|
|
||||||
static void Rmt_WriteQstStem (const char *Stem);
|
static void Rmt_WriteQstStem (const char *Stem);
|
||||||
static void Rmt_WriteAnswersOfAQst (struct Game *Game,struct GameQuestion *GameQst,bool PutFormAnswerGame);
|
static void Rmt_WriteAnswersOfAQst (struct Game *Game,struct GameQuestion *GameQst,bool PutFormAnswerGame);
|
||||||
static void Rmt_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs);
|
static void Rmt_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs);
|
||||||
|
@ -3146,7 +3154,76 @@ static void Rmt_PutButtonToAddNewQuestions (void)
|
||||||
|
|
||||||
void Rmt_AddTstQuestionsToGame (void)
|
void Rmt_AddTstQuestionsToGame (void)
|
||||||
{
|
{
|
||||||
Ale_ShowAlert (Ale_WARNING,"Under development...."); // TODO: Write this function
|
extern const char *Txt_You_must_select_one_ore_more_questions;
|
||||||
|
|
||||||
|
/***** Get selected questions *****/
|
||||||
|
/* Allocate space for selected question codes */
|
||||||
|
Rmt_AllocateListSelectedQuestions ();
|
||||||
|
|
||||||
|
/* Get question codes */
|
||||||
|
Par_GetParMultiToText ("QstCods",Gbl.Games.ListQuestions,
|
||||||
|
Rmt_MAX_BYTES_LIST_SELECTED_QUESTIONS);
|
||||||
|
|
||||||
|
/* Check number of questions */
|
||||||
|
if (Rmt_CountNumQuestionsInList () == 0) // If no questions selected...
|
||||||
|
{ // ...write warning alert
|
||||||
|
Ale_ShowAlert (Ale_WARNING,Txt_You_must_select_one_ore_more_questions);
|
||||||
|
|
||||||
|
// TODO: Show form again!!!
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free space for selected question codes */
|
||||||
|
Rmt_FreeListsSelectedQuestions ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************** Allocate memory for list of questions ********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Rmt_AllocateListSelectedQuestions (void)
|
||||||
|
{
|
||||||
|
if (!Gbl.Games.ListQuestions)
|
||||||
|
{
|
||||||
|
if ((Gbl.Games.ListQuestions = (char *) malloc (Rmt_MAX_BYTES_LIST_SELECTED_QUESTIONS + 1)) == NULL)
|
||||||
|
Lay_ShowErrorAndExit ("Not enough memory to store list of questions.");
|
||||||
|
Gbl.Games.ListQuestions[0] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********** Free memory used by list of selected question codes *************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Rmt_FreeListsSelectedQuestions (void)
|
||||||
|
{
|
||||||
|
if (Gbl.Games.ListQuestions)
|
||||||
|
{
|
||||||
|
free ((void *) Gbl.Games.ListQuestions);
|
||||||
|
Gbl.Games.ListQuestions = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**** Count the number of questions in the list of selected question codes ***/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static unsigned Rmt_CountNumQuestionsInList (void)
|
||||||
|
{
|
||||||
|
const char *Ptr;
|
||||||
|
unsigned NumQuestions = 0;
|
||||||
|
char LongStr[1+ 10 + 1];
|
||||||
|
long QstCod;
|
||||||
|
|
||||||
|
/***** Go over the list Gbl.Test.ListAnsTypes counting the number of types of answer *****/
|
||||||
|
Ptr = Gbl.Games.ListQuestions;
|
||||||
|
while (*Ptr)
|
||||||
|
{
|
||||||
|
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10);
|
||||||
|
if (sscanf (LongStr,"%ld",&QstCod) != 1)
|
||||||
|
Lay_ShowErrorAndExit ("Wrong question code.");
|
||||||
|
NumQuestions++;
|
||||||
|
}
|
||||||
|
return NumQuestions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -54665,6 +54665,27 @@ const char *Txt_You_must_select_a_T_F_answer =
|
||||||
"You must select a T/F answer."; // Necessita de tradução
|
"You must select a T/F answer."; // Necessita de tradução
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_You_must_select_one_ore_more_questions =
|
||||||
|
#if L==1
|
||||||
|
"Heu de seleccionar una o més preguntes.";
|
||||||
|
#elif L==2
|
||||||
|
"Sie müssen eine oder mehrere Fragen auswählen.";
|
||||||
|
#elif L==3
|
||||||
|
"You must select one or more questions.";
|
||||||
|
#elif L==4
|
||||||
|
"Debe seleccionar una o más preguntas.";
|
||||||
|
#elif L==5
|
||||||
|
"Vous devez sélectionner une ou plusieurs questions.";
|
||||||
|
#elif L==6
|
||||||
|
"Debe seleccionar una o más preguntas."; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Devi selezionare una o più domande.";
|
||||||
|
#elif L==8
|
||||||
|
"Musisz wybrać jedno lub więcej pytań.";
|
||||||
|
#elif L==9
|
||||||
|
"Você deve selecionar uma ou mais perguntas.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_You_must_select_one_ore_more_recipients =
|
const char *Txt_You_must_select_one_ore_more_recipients =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Debe seleccionar uno o más destinatarios."; // Necessita traduccio
|
"Debe seleccionar uno o más destinatarios."; // Necessita traduccio
|
||||||
|
|
Loading…
Reference in New Issue