mirror of https://github.com/acanas/swad-core.git
Version 21.65: Dec 01, 2021 Selection of shape of user photos.
This commit is contained in:
parent
d2988d8895
commit
15607b19e5
|
@ -2120,16 +2120,36 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
|
|||
}
|
||||
|
||||
/******************************* User's photo ********************************/
|
||||
.PHOTO12x16 {width: 12px; height: 16px; border-radius:1px; vertical-align:middle; margin-top:-2px;}
|
||||
.PHOTO15x20 {width: 15px; height: 20px; border-radius:1px; vertical-align:middle;}
|
||||
.PHOTO15x20B {width: 15px; height: 20px; border-radius:1px; vertical-align:middle; display:block; margin:0 auto;}
|
||||
.PHOTO18x24 {width: 18px; height: 24px; border-radius:2px; vertical-align:middle;}
|
||||
.PHOTO21x28 {width: 21px; height: 28px; border-radius:2px; vertical-align:middle;}
|
||||
.PHOTO30x40 {width: 30px; height: 40px; border-radius:2px; vertical-align:middle;}
|
||||
.PHOTO42x56 {width: 42px; height: 56px; border-radius:3px; vertical-align:middle;}
|
||||
.PHOTO45x60 {width: 45px; height: 60px; border-radius:3px; vertical-align:middle;}
|
||||
.PHOTO60x80 {width: 60px; height: 80px; border-radius:3px; vertical-align:middle;}
|
||||
.PHOTO186x248 {width:186px; height:248px; border-radius:4px; vertical-align:middle;}
|
||||
.PHOTOC12x16 {width: 12px; height: 16px; clip-path: circle(50% at center); vertical-align:middle; margin-top:-2px;}
|
||||
.PHOTOC15x20 {width: 15px; height: 20px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
.PHOTOC15x20B {width: 15px; height: 20px; clip-path: circle(50% at center); vertical-align:middle; display:block; margin:0 auto;}
|
||||
.PHOTOC18x24 {width: 18px; height: 24px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
.PHOTOC21x28 {width: 21px; height: 28px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
.PHOTOC30x40 {width: 30px; height: 40px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
.PHOTOC45x60 {width: 45px; height: 60px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
.PHOTOC60x80 {width: 60px; height: 80px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
.PHOTOC186x248 {width:186px; height:248px; clip-path: circle(50% at center); vertical-align:middle;}
|
||||
|
||||
.PHOTOE12x16 {width: 12px; height: 16px; clip-path: ellipse(50% 50% at center); vertical-align:middle; margin-top:-2px;}
|
||||
.PHOTOE15x20 {width: 15px; height: 20px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
.PHOTOE15x20B {width: 15px; height: 20px; clip-path: ellipse(50% 50% at center); vertical-align:middle; display:block; margin:0 auto;}
|
||||
.PHOTOE18x24 {width: 18px; height: 24px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
.PHOTOE21x28 {width: 21px; height: 28px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
.PHOTOE30x40 {width: 30px; height: 40px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
.PHOTOE45x60 {width: 45px; height: 60px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
.PHOTOE60x80 {width: 60px; height: 80px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
.PHOTOE186x248 {width:186px; height:248px; clip-path: ellipse(50% 50% at center); vertical-align:middle;}
|
||||
|
||||
.PHOTOR12x16 {width: 12px; height: 16px; border-radius:1px; vertical-align:middle; margin-top:-2px;}
|
||||
.PHOTOR15x20 {width: 15px; height: 20px; border-radius:1px; vertical-align:middle;}
|
||||
.PHOTOR15x20B {width: 15px; height: 20px; border-radius:1px; vertical-align:middle; display:block; margin:0 auto;}
|
||||
.PHOTOR18x24 {width: 18px; height: 24px; border-radius:2px; vertical-align:middle;}
|
||||
.PHOTOR21x28 {width: 21px; height: 28px; border-radius:2px; vertical-align:middle;}
|
||||
.PHOTOR30x40 {width: 30px; height: 40px; border-radius:2px; vertical-align:middle;}
|
||||
.PHOTOR45x60 {width: 45px; height: 60px; border-radius:3px; vertical-align:middle;}
|
||||
.PHOTOR60x80 {width: 60px; height: 80px; border-radius:3px; vertical-align:middle;}
|
||||
.PHOTOR186x248 {width:186px; height:248px; border-radius:4px; vertical-align:middle;}
|
||||
|
||||
.IMG_USR
|
||||
{
|
||||
box-sizing:border-box;
|
|
@ -1291,6 +1291,7 @@ CREATE TABLE IF NOT EXISTS set_ip_settings (
|
|||
IconSet CHAR(16) NOT NULL,
|
||||
Menu TINYINT NOT NULL DEFAULT 0,
|
||||
SideCols TINYINT NOT NULL,
|
||||
UsrPhotos TINYINT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY(IP),
|
||||
INDEX(UsrCod),
|
||||
INDEX(LastChange));
|
||||
|
@ -1625,6 +1626,7 @@ CREATE TABLE IF NOT EXISTS usr_data (
|
|||
Comments TEXT NOT NULL,
|
||||
Menu TINYINT NOT NULL DEFAULT 0,
|
||||
SideCols TINYINT NOT NULL DEFAULT 3,
|
||||
UsrPhotos TINYINT NOT NULL DEFAULT 0,
|
||||
ThirdPartyCookies ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||
NotifNtfEvents INT NOT NULL DEFAULT 0,
|
||||
EmailNtfEvents INT NOT NULL DEFAULT 0,
|
||||
|
@ -1645,6 +1647,7 @@ CREATE TABLE IF NOT EXISTS usr_data (
|
|||
INDEX(CtrCod),
|
||||
INDEX(Menu),
|
||||
INDEX(SideCols),
|
||||
INDEX(UsrPhotos),
|
||||
INDEX(ThirdPartyCookies));
|
||||
--
|
||||
-- Table usr_duplicated: stores informs of users possibly duplicated
|
||||
|
|
|
@ -115,7 +115,8 @@ long Acc_DB_CreateNewUsr (const struct UsrData *UsrDat)
|
|||
"CtyCod,"
|
||||
"LocalPhone,FamilyPhone,"
|
||||
"Birthday,Comments,"
|
||||
"Menu,SideCols,NotifNtfEvents,EmailNtfEvents)"
|
||||
"Menu,SideCols,UsrPhotos,"
|
||||
"NotifNtfEvents,EmailNtfEvents)"
|
||||
" VALUES"
|
||||
" ('%s','%s',"
|
||||
"'%s','%s','%s','%s',"
|
||||
|
@ -124,7 +125,8 @@ long Acc_DB_CreateNewUsr (const struct UsrData *UsrDat)
|
|||
"%ld,"
|
||||
"'%s','%s',"
|
||||
"%s,'%s',"
|
||||
"%u,%u,-1,0)",
|
||||
"%u,%u,%u,"
|
||||
"-1,0)",
|
||||
UsrDat->EnUsrCod,
|
||||
UsrDat->Password,
|
||||
UsrDat->Surname1,
|
||||
|
@ -146,7 +148,8 @@ long Acc_DB_CreateNewUsr (const struct UsrData *UsrDat)
|
|||
UsrDat->Comments ? UsrDat->Comments :
|
||||
"",
|
||||
(unsigned) Mnu_MENU_DEFAULT,
|
||||
(unsigned) Cfg_DEFAULT_COLUMNS);
|
||||
(unsigned) Cfg_DEFAULT_COLUMNS,
|
||||
(unsigned) Set_USR_PHOTOS_DEFAULT);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -1810,6 +1810,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
[ActChgCol ] = { 674,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Set_ChangeSideCols ,Set_EditSettings ,NULL},
|
||||
[ActChgIco ] = {1092,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Ico_ChangeIconSet ,Set_EditSettings ,NULL},
|
||||
[ActChgMnu ] = {1243,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Mnu_ChangeMenu ,Set_EditSettings ,NULL},
|
||||
[ActChgUsrPho ] = {1917,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Set_ChangeUsrPhotos ,Set_EditSettings ,NULL},
|
||||
[ActChgPriPho ] = { 774,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ChangePhotoVisibility ,NULL},
|
||||
[ActChgBasPriPrf ] = {1404,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ChangeBasicProfileVis ,NULL},
|
||||
[ActChgExtPriPrf ] = {1765,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ChangeExtendedProfileVis ,NULL},
|
||||
|
@ -3743,6 +3744,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
|||
ActChgMch, // #1914
|
||||
ActFixMchSco, // #1915
|
||||
ActFixTstSco, // #1916
|
||||
ActChgUsrPho, // #1917
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -65,7 +65,7 @@ typedef enum
|
|||
|
||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||
|
||||
#define Act_MAX_ACTION_COD 1916
|
||||
#define Act_MAX_ACTION_COD 1917
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||
|
||||
|
@ -1726,18 +1726,19 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
|||
#define ActChgCol (ActSeeMyUsgRep + 52)
|
||||
#define ActChgIco (ActSeeMyUsgRep + 53)
|
||||
#define ActChgMnu (ActSeeMyUsgRep + 54)
|
||||
#define ActChgPriPho (ActSeeMyUsgRep + 55)
|
||||
#define ActChgBasPriPrf (ActSeeMyUsgRep + 56)
|
||||
#define ActChgExtPriPrf (ActSeeMyUsgRep + 57)
|
||||
#define ActChgCooPrf (ActSeeMyUsgRep + 58)
|
||||
#define ActChgNtfPrf (ActSeeMyUsgRep + 59)
|
||||
#define ActChgUsrPho (ActSeeMyUsgRep + 55)
|
||||
#define ActChgPriPho (ActSeeMyUsgRep + 56)
|
||||
#define ActChgBasPriPrf (ActSeeMyUsgRep + 57)
|
||||
#define ActChgExtPriPrf (ActSeeMyUsgRep + 58)
|
||||
#define ActChgCooPrf (ActSeeMyUsgRep + 59)
|
||||
#define ActChgNtfPrf (ActSeeMyUsgRep + 60)
|
||||
|
||||
#define ActPrnUsrQR (ActSeeMyUsgRep + 60)
|
||||
#define ActPrnUsrQR (ActSeeMyUsgRep + 61)
|
||||
|
||||
#define ActPrnMyTT (ActSeeMyUsgRep + 61)
|
||||
#define ActEdiTut (ActSeeMyUsgRep + 62)
|
||||
#define ActChgTut (ActSeeMyUsgRep + 63)
|
||||
#define ActChgMyTT1stDay (ActSeeMyUsgRep + 64)
|
||||
#define ActPrnMyTT (ActSeeMyUsgRep + 62)
|
||||
#define ActEdiTut (ActSeeMyUsgRep + 63)
|
||||
#define ActChgTut (ActSeeMyUsgRep + 64)
|
||||
#define ActChgMyTT1stDay (ActSeeMyUsgRep + 65)
|
||||
|
||||
#define Act_NUM_ACTIONS (ActChgMyTT1stDay + 1)
|
||||
|
||||
|
|
|
@ -1680,6 +1680,12 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
struct UsrData *UsrDat,
|
||||
struct Att_Event *Event)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
bool Present;
|
||||
char CommentStd[Cns_MAX_BYTES_TEXT + 1];
|
||||
char CommentTch[Cns_MAX_BYTES_TEXT + 1];
|
||||
|
@ -1749,7 +1755,9 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
|
|||
if (Gbl.Usrs.Listing.WithPhotos)
|
||||
{
|
||||
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO45x60",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -2906,6 +2914,12 @@ static void Att_WriteTableHeadSeveralAttEvents (const struct Att_Events *Events)
|
|||
static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
||||
unsigned NumUsr,struct UsrData *UsrDat)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
unsigned NumAttEvent;
|
||||
bool Present;
|
||||
unsigned NumTimesPresent;
|
||||
|
@ -2924,7 +2938,9 @@ static void Att_WriteRowUsrSeveralAttEvents (const struct Att_Events *Events,
|
|||
if (Gbl.Usrs.Listing.WithPhotos)
|
||||
{
|
||||
HTM_TD_Begin ("class=\"LM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -3058,6 +3074,12 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
|
|||
{
|
||||
extern const char *Txt_Student_comment;
|
||||
extern const char *Txt_Teachers_comment;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
unsigned NumAttEvent;
|
||||
unsigned UniqueId;
|
||||
char *Id;
|
||||
|
@ -3080,7 +3102,9 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
|
|||
|
||||
/***** Show student's photo *****/
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
|
|
|
@ -62,12 +62,13 @@ struct ALn_Substring
|
|||
|
||||
struct ALn_Link
|
||||
{
|
||||
ALn_LinkType_t Type;
|
||||
struct ALn_Substring URLorNick;
|
||||
struct ALn_Substring NickAnchor[3];
|
||||
size_t AddedLengthUntilHere; // Total length of extra HTML code added until this link (included)
|
||||
struct ALn_Link *Prev;
|
||||
struct ALn_Link *Next;
|
||||
ALn_LinkType_t Type; // URL or nickname?
|
||||
struct ALn_Substring URLorNick; // Link text
|
||||
struct ALn_Substring NickAnchor[3]; // Pointer to anchors if nick
|
||||
size_t LengthAddedUpToHere; // Total length of extra HTML code
|
||||
// added up to this link (included)
|
||||
struct ALn_Link *Prev; // Pointer to previous link
|
||||
struct ALn_Link *Next; // Pointer to next link
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -144,7 +145,36 @@ action="https://localhost/swad/es" method="post">
|
|||
</form>
|
||||
|
||||
*/
|
||||
/*
|
||||
______ ______ ______ ______
|
||||
|______|<-- -->|______|<-- -->|______|<-- -->|______|<--- LastLink
|
||||
|______| \/ |______| \/ |______| \/ |______|
|
||||
|______| /\ |______| /\ |______| /\ |______|
|
||||
|_NULL_| / ---|_Prev_| / ---|_Prev_| / ---|_Prev_|
|
||||
|_Next_|-- |_Next_|-- |_Next_|-- |_NULL_|
|
||||
|
||||
1 Move forward the text after the link
|
||||
2 Copy the 3rd part of the anchor
|
||||
3 Move forward the link
|
||||
4 Copy the 2nd part of the anchor
|
||||
5 Copy the link into the anchor
|
||||
6 Copy the 1st part of the anchor
|
||||
|
||||
Hi @admin, can I use https://openswad.org for free?
|
||||
_______________________________
|
||||
|H|i|_|@|a|d|m|i|n|,|_|c|a|n|...|
|
||||
| | | | | | | | | | | | | | |
|
||||
| | | | | | | | | \_\_\_\_\_\______________________________________1____
|
||||
| | | \ \ \ \ \ \ \ \ \ \ \ \
|
||||
| | | \_\_\_\_\_\_________________________3____ | | | | | |
|
||||
| | | \ \ \ \ \ \ \ \ \ \ \ \ | | | | | |
|
||||
| | | \_\_\_\_\_\_5____ | | | | | | | | | | | |
|
||||
| | | \ \ \ \ \ \ | | | | | | | | | | | |
|
||||
| | | 6 | | | | | | 4 | | | | | | 2 | | | | | |
|
||||
v v v anchor#1 v v v v v v anchor#2 v v v v v v anchor#3 v v v v v v
|
||||
___________________________________________________________________________
|
||||
|H|i|_|<|_|_|_|_|@|a|d|m|i|n|_|_|_|_|>|@|a|d|m|i|n|<|_|_|_|_|>|,|_|c|a|n|...|
|
||||
*/
|
||||
void ALn_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScreen)
|
||||
{
|
||||
size_t TxtLength;
|
||||
|
@ -186,7 +216,7 @@ void ALn_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
|
|||
/***** Insert links from end to start of text,
|
||||
only if there is enough space available in text *****/
|
||||
TxtLength = strlen (Txt);
|
||||
if (TxtLength + LastLink->AddedLengthUntilHere <= MaxLength)
|
||||
if (TxtLength + LastLink->LengthAddedUpToHere <= MaxLength)
|
||||
for (Link = LastLink;
|
||||
Link;
|
||||
Link = Link->Prev)
|
||||
|
@ -213,14 +243,14 @@ void ALn_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
|
|||
to avoid overwriting source) *****/
|
||||
PtrSrc = (Link == LastLink) ? Txt + TxtLength :
|
||||
Link->Next->URLorNick.Str - 1,
|
||||
PtrDst = PtrSrc + Link->AddedLengthUntilHere,
|
||||
PtrDst = PtrSrc + Link->LengthAddedUpToHere ,
|
||||
Length = PtrSrc - (Link->URLorNick.Str + Link->URLorNick.Len - 1);
|
||||
for (i = 0;
|
||||
i < Length;
|
||||
i++)
|
||||
*PtrDst-- = *PtrSrc--;
|
||||
|
||||
/***** Step 2: Copy third part of anchor *****/
|
||||
/***** Step 2: Copy the third part of the anchor *****/
|
||||
ALn_CopySubstring (Anchor[2],&PtrDst);
|
||||
|
||||
/***** Step 3: Move forward the link (URL or nickname)
|
||||
|
@ -249,15 +279,15 @@ void ALn_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
|
|||
break;
|
||||
}
|
||||
|
||||
/***** Step 4: Copy second part of anchor *****/
|
||||
/***** Step 4: Copy the second part of the anchor *****/
|
||||
ALn_CopySubstring (Anchor[1],&PtrDst);
|
||||
|
||||
/***** Step 5: Copy link into directive A
|
||||
/***** Step 5: Copy the link into the anchor
|
||||
(it's mandatory to do the copy in reverse order
|
||||
to avoid overwriting source URL or nickname) *****/
|
||||
ALn_CopySubstring (&Link->URLorNick,&PtrDst);
|
||||
|
||||
/***** Step 6: Copy first part of anchor *****/
|
||||
/***** Step 6: Copy the first part of the anchor *****/
|
||||
ALn_CopySubstring (Anchor[0],&PtrDst);
|
||||
}
|
||||
}
|
||||
|
@ -399,11 +429,11 @@ static ALn_LinkType_t ALn_CheckURL (char **PtrSrc,char PrevCh,
|
|||
}
|
||||
|
||||
/***** Compute number of bytes added until here *****/
|
||||
(*Link)->AddedLengthUntilHere = (*Link)->Prev ? (*Link)->Prev->AddedLengthUntilHere :
|
||||
(*Link)->LengthAddedUpToHere = (*Link)->Prev ? (*Link)->Prev->LengthAddedUpToHere :
|
||||
0;
|
||||
(*Link)->URLorNick.Len = (size_t) (PtrEnd + 1 - (*Link)->URLorNick.Str);
|
||||
if ((*Link)->URLorNick.Len <= MaxCharsURLOnScreen)
|
||||
(*Link)->AddedLengthUntilHere += ALn_URL_ANCHOR_TOTAL_LENGTH +
|
||||
(*Link)->LengthAddedUpToHere += ALn_URL_ANCHOR_TOTAL_LENGTH +
|
||||
(*Link)->URLorNick.Len;
|
||||
else // If URL is too long to be displayed ==> short it
|
||||
{
|
||||
|
@ -411,7 +441,7 @@ static ALn_LinkType_t ALn_CheckURL (char **PtrSrc,char PrevCh,
|
|||
Err_NotEnoughMemoryExit ();
|
||||
strncpy (Limited,(*Link)->URLorNick.Str,(*Link)->URLorNick.Len);
|
||||
Limited[(*Link)->URLorNick.Len] = '\0';
|
||||
(*Link)->AddedLengthUntilHere += ALn_URL_ANCHOR_TOTAL_LENGTH +
|
||||
(*Link)->LengthAddedUpToHere += ALn_URL_ANCHOR_TOTAL_LENGTH +
|
||||
Str_LimitLengthHTMLStr (Limited,MaxCharsURLOnScreen);
|
||||
free (Limited);
|
||||
}
|
||||
|
@ -431,6 +461,12 @@ static ALn_LinkType_t ALn_CheckNickname (char **PtrSrc,char PrevCh,
|
|||
struct ALn_Link **LastLink)
|
||||
{
|
||||
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC12x16",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE12x16",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR12x16",
|
||||
};
|
||||
char Ch;
|
||||
size_t Length;
|
||||
char ParamsStr[Frm_MAX_BYTES_PARAMS_STR];
|
||||
|
@ -531,7 +567,7 @@ static ALn_LinkType_t ALn_CheckNickname (char **PtrSrc,char PrevCh,
|
|||
ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (&UsrDat,PhotoURL);
|
||||
Pho_BuildHTMLUsrPhoto (&UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
"PHOTO12x16",Pho_ZOOM,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
&CaptionStr,
|
||||
&ImgStr);
|
||||
if (asprintf (&(*Link)->NickAnchor[2].Str,
|
||||
|
@ -547,9 +583,9 @@ static ALn_LinkType_t ALn_CheckNickname (char **PtrSrc,char PrevCh,
|
|||
Usr_UsrDataDestructor (&UsrDat);
|
||||
|
||||
/***** Compute number of bytes added until here *****/
|
||||
(*Link)->AddedLengthUntilHere = (*Link)->Prev ? (*Link)->Prev->AddedLengthUntilHere :
|
||||
(*Link)->LengthAddedUpToHere = (*Link)->Prev ? (*Link)->Prev->LengthAddedUpToHere :
|
||||
0;
|
||||
(*Link)->AddedLengthUntilHere += (*Link)->NickAnchor[0].Len +
|
||||
(*Link)->LengthAddedUpToHere += (*Link)->NickAnchor[0].Len +
|
||||
(*Link)->URLorNick.Len +
|
||||
(*Link)->NickAnchor[1].Len +
|
||||
(*Link)->NickAnchor[2].Len;
|
||||
|
|
|
@ -3229,10 +3229,18 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
|
|||
[Rol_NET] = ActSeeRecOneTch,
|
||||
[Rol_TCH] = ActSeeRecOneTch,
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC60x80",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE60x80",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR60x80",
|
||||
};
|
||||
|
||||
/***** Show user's photo *****/
|
||||
HTM_TD_Begin ("class=\"OWNER_WORKS_PHOTO\"");
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO60x80",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Begin form to send a message to this user *****/
|
||||
|
@ -5444,6 +5452,12 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
|
|||
static void Brw_WriteFileOrFolderPublisher (unsigned Level,long UsrCod)
|
||||
{
|
||||
extern const char *Txt_Unknown_or_without_photo;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC15x20B",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE15x20B",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR15x20B",
|
||||
};
|
||||
bool ShowUsr = false;
|
||||
struct UsrData UsrDat;
|
||||
|
||||
|
@ -5463,9 +5477,12 @@ static void Brw_WriteFileOrFolderPublisher (unsigned Level,long UsrCod)
|
|||
|
||||
if (ShowUsr)
|
||||
/***** Show photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,"PHOTO15x20B",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
else
|
||||
Ico_PutIcon ("usr_bl.jpg",Txt_Unknown_or_without_photo,"PHOTO15x20B");
|
||||
Ico_PutIcon ("usr_bl.jpg",Txt_Unknown_or_without_photo,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos]);
|
||||
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -7826,6 +7843,12 @@ void Brw_ShowFileMetadata (void)
|
|||
extern const char *Txt_user[Usr_NUM_SEXS];
|
||||
extern const char *Txt_users[Usr_NUM_SEXS];
|
||||
extern const char *Txt_Save_file_properties;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC15x20",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE15x20",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR15x20",
|
||||
};
|
||||
struct FileMetadata FileMetadata;
|
||||
struct UsrData PublisherUsrDat;
|
||||
char FileNameToShow[NAME_MAX + 1];
|
||||
|
@ -7989,7 +8012,9 @@ void Brw_ShowFileMetadata (void)
|
|||
if (FileHasPublisher)
|
||||
{
|
||||
/* Show photo */
|
||||
Pho_ShowUsrPhotoIfAllowed (&PublisherUsrDat,"PHOTO15x20",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&PublisherUsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
|
||||
/* Write name */
|
||||
HTM_NBSP ();
|
||||
|
|
|
@ -602,13 +602,20 @@ TODO: FIX BUG, URGENT! En las fechas como par
|
|||
|
||||
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 21.64.1 (2021-11-28)"
|
||||
#define CSS_FILE "swad21.59.css"
|
||||
#define Log_PLATFORM_VERSION "SWAD 21.65 (2021-12-01)"
|
||||
#define CSS_FILE "swad21.65.css"
|
||||
#define JS_FILE "swad21.59.js"
|
||||
/*
|
||||
TODO: Rename CENTRE to CENTER in help wiki.
|
||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||
|
||||
Version 21.65: Dec 01, 2021 Selection of shape of user photos. (320755 lines)
|
||||
4 changes necessary in database:
|
||||
ALTER TABLE set_ip_settings ADD COLUMN UsrPhotos TINYINT NOT NULL DEFAULT 0 AFTER SideCols;
|
||||
UPDATE set_ip_settings SET UsrPhotos=2;
|
||||
ALTER TABLE usr_data ADD COLUMN UsrPhotos TINYINT NOT NULL DEFAULT 0 AFTER SideCols,ADD INDEX (UsrPhotos);
|
||||
UPDATE usr_data SET UsrPhotos=2;
|
||||
|
||||
Version 21.64.1: Nov 28, 2021 Code refactoring in link insertion. (320070 lines)
|
||||
Version 21.64: Nov 28, 2021 New module swad_autolink to insert links in texts. (320076 lines)
|
||||
Version 21.63: Nov 26, 2021 Fixing of corruption in test prints and match prints. (320010 lines)
|
||||
|
|
|
@ -556,6 +556,12 @@ static void Con_WriteRowConnectedUsrOnRightColumn (Rol_Role_t Role)
|
|||
[Rol_NET] = ActSeeRecOneTch,
|
||||
[Rol_TCH] = ActSeeRecOneTch,
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
const char *ClassTxt;
|
||||
const char *ClassLink;
|
||||
long UsrCod;
|
||||
|
@ -587,7 +593,9 @@ static void Con_WriteRowConnectedUsrOnRightColumn (Rol_Role_t Role)
|
|||
|
||||
/***** Show photo *****/
|
||||
HTM_TD_Begin ("class=\"CON_PHOTO COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,true);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
true);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write full name and link *****/
|
||||
|
@ -649,6 +657,12 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
|
|||
[Rol_NET] = ActSeeRecOneTch,
|
||||
[Rol_TCH] = ActSeeRecOneTch,
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumUsrs = 0; // Initialized to avoid warning
|
||||
|
@ -695,7 +709,9 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
|
|||
|
||||
/***** Show photo *****/
|
||||
HTM_TD_Begin ("class=\"CON_PHOTO COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write full name and link *****/
|
||||
|
|
|
@ -2689,20 +2689,21 @@ mysql> DESCRIBE ses_sessions;
|
|||
/***** Table set_ip_settings *****/
|
||||
/*
|
||||
mysql> DESCRIBE set_ip_settings;
|
||||
+----------------+------------+------+-----+---------+-------+
|
||||
+----------------+----------+------+-----+---------+-------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+----------------+------------+------+-----+---------+-------+
|
||||
+----------------+----------+------+-----+---------+-------+
|
||||
| IP | char(15) | NO | PRI | NULL | |
|
||||
| UsrCod | int(11) | NO | MUL | -1 | |
|
||||
| UsrCod | int | NO | MUL | -1 | |
|
||||
| LastChange | datetime | NO | MUL | NULL | |
|
||||
| FirstDayOfWeek | tinyint(4) | NO | | 0 | |
|
||||
| DateFormat | tinyint(4) | NO | | 0 | |
|
||||
| FirstDayOfWeek | tinyint | NO | | 0 | |
|
||||
| DateFormat | tinyint | NO | | 0 | |
|
||||
| Theme | char(16) | NO | | NULL | |
|
||||
| IconSet | char(16) | NO | | NULL | |
|
||||
| Menu | tinyint(4) | NO | | 0 | |
|
||||
| SideCols | tinyint(4) | NO | | NULL | |
|
||||
+----------------+------------+------+-----+---------+-------+
|
||||
9 rows in set (0,00 sec)
|
||||
| Menu | tinyint | NO | | 0 | |
|
||||
| SideCols | tinyint | NO | | NULL | |
|
||||
| UsrPhotos | tinyint | NO | | 0 | |
|
||||
+----------------+----------+------+-----+---------+-------+
|
||||
10 rows in set (0,01 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS set_ip_settings ("
|
||||
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||
|
@ -2714,6 +2715,7 @@ mysql> DESCRIBE set_ip_settings;
|
|||
"IconSet CHAR(16) NOT NULL," // Ico_MAX_BYTES_ICON_SET_ID
|
||||
"Menu TINYINT NOT NULL DEFAULT 0,"
|
||||
"SideCols TINYINT NOT NULL,"
|
||||
"UsrPhotos TINYINT NOT NULL DEFAULT 0,"
|
||||
"PRIMARY KEY (IP),"
|
||||
"INDEX(UsrCod),"
|
||||
"INDEX(LastChange))");
|
||||
|
@ -3361,7 +3363,7 @@ mysql> DESCRIBE usr_data;
|
|||
+-------------------+--------------------------------------------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-------------------+--------------------------------------------------+------+-----+---------+----------------+
|
||||
| UsrCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| UsrCod | int | NO | PRI | NULL | auto_increment |
|
||||
| EncryptedUsrCod | char(43) | NO | UNI | | |
|
||||
| Password | char(86) | NO | | | |
|
||||
| Surname1 | varchar(511) | NO | | | |
|
||||
|
@ -3371,17 +3373,17 @@ mysql> DESCRIBE usr_data;
|
|||
| Theme | char(16) | NO | MUL | | |
|
||||
| IconSet | char(16) | NO | MUL | | |
|
||||
| Language | char(2) | NO | MUL | | |
|
||||
| FirstDayOfWeek | tinyint(4) | NO | MUL | 0 | |
|
||||
| DateFormat | tinyint(4) | NO | MUL | 0 | |
|
||||
| FirstDayOfWeek | tinyint | NO | MUL | 0 | |
|
||||
| DateFormat | tinyint | NO | MUL | 0 | |
|
||||
| Photo | char(43) | NO | | | |
|
||||
| PhotoVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
|
||||
| BaPrfVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
|
||||
| ExPrfVisibility | enum('unknown','user','course','system','world') | NO | MUL | unknown | |
|
||||
| CtyCod | int(11) | NO | MUL | -1 | |
|
||||
| InsCtyCod | int(11) | NO | MUL | -1 | |
|
||||
| InsCod | int(11) | NO | MUL | -1 | |
|
||||
| DptCod | int(11) | NO | MUL | -1 | |
|
||||
| CtrCod | int(11) | NO | MUL | -1 | |
|
||||
| CtyCod | int | NO | MUL | -1 | |
|
||||
| InsCtyCod | int | NO | MUL | -1 | |
|
||||
| InsCod | int | NO | MUL | -1 | |
|
||||
| DptCod | int | NO | MUL | -1 | |
|
||||
| CtrCod | int | NO | MUL | -1 | |
|
||||
| Office | varchar(2047) | NO | | | |
|
||||
| OfficePhone | char(16) | NO | | | |
|
||||
| LocalAddress | varchar(2047) | NO | | | |
|
||||
|
@ -3391,13 +3393,14 @@ mysql> DESCRIBE usr_data;
|
|||
| OriginPlace | varchar(2047) | NO | | | |
|
||||
| Birthday | date | YES | | NULL | |
|
||||
| Comments | text | NO | | NULL | |
|
||||
| Menu | tinyint(4) | NO | MUL | 0 | |
|
||||
| SideCols | tinyint(4) | NO | MUL | 3 | |
|
||||
| Menu | tinyint | NO | MUL | 0 | |
|
||||
| SideCols | tinyint | NO | MUL | 3 | |
|
||||
| UsrPhotos | tinyint | NO | MUL | 0 | |
|
||||
| ThirdPartyCookies | enum('N','Y') | NO | MUL | N | |
|
||||
| NotifNtfEvents | int(11) | NO | | 0 | |
|
||||
| EmailNtfEvents | int(11) | NO | | 0 | |
|
||||
| NotifNtfEvents | int | NO | | 0 | |
|
||||
| EmailNtfEvents | int | NO | | 0 | |
|
||||
+-------------------+--------------------------------------------------+------+-----+---------+----------------+
|
||||
35 rows in set (0.00 sec)
|
||||
36 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_data ("
|
||||
"UsrCod INT NOT NULL AUTO_INCREMENT,"
|
||||
|
@ -3432,6 +3435,7 @@ mysql> DESCRIBE usr_data;
|
|||
"Comments TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
|
||||
"Menu TINYINT NOT NULL DEFAULT 0,"
|
||||
"SideCols TINYINT NOT NULL DEFAULT 3,"
|
||||
"UsrPhotos TINYINT NOT NULL DEFAULT 0,"
|
||||
"ThirdPartyCookies ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||
"NotifNtfEvents INT NOT NULL DEFAULT 0,"
|
||||
"EmailNtfEvents INT NOT NULL DEFAULT 0,"
|
||||
|
@ -3452,6 +3456,7 @@ mysql> DESCRIBE usr_data;
|
|||
"INDEX(CtrCod),"
|
||||
"INDEX(Menu),"
|
||||
"INDEX(SideCols),"
|
||||
"INDEX(UsrPhotos),"
|
||||
"INDEX(ThirdPartyCookies))");
|
||||
|
||||
/***** Table usr_duplicated *****/
|
||||
|
|
|
@ -2074,6 +2074,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
extern const char *Txt_Register;
|
||||
extern const char *Txt_Reject;
|
||||
extern const char *Txt_No_enrolment_requests;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumReqs;
|
||||
|
@ -2235,7 +2241,9 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
|
|||
|
||||
/***** User photo *****/
|
||||
HTM_TD_Begin ("class=\"DAT CT\" style=\"width:22px;\"");
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** User name *****/
|
||||
|
|
|
@ -1483,6 +1483,12 @@ static void ExaRes_ComputeValidPrintScore (struct ExaPrn_Print *Print)
|
|||
void ExaRes_ShowExamResultUser (struct UsrData *UsrDat)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
|
||||
/***** Row begin *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -1501,7 +1507,9 @@ void ExaRes_ShowExamResultUser (struct UsrData *UsrDat)
|
|||
if (UsrDat->FrstName[0])
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
HTM_BR ();
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO45x60",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Row end *****/
|
||||
|
|
|
@ -211,6 +211,7 @@ static void Fig_GetAndShowNumUsrsPerIconSet (void);
|
|||
static void Fig_GetAndShowNumUsrsPerMenu (void);
|
||||
static void Fig_GetAndShowNumUsrsPerTheme (void);
|
||||
static void Fig_GetAndShowNumUsrsPerSideColumns (void);
|
||||
static void Fig_GetAndShowNumUsrsPerUserPhotos (void);
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Show use of the platform *************************/
|
||||
|
@ -371,6 +372,7 @@ void Fig_ShowFigures (void)
|
|||
[Fig_MENUS ] = Fig_GetAndShowNumUsrsPerMenu,
|
||||
[Fig_THEMES ] = Fig_GetAndShowNumUsrsPerTheme,
|
||||
[Fig_SIDE_COLUMNS ] = Fig_GetAndShowNumUsrsPerSideColumns,
|
||||
[Fig_USER_PHOTOS ] = Fig_GetAndShowNumUsrsPerUserPhotos,
|
||||
[Fig_PRIVACY ] = Fig_GetAndShowNumUsrsPerPrivacy,
|
||||
[Fig_COOKIES ] = Fig_GetAndShowNumUsrsPerCookies,
|
||||
};
|
||||
|
@ -3900,12 +3902,12 @@ static void Fig_GetAndShowNumUsrsPerSideColumns (void)
|
|||
extern const char *Txt_Columns;
|
||||
extern const char *Txt_Number_of_users;
|
||||
extern const char *Txt_PERCENT_of_users;
|
||||
extern const char *Txt_LAYOUT_SIDE_COLUMNS[4];
|
||||
unsigned SideCols;
|
||||
char *SubQuery;
|
||||
char *Icon;
|
||||
unsigned NumUsrs[4];
|
||||
unsigned NumUsrsTotal = 0;
|
||||
extern const char *Txt_LAYOUT_SIDE_COLUMNS[4];
|
||||
|
||||
/***** Begin box and table *****/
|
||||
Box_BoxTableBegin (NULL,Txt_FIGURE_TYPES[Fig_SIDE_COLUMNS],
|
||||
|
@ -3919,7 +3921,7 @@ static void Fig_GetAndShowNumUsrsPerSideColumns (void)
|
|||
HTM_TH (1,1,"RM",Txt_PERCENT_of_users);
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** For each language... *****/
|
||||
/***** For each layout of columns... *****/
|
||||
for (SideCols = 0;
|
||||
SideCols <= Lay_SHOW_BOTH_COLUMNS;
|
||||
SideCols++)
|
||||
|
@ -3967,3 +3969,83 @@ static void Fig_GetAndShowNumUsrsPerSideColumns (void)
|
|||
/***** End table and box *****/
|
||||
Box_BoxTableEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****** Get and show number of users who have chosen a user photo shape ******/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Fig_GetAndShowNumUsrsPerUserPhotos (void)
|
||||
{
|
||||
extern const char *Hlp_ANALYTICS_Figures_columns;
|
||||
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
|
||||
extern const char *Txt_User_photos;
|
||||
extern const char *Txt_Number_of_users;
|
||||
extern const char *Txt_PERCENT_of_users;
|
||||
extern const char *Txt_USER_PHOTOS[Set_NUM_USR_PHOTOS];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC15x20B",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE15x20B",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR15x20B",
|
||||
};
|
||||
Set_UsrPhotos_t UsrPhotos;
|
||||
char *SubQuery;
|
||||
unsigned NumUsrs[Set_NUM_USR_PHOTOS];
|
||||
unsigned NumUsrsTotal = 0;
|
||||
|
||||
/***** Begin box and table *****/
|
||||
Box_BoxTableBegin (NULL,Txt_FIGURE_TYPES[Fig_SIDE_COLUMNS],
|
||||
NULL,NULL,
|
||||
Hlp_ANALYTICS_Figures_columns,Box_NOT_CLOSABLE,2);
|
||||
|
||||
/***** Heading row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
HTM_TH (1,1,"CM",Txt_User_photos);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_users);
|
||||
HTM_TH (1,1,"RM",Txt_PERCENT_of_users);
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** For each user photo shape... *****/
|
||||
for (UsrPhotos = (Set_UsrPhotos_t) 0;
|
||||
UsrPhotos <= (Set_UsrPhotos_t) (Set_NUM_USR_PHOTOS - 1);
|
||||
UsrPhotos++)
|
||||
{
|
||||
/* Get the number of users who have chosen this layout of columns from database */
|
||||
if (asprintf (&SubQuery,"usr_data.UsrPhotos=%u",
|
||||
(unsigned) UsrPhotos) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
NumUsrs[UsrPhotos] = Usr_DB_GetNumUsrsWhoChoseAnOption (SubQuery);
|
||||
free (SubQuery);
|
||||
|
||||
/* Update total number of users */
|
||||
NumUsrsTotal += NumUsrs[UsrPhotos];
|
||||
}
|
||||
|
||||
/***** Write number of users who have chosen this user photo shape *****/
|
||||
for (UsrPhotos = (Set_UsrPhotos_t) 0;
|
||||
UsrPhotos <= (Set_UsrPhotos_t) (Set_NUM_USR_PHOTOS - 1);
|
||||
UsrPhotos++)
|
||||
{
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"CM\"");
|
||||
HTM_IMG (Cfg_URL_ICON_PUBLIC,"user.svg",Txt_USER_PHOTOS[UsrPhotos],
|
||||
"class=\"%s\"",ClassPhoto[UsrPhotos]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Unsigned (NumUsrs[UsrPhotos]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Percentage (NumUsrsTotal ? (double) NumUsrs[UsrPhotos] * 100.0 /
|
||||
(double) NumUsrsTotal :
|
||||
0.0);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
}
|
||||
|
||||
/***** End table and box *****/
|
||||
Box_BoxTableEnd ();
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
/************************** Public types and constants ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Fig_NUM_FIGURES 31
|
||||
#define Fig_NUM_FIGURES 32
|
||||
typedef enum
|
||||
{
|
||||
Fig_USERS, // Number of users
|
||||
|
@ -65,6 +65,7 @@ typedef enum
|
|||
Fig_MENUS, // Number of users per menu
|
||||
Fig_THEMES, // Number of users per theme
|
||||
Fig_SIDE_COLUMNS, // Number of users per layout of columns
|
||||
Fig_USER_PHOTOS, // Number of users per user photo shape
|
||||
Fig_PRIVACY, // Number of users per privacity
|
||||
Fig_COOKIES, // Number of users per acceptation of cookies
|
||||
} Fig_FigureType_t;
|
||||
|
|
|
@ -612,12 +612,20 @@ static void Fol_ListFollowersUsr (struct UsrData *UsrDat)
|
|||
static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat)
|
||||
{
|
||||
extern const char *Txt_Another_user_s_profile;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC60x80",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE60x80",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR60x80",
|
||||
};
|
||||
bool Visible = Pri_ShowingIsAllowed (UsrDat->BaPrfVisibility,UsrDat);
|
||||
|
||||
/***** Show user's photo *****/
|
||||
HTM_TD_Begin ("class=\"FOLLOW_PHOTO\"");
|
||||
if (Visible)
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO60x80",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Show user's name and icon to follow/unfollow *****/
|
||||
|
@ -662,6 +670,12 @@ static void Fol_ShowFollowedOrFollower (struct UsrData *UsrDat)
|
|||
static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat)
|
||||
{
|
||||
extern const char *Txt_Another_user_s_profile;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
bool Visible = Pri_ShowingIsAllowed (UsrDat->BaPrfVisibility,UsrDat);
|
||||
|
||||
/***** Show user's photo *****/
|
||||
|
@ -669,7 +683,9 @@ static void Fol_WriteRowUsrToFollowOnRightColumn (struct UsrData *UsrDat)
|
|||
|
||||
HTM_TD_Begin ("class=\"CON_PHOTO COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (Visible)
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** User's name *****/
|
||||
|
|
|
@ -2134,6 +2134,12 @@ static void For_ListForumThrs (struct For_Forums *Forums,
|
|||
extern const char *Txt_Thread_with_posts_from_you;
|
||||
extern const char *Txt_There_are_new_posts;
|
||||
extern const char *Txt_No_new_posts;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC15x20",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE15x20",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR15x20",
|
||||
};
|
||||
unsigned NumThr;
|
||||
unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1
|
||||
struct For_Thread Thr;
|
||||
|
@ -2181,7 +2187,7 @@ static void For_ListForumThrs (struct For_Forums *Forums,
|
|||
Gbl.Usrs.Me.PhotoURL[0] ? NULL :
|
||||
"usr_bl.jpg",
|
||||
Txt_Thread_with_posts_from_you,
|
||||
"class=\"PHOTO15x20\"");
|
||||
"class=\"%s\"",ClassPhoto[Gbl.Prefs.UsrPhotos]);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"CONTEXT_COL %s\"",BgColor);
|
||||
|
|
|
@ -145,10 +145,11 @@ struct Globals
|
|||
Lan_Language_t Language;
|
||||
unsigned FirstDayOfWeek;
|
||||
Dat_Format_t DateFormat;
|
||||
Mnu_Menu_t Menu;
|
||||
unsigned SideCols;
|
||||
The_Theme_t Theme;
|
||||
Ico_IconSet_t IconSet;
|
||||
Mnu_Menu_t Menu;
|
||||
The_Theme_t Theme;
|
||||
unsigned SideCols;
|
||||
Set_UsrPhotos_t UsrPhotos;
|
||||
char URLTheme[PATH_MAX + 1];
|
||||
char URLIconSet[PATH_MAX + 1];
|
||||
} Prefs;
|
||||
|
|
|
@ -4172,6 +4172,27 @@ const char *Hlp_PROFILE_Settings_columns =
|
|||
"PROFILE.Settings.en#columns";
|
||||
#endif
|
||||
|
||||
const char *Hlp_PROFILE_Settings_user_photos =
|
||||
#if L==1
|
||||
"PROFILE.Settings.es#fotos-de-usuarios";
|
||||
#elif L==2
|
||||
"PROFILE.Settings.en#user-photos";
|
||||
#elif L==3
|
||||
"PROFILE.Settings.en#user-photos";
|
||||
#elif L==4
|
||||
"PROFILE.Settings.es#fotos-de-usuarios";
|
||||
#elif L==5
|
||||
"PROFILE.Settings.en#user-photos";
|
||||
#elif L==6
|
||||
"PROFILE.Settings.es#fotos-de-usuarios";
|
||||
#elif L==7
|
||||
"PROFILE.Settings.en#user-photos";
|
||||
#elif L==8
|
||||
"PROFILE.Settings.en#user-photos";
|
||||
#elif L==9
|
||||
"PROFILE.Settings.en#user-photos";
|
||||
#endif
|
||||
|
||||
const char *Hlp_PROFILE_Settings_privacy =
|
||||
#if L==1
|
||||
"PROFILE.Settings.es#privacidad";
|
||||
|
|
|
@ -1041,6 +1041,12 @@ void MchRes_ShowOneMchResult (void)
|
|||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_Tags;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
struct Gam_Games Games;
|
||||
struct Gam_Game Game;
|
||||
struct Mch_Match Match;
|
||||
|
@ -1125,7 +1131,9 @@ void MchRes_ShowOneMchResult (void)
|
|||
if (UsrDat->FrstName[0])
|
||||
HTM_TxtF (", %s",UsrDat->FrstName);
|
||||
HTM_BR ();
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO45x60",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
|
@ -479,8 +479,17 @@ static void Msg_PutHiddenParamsSubjectAndContent (void)
|
|||
|
||||
static void Msg_ShowOneUniqueRecipient (void)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
|
||||
/***** Show user's photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Other.UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Other.UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
|
||||
/****** Write user's IDs ******/
|
||||
HTM_DIV_Begin ("class=\"MSG_TO_ONE_RCP %s\"",
|
||||
|
@ -2281,6 +2290,12 @@ static void Msg_WriteSentOrReceivedMsgSubject (struct Msg_Messages *Messages,
|
|||
void Msg_WriteMsgAuthor (struct UsrData *UsrDat,bool Enabled,const char *BgColor)
|
||||
{
|
||||
extern const char *Txt_Unknown_or_without_photo;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC30x40",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE30x40",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR30x40",
|
||||
};
|
||||
bool WriteAuthor;
|
||||
|
||||
/***** Write author name or don't write it? *****/
|
||||
|
@ -2301,9 +2316,12 @@ void Msg_WriteMsgAuthor (struct UsrData *UsrDat,bool Enabled,const char *BgColor
|
|||
HTM_TD_Begin ("class=\"CT\" style=\"width:30px;\"");
|
||||
|
||||
if (WriteAuthor)
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO30x40",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
else
|
||||
Ico_PutIcon ("usr_bl.jpg",Txt_Unknown_or_without_photo,"PHOTO30x40");
|
||||
Ico_PutIcon ("usr_bl.jpg",Txt_Unknown_or_without_photo,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos]);
|
||||
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -2439,6 +2457,12 @@ static void Msg_WriteMsgFrom (struct Msg_Messages *Messages,
|
|||
extern const char *Txt_MSG_Sent;
|
||||
extern const char *Txt_MSG_Sent_and_deleted;
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
|
||||
HTM_TABLE_Begin (NULL);
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -2454,7 +2478,9 @@ static void Msg_WriteMsgFrom (struct Msg_Messages *Messages,
|
|||
|
||||
/***** Put user's photo *****/
|
||||
HTM_TD_Begin ("class=\"CM\" style=\"width:30px;\"");
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Write user's name *****/
|
||||
|
@ -2500,6 +2526,18 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
extern const char *Txt_and_X_other_recipients;
|
||||
extern const char *Txt_unknown_recipient;
|
||||
extern const char *Txt_unknown_recipients;
|
||||
static const Act_Action_t ActionSee[Msg_NUM_TYPES_OF_MSGS] =
|
||||
{
|
||||
[Msg_WRITING ] = ActUnk,
|
||||
[Msg_RECEIVED] = ActSeeRcvMsg,
|
||||
[Msg_SENT ] = ActSeeSntMsg,
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumRcp;
|
||||
|
@ -2517,12 +2555,6 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
bool ShowPhoto;
|
||||
const char *Title;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
static const Act_Action_t ActionSee[Msg_NUM_TYPES_OF_MSGS] =
|
||||
{
|
||||
[Msg_WRITING ] = ActUnk,
|
||||
[Msg_RECEIVED] = ActSeeRcvMsg,
|
||||
[Msg_SENT ] = ActSeeSntMsg,
|
||||
};
|
||||
|
||||
/***** Get number of recipients of a message from database *****/
|
||||
NumRecipients.Total = Msg_DB_GetNumRecipients (MsgCod);
|
||||
|
@ -2587,7 +2619,8 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
false);
|
||||
Pho_ShowUsrPhoto (&UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
"PHOTO21x28",Pho_ZOOM,false);
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write user's name */
|
||||
|
@ -2842,6 +2875,12 @@ void Msg_ListBannedUsrs (void)
|
|||
extern const char *Txt_You_have_not_banned_any_sender;
|
||||
extern const char *Txt_Banned_users;
|
||||
extern const char *Txt_Sender_banned_click_to_unban_him;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned NumUsr;
|
||||
unsigned NumUsrs;
|
||||
|
@ -2883,7 +2922,9 @@ void Msg_ListBannedUsrs (void)
|
|||
|
||||
/* Show photo */
|
||||
HTM_TD_Begin ("class=\"LM\" style=\"width:30px;\"");
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write user's full name */
|
||||
|
|
22
swad_photo.c
22
swad_photo.c
|
@ -421,6 +421,12 @@ void Pho_ReqRemoveMyPhoto (void)
|
|||
extern const char *Txt_Do_you_really_want_to_remove_your_photo;
|
||||
extern const char *Txt_Remove_photo;
|
||||
extern const char *Txt_The_photo_no_longer_exists;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC186x248",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE186x248",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR186x248",
|
||||
};
|
||||
|
||||
/***** Show current photo and help message *****/
|
||||
if (Pho_BuildLinkToPhoto (&Gbl.Usrs.Me.UsrDat,Gbl.Usrs.Me.PhotoURL))
|
||||
|
@ -431,7 +437,8 @@ void Pho_ReqRemoveMyPhoto (void)
|
|||
|
||||
/* Show current photo */
|
||||
Pho_ShowUsrPhoto (&Gbl.Usrs.Me.UsrDat,Gbl.Usrs.Me.PhotoURL,
|
||||
"PHOTO186x248",Pho_NO_ZOOM,false);
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_NO_ZOOM,
|
||||
false);
|
||||
|
||||
/* End alert */
|
||||
Ale_ShowAlertAndButton2 (ActRemMyPho,NULL,NULL,
|
||||
|
@ -477,7 +484,6 @@ void Pho_ReqRemoveUsrPhoto (void)
|
|||
extern const char *Txt_Do_you_really_want_to_remove_the_photo_of_X;
|
||||
extern const char *Txt_Remove_photo;
|
||||
extern const char *Txt_The_photo_no_longer_exists;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
static const Act_Action_t NextAction[Rol_NUM_ROLES] =
|
||||
{
|
||||
[Rol_UNK ] = ActRemOthPho,
|
||||
|
@ -491,6 +497,13 @@ void Pho_ReqRemoveUsrPhoto (void)
|
|||
[Rol_INS_ADM] = ActRemOthPho,
|
||||
[Rol_SYS_ADM] = ActRemOthPho,
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC186x248",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE186x248",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR186x248",
|
||||
};
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
|
||||
/***** Get user's code from form *****/
|
||||
Usr_GetParamOtherUsrCodEncryptedAndGetListIDs ();
|
||||
|
@ -512,7 +525,8 @@ void Pho_ReqRemoveUsrPhoto (void)
|
|||
|
||||
/* Show current photo */
|
||||
Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL,
|
||||
"PHOTO186x248",Pho_NO_ZOOM,false);
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_NO_ZOOM,
|
||||
false);
|
||||
|
||||
/* End alert */
|
||||
Ale_ShowAlertAndButton2 (NextAction[Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs],NULL,NULL,
|
||||
|
@ -1375,7 +1389,7 @@ void Pho_ChangePhotoVisibility (void)
|
|||
Pri_PHOTO_ALLOWED_VIS);
|
||||
|
||||
/***** Store public/private photo in database *****/
|
||||
Set_DB_UpdateMySettingsAboutPhoto ();
|
||||
Set_DB_UpdateMySettingsAboutPhotoVisibility ();
|
||||
|
||||
/***** Show form again *****/
|
||||
Set_EditSettings ();
|
||||
|
|
|
@ -1299,6 +1299,12 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
static void Prf_ShowUsrInRanking (struct UsrData *UsrDat,unsigned Rank,bool ItsMe)
|
||||
{
|
||||
extern const char *Txt_Another_user_s_profile;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC30x40",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE30x40",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR30x40",
|
||||
};
|
||||
bool Visible = Pri_ShowingIsAllowed (UsrDat->BaPrfVisibility,UsrDat);
|
||||
|
||||
HTM_TD_Begin ("class=\"RM %s COLOR%u\"",
|
||||
|
@ -1312,7 +1318,9 @@ static void Prf_ShowUsrInRanking (struct UsrData *UsrDat,unsigned Rank,bool ItsM
|
|||
HTM_TD_Begin ("class=\"RANK_PHOTO COLOR%u\"",Gbl.RowEvenOdd);
|
||||
if (Visible)
|
||||
/***** User's photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO30x40",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Put form to go to public profile *****/
|
||||
|
|
|
@ -2014,13 +2014,6 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
|
|||
extern const char *Txt_Remove;
|
||||
extern const char *Txt_Add_USERS;
|
||||
extern const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
bool WriteRow;
|
||||
unsigned NumUsr;
|
||||
unsigned NumUsrs;
|
||||
const char *ClassLabel;
|
||||
const char *ClassData;
|
||||
static const Act_Action_t ActionReqRemUsr[Prj_NUM_ROLES_IN_PROJECT] =
|
||||
{
|
||||
[Prj_ROLE_UNK] = ActUnk, // Unknown
|
||||
|
@ -2035,6 +2028,19 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
|
|||
[Prj_ROLE_TUT] = ActReqAddTutPrj, // Tutor
|
||||
[Prj_ROLE_EVL] = ActReqAddEvlPrj, // Evaluator
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
bool WriteRow;
|
||||
unsigned NumUsr;
|
||||
unsigned NumUsrs;
|
||||
const char *ClassLabel;
|
||||
const char *ClassData;
|
||||
|
||||
/***** Set CSS classes *****/
|
||||
ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" :
|
||||
|
@ -2128,7 +2134,9 @@ static void Prj_ShowOneProjectMembersWithARole (struct Prj_Projects *Projects,
|
|||
|
||||
/* Put user's photo */
|
||||
HTM_TD_Begin ("class=\"PRJ_MEMBER_PHO\"");
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Other.UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Other.UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write user's name */
|
||||
|
|
|
@ -2599,9 +2599,18 @@ static void Rec_ShowInstitutionInHead (struct Ins_Instit *Ins,bool PutFormLinks)
|
|||
|
||||
static void Rec_ShowPhoto (struct UsrData *UsrDat)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC186x248",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE186x248",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR186x248",
|
||||
};
|
||||
|
||||
/***** User's photo *****/
|
||||
HTM_TD_Begin ("rowspan=\"3\" class=\"REC_C3_TOP CT\"");
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO186x248",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,9 @@ extern struct Globals Gbl;
|
|||
static void Set_PutIconsToSelectSideCols (void);
|
||||
static void Set_PutIconsSideColumns (__attribute__((unused)) void *Args);
|
||||
|
||||
static void Set_PutIconsToSelectUsrPhotos (void);
|
||||
static void Set_PutIconsUsrPhotos (__attribute__((unused)) void *Args);
|
||||
|
||||
static void Set_GetAndUpdateUsrListType (void);
|
||||
static void Set_GetUsrListTypeFromForm (void);
|
||||
static void Set_GetMyUsrListTypeFromDB (void);
|
||||
|
@ -122,6 +125,10 @@ void Set_EditSettings (void)
|
|||
Set_PutIconsToSelectSideCols (); // 7. Side columns
|
||||
HTM_DIV_End ();
|
||||
|
||||
HTM_DIV_Begin ("class=\"FRAME_INLINE\"");
|
||||
Set_PutIconsToSelectUsrPhotos (); // 8. User photos
|
||||
HTM_DIV_End ();
|
||||
|
||||
Box_BoxEnd ();
|
||||
|
||||
if (Gbl.Usrs.Me.Logged)
|
||||
|
@ -176,6 +183,15 @@ void Set_GetSettingsFromIP (void)
|
|||
}
|
||||
else
|
||||
Gbl.Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
|
||||
|
||||
/* Get user photo shape (row[6]) */
|
||||
if (sscanf (row[6],"%u",&Gbl.Prefs.UsrPhotos) == 1)
|
||||
{
|
||||
if (Gbl.Prefs.UsrPhotos >= Set_NUM_USR_PHOTOS)
|
||||
Gbl.Prefs.UsrPhotos = Set_USR_PHOTOS_DEFAULT;
|
||||
}
|
||||
else
|
||||
Gbl.Prefs.UsrPhotos = Set_USR_PHOTOS_DEFAULT;
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
|
@ -272,6 +288,84 @@ unsigned Set_GetParamSideCols (void)
|
|||
Cfg_DEFAULT_COLUMNS);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Put icons to select user photo shape ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Set_PutIconsToSelectUsrPhotos (void)
|
||||
{
|
||||
extern const char *Hlp_PROFILE_Settings_user_photos;
|
||||
extern const char *Txt_User_photos;
|
||||
extern const char *Txt_USER_PHOTOS[Set_NUM_USR_PHOTOS];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "ICO_HIGHLIGHT PHOTOC15x20B",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "ICO_HIGHLIGHT PHOTOE15x20B",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "ICO_HIGHLIGHT PHOTOR15x20B",
|
||||
};
|
||||
Set_UsrPhotos_t UsrPhotos;
|
||||
|
||||
Box_BoxBegin (NULL,Txt_User_photos,
|
||||
Set_PutIconsUsrPhotos,NULL,
|
||||
Hlp_PROFILE_Settings_user_photos,Box_NOT_CLOSABLE);
|
||||
Set_BeginSettingsHead ();
|
||||
Set_BeginOneSettingSelector ();
|
||||
for (UsrPhotos = (Set_UsrPhotos_t) 0;
|
||||
UsrPhotos <= (Set_UsrPhotos_t) (Set_NUM_USR_PHOTOS - 1);
|
||||
UsrPhotos++)
|
||||
{
|
||||
HTM_DIV_Begin ("class=\"%s\"",UsrPhotos == Gbl.Prefs.UsrPhotos ? "PREF_ON" :
|
||||
"PREF_OFF");
|
||||
Frm_BeginForm (ActChgUsrPho);
|
||||
Par_PutHiddenParamUnsigned (NULL,"UsrPhotos",UsrPhotos);
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user.svg",Txt_USER_PHOTOS[UsrPhotos],ClassPhoto[UsrPhotos]);
|
||||
Frm_EndForm ();
|
||||
HTM_DIV_End ();
|
||||
}
|
||||
Set_EndOneSettingSelector ();
|
||||
Set_EndSettingsHead ();
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Put contextual icons in side-columns setting *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Set_PutIconsUsrPhotos (__attribute__((unused)) void *Args)
|
||||
{
|
||||
/***** Put icon to show a figure *****/
|
||||
Fig_PutIconToShowFigure (Fig_USER_PHOTOS);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Change user photo shape **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Set_ChangeUsrPhotos (void)
|
||||
{
|
||||
/***** Get param with user photo shape *****/
|
||||
Gbl.Prefs.UsrPhotos = Set_GetParamUsrPhotos ();
|
||||
|
||||
/***** Store side colums in database *****/
|
||||
if (Gbl.Usrs.Me.Logged)
|
||||
Set_DB_UpdateMySettingsAboutUsrPhotos ();
|
||||
|
||||
/***** Set settings from current IP *****/
|
||||
Set_SetSettingsFromIP ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Get parameter used to change user photo shape ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
Set_UsrPhotos_t Set_GetParamUsrPhotos (void)
|
||||
{
|
||||
return (Set_UsrPhotos_t) Par_GetParToUnsignedLong ("UsrPhotos",
|
||||
(Set_UsrPhotos_t) 0,
|
||||
(Set_UsrPhotos_t) (Set_NUM_USR_PHOTOS - 1),
|
||||
Set_USR_PHOTOS_DEFAULT);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Put hidden parameters with type of list, *******************/
|
||||
/**************** number of columns in class photo *******************/
|
||||
|
|
|
@ -33,6 +33,16 @@
|
|||
/***************************** Public constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
// Related with user photo shape
|
||||
#define Set_NUM_USR_PHOTOS 3
|
||||
typedef enum
|
||||
{
|
||||
Set_USR_PHOTO_CIRCLE = 0,
|
||||
Set_USR_PHOTO_ELLIPSE = 1,
|
||||
Set_USR_PHOTO_RECTANGLE = 2,
|
||||
} Set_UsrPhotos_t;
|
||||
#define Set_USR_PHOTOS_DEFAULT Set_USR_PHOTO_CIRCLE
|
||||
|
||||
// Related with type of list of users
|
||||
#define Set_NUM_USR_LIST_TYPES 3
|
||||
typedef enum
|
||||
|
@ -55,6 +65,9 @@ void Set_SetSettingsFromIP (void);
|
|||
void Set_ChangeSideCols (void);
|
||||
unsigned Set_GetParamSideCols (void);
|
||||
|
||||
void Set_ChangeUsrPhotos (void);
|
||||
Set_UsrPhotos_t Set_GetParamUsrPhotos (void);
|
||||
|
||||
//------------------------ My settings on users' list -------------------------
|
||||
void Set_PutParamsPrefsAboutUsrList (void);
|
||||
void Set_GetAndUpdatePrefsAboutUsrList (void);
|
||||
|
|
|
@ -145,11 +145,25 @@ void Set_DB_UpdateMySettingsAboutSideCols (void)
|
|||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Update user photo shape on user data table *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Set_DB_UpdateMySettingsAboutUsrPhotos (void)
|
||||
{
|
||||
DB_QueryUPDATE ("can not update your setting about user photo shape",
|
||||
"UPDATE usr_data"
|
||||
" SET UsrPhotos=%u"
|
||||
" WHERE UsrCod=%ld",
|
||||
(unsigned) Gbl.Prefs.UsrPhotos,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Update my settings about photo visibility *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Set_DB_UpdateMySettingsAboutPhoto (void)
|
||||
void Set_DB_UpdateMySettingsAboutPhotoVisibility (void)
|
||||
{
|
||||
extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY];
|
||||
|
||||
|
@ -417,10 +431,10 @@ void Set_DB_UpdateSettingsFromIP (void)
|
|||
DB_QueryREPLACE ("can not store settings from current IP address",
|
||||
"REPLACE INTO set_ip_settings"
|
||||
" (IP,UsrCod,LastChange,"
|
||||
"FirstDayOfWeek,DateFormat,Theme,IconSet,Menu,SideCols)"
|
||||
"FirstDayOfWeek,DateFormat,Theme,IconSet,Menu,SideCols,UsrPhotos)"
|
||||
" VALUES"
|
||||
" ('%s',%ld,NOW(),"
|
||||
"%u,%u,'%s','%s',%u,%u)",
|
||||
"%u,%u,'%s','%s',%u,%u,%u)",
|
||||
Gbl.IP,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
Gbl.Prefs.FirstDayOfWeek,
|
||||
|
@ -428,7 +442,8 @@ void Set_DB_UpdateSettingsFromIP (void)
|
|||
The_ThemeId[Gbl.Prefs.Theme],
|
||||
Ico_IconSetId[Gbl.Prefs.IconSet],
|
||||
(unsigned) Gbl.Prefs.Menu,
|
||||
Gbl.Prefs.SideCols);
|
||||
Gbl.Prefs.SideCols,
|
||||
(unsigned) Gbl.Prefs.UsrPhotos);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -447,7 +462,8 @@ void Set_DB_UpdateMySettingsFromIP (void)
|
|||
"Theme='%s',"
|
||||
"IconSet='%s',"
|
||||
"Menu=%u,"
|
||||
"SideCols=%u"
|
||||
"SideCols=%u,"
|
||||
"UsrPhotos=%u"
|
||||
" WHERE UsrCod=%ld",
|
||||
Gbl.Prefs.FirstDayOfWeek,
|
||||
(unsigned) Gbl.Prefs.DateFormat,
|
||||
|
@ -455,6 +471,7 @@ void Set_DB_UpdateMySettingsFromIP (void)
|
|||
Ico_IconSetId[Gbl.Prefs.IconSet],
|
||||
(unsigned) Gbl.Prefs.Menu,
|
||||
Gbl.Prefs.SideCols,
|
||||
(unsigned) Gbl.Prefs.UsrPhotos,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
}
|
||||
|
||||
|
@ -471,7 +488,8 @@ unsigned Set_DB_GetSettingsFromIP (MYSQL_RES **mysql_res)
|
|||
"Theme," // row[2]
|
||||
"IconSet," // row[3]
|
||||
"Menu," // row[4]
|
||||
"SideCols" // row[5]
|
||||
"SideCols," // row[5]
|
||||
"UsrPhotos" // row[6]
|
||||
" FROM set_ip_settings"
|
||||
" WHERE IP='%s'",
|
||||
Gbl.IP);
|
||||
|
|
|
@ -35,7 +35,8 @@ void Set_DB_UpdateMySettingsAboutIconSet (const char *IconSetId);
|
|||
void Set_DB_UpdateMySettingsAboutMenu (Mnu_Menu_t Menu);
|
||||
void Set_DB_UpdateMySettingsAboutTheme (const char *ThemeId);
|
||||
void Set_DB_UpdateMySettingsAboutSideCols (void);
|
||||
void Set_DB_UpdateMySettingsAboutPhoto (void);
|
||||
void Set_DB_UpdateMySettingsAboutUsrPhotos (void);
|
||||
void Set_DB_UpdateMySettingsAboutPhotoVisibility (void);
|
||||
void Set_DB_UpdateMySettingsAboutBasicProfile (void);
|
||||
void Set_DB_UpdateMySettingsAboutExtendedProfile (void);
|
||||
void Set_DB_UpdateMySettingsAboutNotifyEvents (void);
|
||||
|
|
|
@ -1306,6 +1306,12 @@ static void Sta_ShowNumHitsPerUsr (Sta_CountType_t CountType,
|
|||
extern const char *Txt_Role;
|
||||
extern const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_COUNT_TYPES];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC15x20",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE15x20",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR15x20",
|
||||
};
|
||||
MYSQL_ROW row;
|
||||
unsigned NumHit;
|
||||
struct Sta_Hits Hits;
|
||||
|
@ -1347,7 +1353,9 @@ static void Sta_ShowNumHitsPerUsr (Sta_CountType_t CountType,
|
|||
|
||||
/* Show the photo */
|
||||
HTM_TD_Begin ("class=\"CT COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,"PHOTO15x20",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Write the user's ID if user is a student in current course */
|
||||
|
|
|
@ -2156,6 +2156,12 @@ void TstPrn_ShowOnePrint (void)
|
|||
extern const char *Txt_Score;
|
||||
extern const char *Txt_Grade;
|
||||
extern const char *Txt_Tags;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
struct TstPrn_Print Print;
|
||||
Dat_StartEndTime_t StartEndTime;
|
||||
char *Id;
|
||||
|
@ -2216,7 +2222,9 @@ void TstPrn_ShowOnePrint (void)
|
|||
if (Gbl.Usrs.Other.UsrDat.FrstName[0])
|
||||
HTM_TxtF (", %s",Gbl.Usrs.Other.UsrDat.FrstName);
|
||||
HTM_BR ();
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Other.UsrDat,"PHOTO45x60",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Other.UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
105
swad_text.c
105
swad_text.c
|
@ -44590,6 +44590,27 @@ const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES] =
|
|||
"Kolumny"
|
||||
#elif L==9 // pt
|
||||
"Colunas"
|
||||
#endif
|
||||
,
|
||||
[Fig_USER_PHOTOS] =
|
||||
#if L==1 // ca
|
||||
"Fotos d'usuaris"
|
||||
#elif L==2 // de
|
||||
"Benutzerfotos"
|
||||
#elif L==3 // en
|
||||
"User photos"
|
||||
#elif L==4 // es
|
||||
"Fotos de usuarios"
|
||||
#elif L==5 // fr
|
||||
"Photos des utilisateurs"
|
||||
#elif L==6 // gn
|
||||
"Fotos de usuarios" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Foto utente"
|
||||
#elif L==8 // pl
|
||||
"Zdjęcia użytkownika "
|
||||
#elif L==9 // pt
|
||||
"Fotos de utilizadores"
|
||||
#endif
|
||||
,
|
||||
[Fig_PRIVACY] =
|
||||
|
@ -55557,6 +55578,90 @@ const char *Txt_User_not_found_or_you_do_not_have_permission_ =
|
|||
" para realizar esta ação.";
|
||||
#endif
|
||||
|
||||
const char *Txt_User_photos =
|
||||
#if L==1 // ca
|
||||
"Fotos d'usuaris";
|
||||
#elif L==2 // de
|
||||
"Benutzerfotos";
|
||||
#elif L==3 // en
|
||||
"User photos";
|
||||
#elif L==4 // es
|
||||
"Fotos de usuarios";
|
||||
#elif L==5 // fr
|
||||
"Photos des utilisateurs";
|
||||
#elif L==6 // gn
|
||||
"Fotos de usuarios"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Foto utente";
|
||||
#elif L==8 // pl
|
||||
"Zdjęcia użytkownika ";
|
||||
#elif L==9 // pt
|
||||
"Fotos de utilizadores";
|
||||
#endif
|
||||
|
||||
const char *Txt_USER_PHOTOS[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
#if L==1 // ca
|
||||
"Cercle"
|
||||
#elif L==2 // de
|
||||
"Kreis"
|
||||
#elif L==3 // en
|
||||
"Circle"
|
||||
#elif L==4 // es
|
||||
"Círculo"
|
||||
#elif L==5 // fr
|
||||
"Cercle"
|
||||
#elif L==6 // gn
|
||||
"Círculo" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Cerchio"
|
||||
#elif L==8 // pl
|
||||
"Koło"
|
||||
#elif L==9 // pt
|
||||
"Círculo"
|
||||
#endif
|
||||
,
|
||||
#if L==1 // ca
|
||||
"El·lipse"
|
||||
#elif L==2 // de
|
||||
"Ellipse"
|
||||
#elif L==3 // en
|
||||
"Ellipse"
|
||||
#elif L==4 // es
|
||||
"Elipse"
|
||||
#elif L==5 // fr
|
||||
"Ellipse"
|
||||
#elif L==6 // gn
|
||||
"Elipse" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Ellisse"
|
||||
#elif L==8 // pl
|
||||
"Elipsa"
|
||||
#elif L==9 // pt
|
||||
"Elipse"
|
||||
#endif
|
||||
,
|
||||
#if L==1 // ca
|
||||
"Rectangle"
|
||||
#elif L==2 // de
|
||||
"Rechteck"
|
||||
#elif L==3 // en
|
||||
"Rectangle"
|
||||
#elif L==4 // es
|
||||
"Rectángulo"
|
||||
#elif L==5 // fr
|
||||
"Rectangle"
|
||||
#elif L==6 // gn
|
||||
"Rectángulo" // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Rettangolo"
|
||||
#elif L==8 // pl
|
||||
"Prostokąt"
|
||||
#elif L==9 // pt
|
||||
"Retângulo"
|
||||
#endif
|
||||
};
|
||||
|
||||
const char *Txt_Users =
|
||||
#if L==1 // ca
|
||||
"Usuaris";
|
||||
|
|
|
@ -184,12 +184,21 @@ void Tml_Com_PutPhotoAndFormToWriteNewComm (const struct Tml_Timeline *Timeline,
|
|||
|
||||
static void Tml_Com_ShowAuthorPhoto (struct UsrData *UsrDat)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC30x40",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE30x40",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR30x40",
|
||||
};
|
||||
|
||||
/***** Show author's photo *****/
|
||||
/* Begin container */
|
||||
HTM_DIV_Begin ("class=\"Tml_COM_PHOTO\"");
|
||||
|
||||
/* Author's photo */
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO30x40",Pho_ZOOM,true); // Use unique id
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
true); // Use unique id
|
||||
|
||||
/* End container */
|
||||
HTM_DIV_End ();
|
||||
|
|
|
@ -241,8 +241,7 @@ static void Tml_Not_WriteTopMessage (Tml_TopMessage_t TopMessage,long PublisherC
|
|||
HTM_DIV_Begin ("class=\"Tml_TOP_CONT Tml_TOP_PUBLISHER Tml_WIDTH\"");
|
||||
|
||||
/***** Show publisher's name inside form to go to user's public profile *****/
|
||||
Tml_Not_WriteAuthorName (&PublisherDat,
|
||||
"BT_LINK Tml_TOP_PUBLISHER");
|
||||
Tml_Not_WriteAuthorName (&PublisherDat,"BT_LINK Tml_TOP_PUBLISHER");
|
||||
|
||||
/***** Show action made *****/
|
||||
HTM_TxtF (" %s:",Txt_TIMELINE_NOTE_TOP_MESSAGES[TopMessage]);
|
||||
|
@ -290,11 +289,20 @@ static void Tml_Not_WriteNote (const struct Tml_Timeline *Timeline,
|
|||
|
||||
void Tml_Not_ShowAuthorPhoto (struct UsrData *UsrDat,bool FormUnique)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
|
||||
/***** Begin container *****/
|
||||
HTM_DIV_Begin ("class=\"Tml_LEFT_PHOTO\"");
|
||||
|
||||
/***** Photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO45x60",Pho_ZOOM,FormUnique);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
FormUnique);
|
||||
|
||||
/***** End container *****/
|
||||
HTM_DIV_End ();
|
||||
|
@ -312,7 +320,8 @@ static void Tml_Not_WriteAuthorTimeAndContent (const struct Tml_Not_Note *Not,
|
|||
|
||||
/***** Write author's full name *****/
|
||||
Tml_Not_WriteAuthorName (UsrDat,
|
||||
"BT_LINK Tml_RIGHT_AUTHOR Tml_RIGHT_AUTHOR_WIDTH DAT_N_BOLD");
|
||||
"BT_LINK Tml_RIGHT_AUTHOR"
|
||||
" Tml_RIGHT_AUTHOR_WIDTH DAT_N_BOLD");
|
||||
|
||||
/***** Write date and time *****/
|
||||
Tml_WriteDateTime (Not->DateTimeUTC);
|
||||
|
|
|
@ -172,7 +172,8 @@ static void Tml_Pst_PutFormToWriteNewPost (struct Tml_Timeline *Timeline)
|
|||
|
||||
/***** Author name *****/
|
||||
Tml_Not_WriteAuthorName (&Gbl.Usrs.Me.UsrDat,
|
||||
"BT_LINK Tml_RIGHT_AUTHOR Tml_RIGHT_AUTHOR_WIDTH DAT_N_BOLD");
|
||||
"BT_LINK Tml_RIGHT_AUTHOR"
|
||||
" Tml_RIGHT_AUTHOR_WIDTH DAT_N_BOLD");
|
||||
|
||||
/***** Form to write the post *****/
|
||||
/* Begin container */
|
||||
|
|
|
@ -179,6 +179,12 @@ static void Tml_Usr_ShowNumSharersOrFavers (unsigned NumUsrs)
|
|||
static void Tml_Usr_ListSharersOrFavers (MYSQL_RES **mysql_res,
|
||||
unsigned NumUsrs,unsigned NumFirstUsrs)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC12x16",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE12x16",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR12x16",
|
||||
};
|
||||
unsigned NumUsr;
|
||||
struct UsrData UsrDat;
|
||||
|
||||
|
@ -210,7 +216,9 @@ static void Tml_Usr_ListSharersOrFavers (MYSQL_RES **mysql_res,
|
|||
HTM_DIV_Begin ("class=\"Tml_SHARER\"");
|
||||
|
||||
/* User's photo */
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,"PHOTO12x16",Pho_ZOOM,true); // Use unique id
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
true); // Use unique id
|
||||
|
||||
/* End container */
|
||||
HTM_DIV_End ();
|
||||
|
|
114
swad_user.c
114
swad_user.c
|
@ -340,6 +340,7 @@ void Usr_ResetUsrDataExceptUsrCodAndIDs (struct UsrData *UsrDat)
|
|||
UsrDat->Prefs.IconSet = Ico_ICON_SET_DEFAULT;
|
||||
UsrDat->Prefs.Menu = Mnu_MENU_DEFAULT;
|
||||
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
|
||||
UsrDat->Prefs.UsrPhotos = Set_USR_PHOTOS_DEFAULT;
|
||||
UsrDat->Prefs.AcceptThirdPartyCookies = false; // By default, don't accept third party cookies
|
||||
UsrDat->NtfEvents.SendEmail = 0; // By default, don't notify anything
|
||||
}
|
||||
|
@ -592,8 +593,17 @@ void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat,
|
|||
else
|
||||
UsrDat->Prefs.SideCols = Cfg_DEFAULT_COLUMNS;
|
||||
|
||||
/* Get if user accepts third party cookies (row[30]) */
|
||||
UsrDat->Prefs.AcceptThirdPartyCookies = (row[30][0] == 'Y');
|
||||
/* Get user settings on user photo shape (row[30]) */
|
||||
if (sscanf (row[30],"%u",&UsrDat->Prefs.UsrPhotos) == 1)
|
||||
{
|
||||
if (UsrDat->Prefs.UsrPhotos >= Set_NUM_USR_PHOTOS)
|
||||
UsrDat->Prefs.UsrPhotos = Set_USR_PHOTOS_DEFAULT;
|
||||
}
|
||||
else
|
||||
UsrDat->Prefs.UsrPhotos = Set_USR_PHOTOS_DEFAULT;
|
||||
|
||||
/* Get if user accepts third party cookies (row[31]) */
|
||||
UsrDat->Prefs.AcceptThirdPartyCookies = (row[31][0] == 'Y');
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1380,6 +1390,12 @@ void Usr_WriteLoggedUsrHead (void)
|
|||
extern const char *The_ClassUsr[The_NUM_THEMES];
|
||||
extern const char *Txt_Role;
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC18x24",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE18x24",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR18x24",
|
||||
};
|
||||
unsigned NumAvailableRoles = Rol_GetNumAvailableRoles ();
|
||||
|
||||
HTM_DIV_Begin ("class=\"HEAD_USR %s\"",The_ClassUsr[Gbl.Prefs.Theme]);
|
||||
|
@ -1404,7 +1420,9 @@ void Usr_WriteLoggedUsrHead (void)
|
|||
HTM_NBSP ();
|
||||
|
||||
/***** Show my photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Me.UsrDat,"PHOTO18x24",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&Gbl.Usrs.Me.UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
|
||||
/***** User's name *****/
|
||||
if (Gbl.Usrs.Me.UsrDat.FrstName[0])
|
||||
|
@ -2174,6 +2192,12 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
|
|||
{
|
||||
extern const char *Txt_Enrolment_confirmed;
|
||||
extern const char *Txt_Enrolment_not_confirmed;
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
char BgColor[Usr_MAX_BYTES_BG_COLOR + 1];
|
||||
bool UsrIsTheMsgSender = PutCheckBoxToSelectUsr &&
|
||||
(UsrDat->UsrCod == Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
|
@ -2227,7 +2251,9 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
|
|||
{
|
||||
/***** Show user's photo *****/
|
||||
HTM_TD_Begin ("class=\"CM %s\"",BgColor);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -2258,6 +2284,12 @@ void Usr_WriteRowUsrMainData (unsigned NumUsr,struct UsrData *UsrDat,
|
|||
|
||||
static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
struct Ins_Instit Ins;
|
||||
struct Ctr_Center Ctr;
|
||||
struct Dpt_Department Dpt;
|
||||
|
@ -2269,7 +2301,9 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
|
|||
{
|
||||
/***** Show guest's photo *****/
|
||||
HTM_TD_Begin ("class=\"LM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_NO_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_NO_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -2338,6 +2372,12 @@ static void Usr_WriteRowGstAllData (struct UsrData *UsrDat)
|
|||
|
||||
static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
unsigned NumGrpTyp,NumField;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -2353,7 +2393,9 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
|
|||
{
|
||||
/***** Show student's photo *****/
|
||||
HTM_TD_Begin ("class=\"LM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_NO_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_NO_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -2440,6 +2482,12 @@ static void Usr_WriteRowStdAllData (struct UsrData *UsrDat,char *GroupNames)
|
|||
|
||||
static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
struct Ins_Instit Ins;
|
||||
struct Ctr_Center Ctr;
|
||||
struct Dpt_Department Dpt;
|
||||
|
@ -2453,7 +2501,9 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
|
|||
{
|
||||
/***** Show teacher's photo *****/
|
||||
HTM_TD_Begin ("class=\"LM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_NO_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_NO_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -2512,6 +2562,12 @@ static void Usr_WriteRowTchAllData (struct UsrData *UsrDat)
|
|||
|
||||
static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
};
|
||||
struct Ins_Instit Ins;
|
||||
|
||||
/***** Begin row *****/
|
||||
|
@ -2526,7 +2582,9 @@ static void Usr_WriteRowAdmData (unsigned NumUsr,struct UsrData *UsrDat)
|
|||
{
|
||||
/***** Show administrator's photo *****/
|
||||
HTM_TD_Begin ("class=\"LM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO21x28",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
}
|
||||
|
||||
|
@ -6077,16 +6135,22 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
|
|||
struct SelectedUsrs *SelectedUsrs,
|
||||
bool PutCheckBoxToSelectUsr)
|
||||
{
|
||||
static const char *ClassPhoto[Usr_NUM_CLASS_PHOTO_TYPE][Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Usr_CLASS_PHOTO_SEL ][Set_USR_PHOTO_CIRCLE ] = "PHOTOC21x28",
|
||||
[Usr_CLASS_PHOTO_SEL ][Set_USR_PHOTO_ELLIPSE ] = "PHOTOE21x28",
|
||||
[Usr_CLASS_PHOTO_SEL ][Set_USR_PHOTO_RECTANGLE] = "PHOTOR21x28",
|
||||
[Usr_CLASS_PHOTO_SEL_SEE][Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Usr_CLASS_PHOTO_SEL_SEE][Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Usr_CLASS_PHOTO_SEL_SEE][Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
[Usr_CLASS_PHOTO_PRN ][Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Usr_CLASS_PHOTO_PRN ][Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Usr_CLASS_PHOTO_PRN ][Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
unsigned NumUsr;
|
||||
bool TRIsOpen = false;
|
||||
bool UsrIsTheMsgSender;
|
||||
struct UsrData UsrDat;
|
||||
static const char *ClassPhoto[Usr_NUM_CLASS_PHOTO_TYPE] =
|
||||
{
|
||||
[Usr_CLASS_PHOTO_SEL ] = "PHOTO21x28",
|
||||
[Usr_CLASS_PHOTO_SEL_SEE] = "PHOTO45x60",
|
||||
[Usr_CLASS_PHOTO_PRN ] = "PHOTO45x60",
|
||||
};
|
||||
|
||||
if (Gbl.Usrs.LstUsrs[Role].NumUsrs)
|
||||
{
|
||||
|
@ -6132,7 +6196,7 @@ static void Usr_DrawClassPhoto (Usr_ClassPhotoType_t ClassPhotoType,
|
|||
SelectedUsrs);
|
||||
|
||||
/***** Show photo *****/
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,ClassPhoto[ClassPhotoType],Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (&UsrDat,ClassPhoto[ClassPhotoType][Gbl.Prefs.UsrPhotos],Pho_ZOOM,false);
|
||||
|
||||
/***** Photo foot *****/
|
||||
HTM_DIV_Begin ("class=\"CLASSPHOTO_CAPTION\"");
|
||||
|
@ -6301,6 +6365,12 @@ unsigned Usr_GetTotalNumberOfUsers (void)
|
|||
|
||||
void Usr_WriteAuthor1Line (long UsrCod,bool Hidden)
|
||||
{
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC15x20",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE15x20",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR15x20",
|
||||
};
|
||||
bool ShowPhoto = false;
|
||||
char PhotoURL[PATH_MAX + 1];
|
||||
struct UsrData UsrDat;
|
||||
|
@ -6318,7 +6388,7 @@ void Usr_WriteAuthor1Line (long UsrCod,bool Hidden)
|
|||
/***** Show photo *****/
|
||||
Pho_ShowUsrPhoto (&UsrDat,ShowPhoto ? PhotoURL :
|
||||
NULL,
|
||||
"PHOTO15x20",Pho_ZOOM,false);
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,false);
|
||||
|
||||
/***** Write name *****/
|
||||
HTM_DIV_Begin ("class=\"AUTHOR_1_LINE %s\"",Hidden ? "AUTHOR_TXT_LIGHT" :
|
||||
|
@ -6342,6 +6412,12 @@ void Usr_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows)
|
|||
[Rol_NET] = ActSeeRecOneTch,
|
||||
[Rol_TCH] = ActSeeRecOneTch,
|
||||
};
|
||||
static const char *ClassPhoto[Set_NUM_USR_PHOTOS] =
|
||||
{
|
||||
[Set_USR_PHOTO_CIRCLE ] = "PHOTOC45x60",
|
||||
[Set_USR_PHOTO_ELLIPSE ] = "PHOTOE45x60",
|
||||
[Set_USR_PHOTO_RECTANGLE] = "PHOTOR45x60",
|
||||
};
|
||||
|
||||
/***** Show user's photo *****/
|
||||
if (NumRows)
|
||||
|
@ -6349,7 +6425,9 @@ void Usr_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows)
|
|||
NumRows + 1,Gbl.RowEvenOdd);
|
||||
else
|
||||
HTM_TD_Begin ("class=\"LT LINE_BOTTOM COLOR%u\"",Gbl.RowEvenOdd);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,"PHOTO45x60",Pho_ZOOM,false);
|
||||
Pho_ShowUsrPhotoIfAllowed (UsrDat,
|
||||
ClassPhoto[Gbl.Prefs.UsrPhotos],Pho_ZOOM,
|
||||
false);
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** User's IDs and name *****/
|
||||
|
@ -6419,7 +6497,7 @@ void Usr_PutWhoIcon (Usr_Who_t Who)
|
|||
Gbl.Usrs.Me.PhotoURL[0] ? NULL :
|
||||
"usr_bl.jpg",
|
||||
Txt_WHO[Who],
|
||||
"ICO_HIGHLIGHT PHOTO15x20");
|
||||
"ICO_HIGHLIGHT PHOTOR15x20");
|
||||
break;
|
||||
case Usr_WHO_SELECTED:
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"search.svg",
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#include "swad_role_type.h"
|
||||
#include "swad_scope.h"
|
||||
#include "swad_search.h"
|
||||
#include "swad_setting.h"
|
||||
#include "swad_string.h"
|
||||
#include "swad_theme.h"
|
||||
|
||||
|
@ -213,6 +214,7 @@ struct UsrData
|
|||
Ico_IconSet_t IconSet;
|
||||
Mnu_Menu_t Menu;
|
||||
unsigned SideCols;
|
||||
Set_UsrPhotos_t UsrPhotos;
|
||||
bool AcceptThirdPartyCookies; // User has accepted third party cookies
|
||||
} Prefs;
|
||||
};
|
||||
|
|
|
@ -275,7 +275,8 @@ unsigned Usr_DB_GetUsrDataFromUsrCod (MYSQL_RES **mysql_res,long UsrCod,
|
|||
"IconSet," // row[27]
|
||||
"Menu," // row[28]
|
||||
"SideCols," // row[29]
|
||||
"ThirdPartyCookies" // row[30]
|
||||
"UsrPhotos," // row[30]
|
||||
"ThirdPartyCookies" // row[31]
|
||||
" FROM usr_data"
|
||||
" WHERE UsrCod=%ld",
|
||||
UsrCod);
|
||||
|
|
Loading…
Reference in New Issue