mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-15 21:24:07 +02:00
Version 14.98.4
This commit is contained in:
parent
08438a8d06
commit
8ebe457760
|
@ -265,6 +265,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
||||||
.ICON28x28 {width:28px; height:28px; vertical-align:middle;}
|
.ICON28x28 {width:28px; height:28px; vertical-align:middle;}
|
||||||
.ICON32x32 {width:32px; height:32px; vertical-align:middle;}
|
.ICON32x32 {width:32px; height:32px; vertical-align:middle;}
|
||||||
.ICON32x32B {width:32px; height:32px; vertical-align:middle; display:block;}
|
.ICON32x32B {width:32px; height:32px; vertical-align:middle; display:block;}
|
||||||
|
.ICON48x48 {width:48px; height:48px; vertical-align:middle;}
|
||||||
.ICON64x64 {width:64px; height:64px; vertical-align:middle;}
|
.ICON64x64 {width:64px; height:64px; vertical-align:middle;}
|
||||||
|
|
||||||
/********************************* Frame 10 **********************************/
|
/********************************* Frame 10 **********************************/
|
||||||
|
|
|
@ -229,6 +229,7 @@ p {margin:0;}
|
||||||
.ICON16x16B {width:16px; height:16px; vertical-align:middle; display:block;}
|
.ICON16x16B {width:16px; height:16px; vertical-align:middle; display:block;}
|
||||||
.ICON32x32 {width:32px; height:32px; vertical-align:middle;}
|
.ICON32x32 {width:32px; height:32px; vertical-align:middle;}
|
||||||
.ICON32x32B {width:32px; height:32px; vertical-align:middle; display:block;}
|
.ICON32x32B {width:32px; height:32px; vertical-align:middle; display:block;}
|
||||||
|
.ICON48x48 {width:48px; height:48px; vertical-align:middle;}
|
||||||
.ICON64x64 {width:64px; height:64px; vertical-align:middle;}
|
.ICON64x64 {width:64px; height:64px; vertical-align:middle;}
|
||||||
|
|
||||||
/********************************* Frame 10 **********************************/
|
/********************************* Frame 10 **********************************/
|
||||||
|
|
|
@ -103,11 +103,12 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.98.3 (2015/03/19)"
|
#define Log_PLATFORM_VERSION "SWAD 14.98.4 (2015/03/20)"
|
||||||
|
|
||||||
// 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 14.98.4: Mar 20, 2015 Fixed bugs in marks. (183430 lines)
|
||||||
Version 14.98.3: Mar 19, 2015 Changes in user's profile to speedup page generation. (183397 lines)
|
Version 14.98.3: Mar 19, 2015 Changes in user's profile to speedup page generation. (183397 lines)
|
||||||
Version 14.98.2: Mar 19, 2015 Fixed bug in record related to follow/unfollow. (183366 lines)
|
Version 14.98.2: Mar 19, 2015 Fixed bug in record related to follow/unfollow. (183366 lines)
|
||||||
Version 14.98.1: Mar 19, 2015 Changes in lists of following and followers. (183360 lines)
|
Version 14.98.1: Mar 19, 2015 Changes in lists of following and followers. (183360 lines)
|
||||||
|
|
11
swad_mark.c
11
swad_mark.c
|
@ -419,10 +419,13 @@ static bool Mrk_CheckIfCellContainsOnlyIDs (const char *CellContent)
|
||||||
// Users' IDs are always stored internally in capitals and without leading zeros
|
// Users' IDs are always stored internally in capitals and without leading zeros
|
||||||
Str_RemoveLeadingZeros (UsrIDFromTable);
|
Str_RemoveLeadingZeros (UsrIDFromTable);
|
||||||
Str_ConvertToUpperText (UsrIDFromTable);
|
Str_ConvertToUpperText (UsrIDFromTable);
|
||||||
if (ID_CheckIfUsrIDIsValid (UsrIDFromTable))
|
if (UsrIDFromTable[0]) // Something found
|
||||||
UsrIDFound = true;
|
{
|
||||||
else
|
if (ID_CheckIfUsrIDIsValid (UsrIDFromTable))
|
||||||
StuffNotUsrIDFound = true;
|
UsrIDFound = true;
|
||||||
|
else
|
||||||
|
StuffNotUsrIDFound = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Check if only user's IDs
|
/***** Check if only user's IDs
|
||||||
|
|
|
@ -442,7 +442,7 @@ void Str_ConvertToTitleType (char *Str)
|
||||||
{
|
{
|
||||||
Ch = *Ptr;
|
Ch = *Ptr;
|
||||||
if (isspace ((int) Ch) ||
|
if (isspace ((int) Ch) ||
|
||||||
Ch == '\xA0' ||
|
Ch == '\xA0' || // Unicode translation for
|
||||||
Ch == '-' ||
|
Ch == '-' ||
|
||||||
Ch == '(' ||
|
Ch == '(' ||
|
||||||
Ch == ')' ||
|
Ch == ')' ||
|
||||||
|
@ -461,7 +461,8 @@ void Str_ConvertToTitleType (char *Str)
|
||||||
for (Ptr2 = Ptr, LengthStr = 0;
|
for (Ptr2 = Ptr, LengthStr = 0;
|
||||||
*Ptr2;
|
*Ptr2;
|
||||||
Ptr2++, LengthStr++)
|
Ptr2++, LengthStr++)
|
||||||
if (isspace ((int) *Ptr2) || *Ptr2 == '\xA0')
|
if (isspace ((int) *Ptr2) ||
|
||||||
|
*Ptr2 == '\xA0') // Unicode translation for
|
||||||
break;
|
break;
|
||||||
if (LengthStr == 1)
|
if (LengthStr == 1)
|
||||||
{
|
{
|
||||||
|
@ -1069,7 +1070,8 @@ void Str_RemoveLeadingSpacesHTML (char *Str)
|
||||||
Ptr++)
|
Ptr++)
|
||||||
{
|
{
|
||||||
/* If it's space ==> continue in the loop */
|
/* If it's space ==> continue in the loop */
|
||||||
if (isspace ((int) *Ptr) || *Ptr == '\xA0') // Microsoft Excel uses A0 also as space!
|
if (isspace ((int) *Ptr) ||
|
||||||
|
*Ptr == '\xA0') // Unicode translation for
|
||||||
continue;
|
continue;
|
||||||
/* Check forward if it's a <br> or <br /> */
|
/* Check forward if it's a <br> or <br /> */
|
||||||
if (*Ptr == '<')
|
if (*Ptr == '<')
|
||||||
|
@ -1191,7 +1193,8 @@ void Str_RemoveTrailingSpacesHTML (char *Str)
|
||||||
Ptr--)
|
Ptr--)
|
||||||
{
|
{
|
||||||
/* If it's space ==> continue in the loop */
|
/* If it's space ==> continue in the loop */
|
||||||
if (isspace ((int) *Ptr) || *Ptr == '\xA0') // Microsoft Excel uses A0 also as space!
|
if (isspace ((int) *Ptr) ||
|
||||||
|
*Ptr == '\xA0') // Unicode translation for
|
||||||
continue;
|
continue;
|
||||||
/* Check backward if it's <br> or <br /> */
|
/* Check backward if it's <br> or <br /> */
|
||||||
if (*Ptr == '>')
|
if (*Ptr == '>')
|
||||||
|
@ -1727,7 +1730,8 @@ char *Str_GetCellFromHTMLTableSkipComments (FILE *FileSrc,char *Str,int MaxLengt
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Skip spaces *****/
|
/***** Skip spaces *****/
|
||||||
if (isspace (Ch) || Ch == 0xA0) // Microsoft Excel uses A0 also as space!
|
if (isspace (Ch) ||
|
||||||
|
Ch == 0xA0) // Unicode translation for
|
||||||
SpaceFound = true;
|
SpaceFound = true;
|
||||||
|
|
||||||
if (SpaceFound)
|
if (SpaceFound)
|
||||||
|
@ -1780,10 +1784,13 @@ void Str_GetNextStringUntilSpace (const char **StrSrc,char *StrDst,size_t MaxLen
|
||||||
if ((Ch = (int) **StrSrc) != 0)
|
if ((Ch = (int) **StrSrc) != 0)
|
||||||
(*StrSrc)++;
|
(*StrSrc)++;
|
||||||
}
|
}
|
||||||
while (isspace (Ch));
|
while (isspace (Ch) ||
|
||||||
|
Ch == 0xA0); // Unicode translation for
|
||||||
|
|
||||||
/***** Copy string while non-space characters *****/
|
/***** Copy string while non-space characters *****/
|
||||||
while (Ch && !isspace (Ch))
|
while (Ch &&
|
||||||
|
!(isspace (Ch) ||
|
||||||
|
Ch == 0xA0)) // Unicode translation for
|
||||||
{
|
{
|
||||||
if (i < MaxLength)
|
if (i < MaxLength)
|
||||||
StrDst[i++] = (char) Ch;
|
StrDst[i++] = (char) Ch;
|
||||||
|
@ -1809,10 +1816,17 @@ void Str_GetNextStringUntilSeparator (const char **StrSrc,char *StrDst,size_t Ma
|
||||||
if ((Ch = (int) **StrSrc) != 0)
|
if ((Ch = (int) **StrSrc) != 0)
|
||||||
(*StrSrc)++;
|
(*StrSrc)++;
|
||||||
}
|
}
|
||||||
while (isspace (Ch) || Ch == (int) ',' || Ch == (int) ';');
|
while (isspace (Ch) ||
|
||||||
|
Ch == 0xA0 || // Unicode translation for
|
||||||
|
Ch == (int) ',' ||
|
||||||
|
Ch == (int) ';');
|
||||||
|
|
||||||
/***** Copy string while no separator found *****/
|
/***** Copy string while no separator found *****/
|
||||||
while (Ch && !(isspace (Ch) || Ch == (int) ',' || Ch == (int) ';'))
|
while (Ch &&
|
||||||
|
!(isspace (Ch) ||
|
||||||
|
Ch == 0xA0 || // Unicode translation for
|
||||||
|
Ch == (int) ',' ||
|
||||||
|
Ch == (int) ';'))
|
||||||
{
|
{
|
||||||
if (i < MaxLength)
|
if (i < MaxLength)
|
||||||
StrDst[i++] = (char) Ch;
|
StrDst[i++] = (char) Ch;
|
||||||
|
@ -1834,10 +1848,18 @@ void Str_GetNextStringFromFileUntilSeparator (FILE *FileSrc,char *StrDst)
|
||||||
/***** Skip separators *****/
|
/***** Skip separators *****/
|
||||||
do
|
do
|
||||||
Ch = fgetc (FileSrc);
|
Ch = fgetc (FileSrc);
|
||||||
while (Ch != EOF && (isspace (Ch) || Ch == (int) ',' || Ch == (int) ';')); // Skip spaces, puntuación, etc.
|
while (Ch != EOF &&
|
||||||
|
(isspace (Ch) ||
|
||||||
|
Ch == 0xA0 || // Unicode translation for
|
||||||
|
Ch == (int) ',' ||
|
||||||
|
Ch == (int) ';')); // Skip spaces, puntuación, etc.
|
||||||
|
|
||||||
/***** Copy string while no separator found *****/
|
/***** Copy string while no separator found *****/
|
||||||
while (Ch != EOF && !(isspace (Ch) || Ch == (int) ',' || Ch == (int) ';'))
|
while (Ch != EOF &&
|
||||||
|
!(isspace (Ch) ||
|
||||||
|
Ch == 0xA0 || // Unicode translation for
|
||||||
|
Ch == (int) ',' ||
|
||||||
|
Ch == (int) ';'))
|
||||||
{
|
{
|
||||||
if (i < ID_MAX_LENGTH_USR_ID)
|
if (i < ID_MAX_LENGTH_USR_ID)
|
||||||
StrDst[i++] = (char) Ch;
|
StrDst[i++] = (char) Ch;
|
||||||
|
@ -1861,7 +1883,9 @@ void Str_GetNextStringUntilComma (const char **StrSrc,char *StrDst,size_t MaxLen
|
||||||
|
|
||||||
/***** Skip leading spaces and ',' *****/
|
/***** Skip leading spaces and ',' *****/
|
||||||
Ch = (int) **StrSrc;
|
Ch = (int) **StrSrc;
|
||||||
while (isspace (Ch) || Ch == (int) ',' || Ch == 0xA0) // Microsoft Excel uses A0 also as space!
|
while (isspace (Ch) ||
|
||||||
|
Ch == 0xA0 || // Unicode translation for
|
||||||
|
Ch == (int) ',')
|
||||||
{
|
{
|
||||||
(*StrSrc)++;
|
(*StrSrc)++;
|
||||||
Ch = (int) **StrSrc;
|
Ch = (int) **StrSrc;
|
||||||
|
@ -1884,7 +1908,8 @@ void Str_GetNextStringUntilComma (const char **StrSrc,char *StrDst,size_t MaxLen
|
||||||
for (Ptr--;
|
for (Ptr--;
|
||||||
Ptr >= *StrSrc;
|
Ptr >= *StrSrc;
|
||||||
Ptr--)
|
Ptr--)
|
||||||
if (!(isspace ((int) *Ptr) || *Ptr == '\xA0')) // Microsoft Excel uses A0 also as space!
|
if (!(isspace ((int) *Ptr) ||
|
||||||
|
*Ptr == '\xA0')) // Unicode translation for
|
||||||
break;
|
break;
|
||||||
*(Ptr+1) = '\0';
|
*(Ptr+1) = '\0';
|
||||||
}
|
}
|
||||||
|
@ -1941,7 +1966,8 @@ void Str_ReplaceSeveralSpacesForOne (char *Str)
|
||||||
/***** Do the replacing *****/
|
/***** Do the replacing *****/
|
||||||
for (PtrDst = PtrSrc = Str;
|
for (PtrDst = PtrSrc = Str;
|
||||||
*PtrSrc;)
|
*PtrSrc;)
|
||||||
if (isspace ((int) *PtrSrc) || *PtrSrc == '\xA0') // If character is printable in english ==> is OK; else ==> convert to code (Microsoft Excel uses A0 also as space!)
|
if (isspace ((int) *PtrSrc) ||
|
||||||
|
*PtrSrc == '\xA0') // Unicode translation for
|
||||||
{
|
{
|
||||||
if (!PreviousWasSpace)
|
if (!PreviousWasSpace)
|
||||||
*PtrDst++ = ' ';
|
*PtrDst++ = ' ';
|
||||||
|
@ -2130,7 +2156,8 @@ void Str_SkipSpacesInFile (FILE *FileSrc)
|
||||||
int Ch;
|
int Ch;
|
||||||
|
|
||||||
while ((Ch = fgetc (FileSrc)) != EOF)
|
while ((Ch = fgetc (FileSrc)) != EOF)
|
||||||
if (!isspace (Ch))
|
if (!(isspace (Ch) ||
|
||||||
|
Ch == 0xA0)) // Unicode translation for
|
||||||
{
|
{
|
||||||
fseek (FileSrc,-1L,SEEK_CUR);
|
fseek (FileSrc,-1L,SEEK_CUR);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user