mirror of https://github.com/acanas/swad-core.git
Version 15.218.2
This commit is contained in:
parent
eac87bfc3b
commit
83288f99bc
|
@ -128,19 +128,19 @@
|
|||
// TODO: FIX BUG: In Statistics > Indicators, if we select only 5 indicators, the message "The list is too big..." is shown.
|
||||
// TODO: FIX BUG: A teacher uploads a document in course documents zone, then he/she unregister from course, the he/she search for his/her documents, a document is shown in results but he/she can not view it
|
||||
// TODO: FIX BUG: Txt_Save_file_properties does not have sense in briefcase, because nothing to save (license should be editable in briefcase?)
|
||||
// TODO: Check value returned by setlocale in all calls.
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.218.1 (2016-06-04)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.218.2 (2016-06-04)"
|
||||
#define CSS_FILE "swad15.218.css"
|
||||
#define JS_FILE "swad15.216.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.218.2: Jun 04, 2016 Checked value returned by setlocale in all calls. (201957 lines)
|
||||
Version 15.218.1: Jun 04, 2016 Change in listing of courses. (201934 lines)
|
||||
Version 15.218: Jun 03, 2016 New module swad_MFU for most frequently used actions.
|
||||
Change in layout of most frequent actions. (201934 lines)
|
||||
|
|
|
@ -83,7 +83,8 @@ void Gbl_InitializeGlobals (void)
|
|||
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
||||
Txt_Language_t Lan;
|
||||
|
||||
setlocale (LC_ALL,"es_ES.utf8");
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8"))
|
||||
exit (1);
|
||||
|
||||
gettimeofday (&Gbl.tvStart, &Gbl.tz);
|
||||
Dat_GetStartExecutionTimeUTC ();
|
||||
|
|
|
@ -867,10 +867,12 @@ float Str_GetFloatNumFromStr (const char *Str)
|
|||
|
||||
if (Str)
|
||||
{
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To get the decimal point
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To get the decimal point
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (sscanf (Str,"%f",&Num) != 1)
|
||||
Lay_ShowErrorAndExit ("Bad floating point format.");
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8");
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8"))
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
}
|
||||
else // Str == NULL
|
||||
Num = 0.0;
|
||||
|
|
54
swad_test.c
54
swad_test.c
|
@ -1172,7 +1172,8 @@ static void Tst_UpdateScoreQst (long QstCod,float ScoreThisQst,bool AnswerIsNotB
|
|||
char Query[512];
|
||||
|
||||
/***** Update number of clicks and score of the question *****/
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To print the floating point as a dot
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To print the floating point as a dot
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (AnswerIsNotBlank)
|
||||
sprintf (Query,"UPDATE tst_questions"
|
||||
" SET NumHits=NumHits+1,NumHitsNotBlank=NumHitsNotBlank+1,Score=Score+(%lf)"
|
||||
|
@ -1183,7 +1184,8 @@ static void Tst_UpdateScoreQst (long QstCod,float ScoreThisQst,bool AnswerIsNotB
|
|||
" SET NumHits=NumHits+1"
|
||||
" WHERE QstCod='%ld'",
|
||||
QstCod);
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
DB_QueryUPDATE (Query,"can not update the score of a question");
|
||||
}
|
||||
|
||||
|
@ -2842,10 +2844,12 @@ static void Tst_ListOneOrMoreQuestionsToEdit (unsigned long NumRows,MYSQL_RES *m
|
|||
Lay_ShowErrorAndExit ("Wrong number of hits not blank to a question.");
|
||||
|
||||
/* Get the acumulated score of the question (row[11]) */
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To get decimal point
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To get the decimal point
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (sscanf (row[11],"%lf",&TotalScoreThisQst) != 1)
|
||||
Lay_ShowErrorAndExit ("Wrong score of a question.");
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
|
||||
/* Write number of times this question has been answered */
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT_SMALL CENTER_TOP COLOR%u\">"
|
||||
|
@ -5622,13 +5626,15 @@ double Tst_GetFloatAnsFromStr (char *Str)
|
|||
Str_ConvertStrFloatCommaToStrFloatPoint (Str);
|
||||
|
||||
/***** The string is "scanned" in floating point (it must have a point, not a colon as decimal separator) *****/
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To get decimal point
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To get the decimal point
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (sscanf (Str,"%lg",&DoubleNum) != 1) // If the string does not hold a valid floating point number...
|
||||
{
|
||||
DoubleNum = 0.0; // ...the number is reset to 0
|
||||
Str[0] = '\0'; // ...and the string is reset to ""
|
||||
}
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
|
||||
return DoubleNum;
|
||||
}
|
||||
|
@ -6046,7 +6052,8 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
DB_QueryINSERT (Query,"can not create answer");
|
||||
break;
|
||||
case Tst_ANS_FLOAT:
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To print the floating point as a dot
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To print the floating point as a dot
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
for (i = 0;
|
||||
i < 2;
|
||||
i++)
|
||||
|
@ -6059,7 +6066,8 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
Gbl.Test.Answer.FloatingPoint[i]);
|
||||
DB_QueryINSERT (Query,"can not create answer");
|
||||
}
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
break;
|
||||
case Tst_ANS_TRUE_FALSE:
|
||||
sprintf (Query,"INSERT INTO tst_answers"
|
||||
|
@ -6482,10 +6490,12 @@ static unsigned Tst_GetNumTstQuestions (Sco_Scope_t Scope,Tst_AnswerType_t AnsTy
|
|||
if (sscanf (row[1],"%lu",&(Stats->NumHits)) != 1)
|
||||
Lay_ShowErrorAndExit ("Error when getting total number of hits in test questions.");
|
||||
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To get decimal point
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To get the decimal point
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (sscanf (row[2],"%lf",&(Stats->TotalScore)) != 1)
|
||||
Lay_ShowErrorAndExit ("Error when getting total score in test questions.");
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6938,13 +6948,15 @@ static void Tst_StoreScoreOfTestExamInDB (long TstCod,
|
|||
char Query[256];
|
||||
|
||||
/***** Update score in test exam *****/
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To print the floating point as a dot
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To print the floating point as a dot
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
sprintf (Query,"UPDATE tst_exams"
|
||||
" SET NumQstsNotBlank='%u',Score='%lf'"
|
||||
" WHERE TstCod='%ld'",
|
||||
NumQstsNotBlank,Score,
|
||||
TstCod);
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
DB_QueryUPDATE (Query,"can not update result of test exam");
|
||||
}
|
||||
|
||||
|
@ -7174,7 +7186,8 @@ static void Tst_ShowResultsOfTestExams (struct UsrData *UsrDat)
|
|||
NumQstsNotBlankInThisExam = 0;
|
||||
|
||||
/* Get score (row[5]) */
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To get decimal point
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To get the decimal point
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (sscanf (row[5],"%lf",&ScoreInThisExam) == 1)
|
||||
{
|
||||
if (Gbl.Test.AllowTeachers)
|
||||
|
@ -7182,7 +7195,8 @@ static void Tst_ShowResultsOfTestExams (struct UsrData *UsrDat)
|
|||
}
|
||||
else
|
||||
ScoreInThisExam = 0.0;
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
|
||||
/* Write number of questions */
|
||||
fprintf (Gbl.F.Out,"<td class=\"%s RIGHT_TOP COLOR%u\">",
|
||||
|
@ -7687,10 +7701,12 @@ static void Tst_GetExamDataByTstCod (long TstCod,time_t *TstTimeUTC,
|
|||
*NumQstsNotBlank = 0;
|
||||
|
||||
/* Get score (row[5]) */
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To get decimal point
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To get the decimal point
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
if (sscanf (row[5],"%lf",Score) != 1)
|
||||
*Score = 0.0;
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
|
@ -7713,7 +7729,8 @@ static void Tst_StoreOneExamQstInDB (long TstCod,long QstCod,unsigned NumQst,dou
|
|||
Par_ReplaceSeparatorMultipleByComma (Gbl.Test.StrAnswersOneQst[NumQst],Answers);
|
||||
|
||||
/***** Insert question and user's answers into database *****/
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To print the floating point as a dot
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To print the floating point as a dot
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
sprintf (Query,"INSERT INTO tst_exam_questions"
|
||||
" (TstCod,QstCod,QstInd,Score,Indexes,Answers)"
|
||||
" VALUES ('%ld','%ld','%u','%lf','%s','%s')",
|
||||
|
@ -7722,7 +7739,8 @@ static void Tst_StoreOneExamQstInDB (long TstCod,long QstCod,unsigned NumQst,dou
|
|||
Score,
|
||||
Indexes,
|
||||
Answers);
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
DB_QueryINSERT (Query,"can not insert a question of an exam");
|
||||
}
|
||||
|
||||
|
|
|
@ -3736,7 +3736,8 @@ int swad__getTrivialQuestion (struct soap *soap,
|
|||
"lowerScore or upperScore values not valid");
|
||||
|
||||
/***** Start query *****/
|
||||
setlocale (LC_NUMERIC,"en_US.utf8"); // To print the floating point as a dot
|
||||
if (!setlocale (LC_NUMERIC,"en_US.utf8")) // To print the floating point as a dot
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to en_US.");
|
||||
sprintf (Query,"SELECT DISTINCTROW tst_questions.QstCod,"
|
||||
"tst_questions.AnsType,tst_questions.Shuffle,"
|
||||
"tst_questions.Stem,tst_questions.Feedback,"
|
||||
|
@ -3757,7 +3758,8 @@ int swad__getTrivialQuestion (struct soap *soap,
|
|||
" ORDER BY RAND(NOW()) LIMIT 1",
|
||||
DegreesStr,DegreesStr,
|
||||
lowerScore,upperScore);
|
||||
setlocale (LC_NUMERIC,"es_ES.utf8"); // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
if (!setlocale (LC_NUMERIC,"es_ES.utf8")) // Return to spanish system (TODO: this should be internationalized!!!!!!!)
|
||||
Lay_ShowAlert (Lay_ERROR,"Can not set locale to es_ES.");
|
||||
|
||||
NumRows = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get test questions");
|
||||
|
||||
|
|
Loading…
Reference in New Issue