mirror of https://github.com/acanas/swad-core.git
Version 14.88
This commit is contained in:
parent
afcc374ecd
commit
565fd7f1f8
|
@ -301,7 +301,6 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
|||
.TIT_TBL_10
|
||||
{
|
||||
margin:0 10px 10px 10px;
|
||||
font-family:Arial, "Nimbus Sans L", "DejaVu LGC Sans", "Bitstream Vera Sans", sans-serif;
|
||||
color:#808080;
|
||||
font-size:16pt;
|
||||
font-weight:bold;
|
||||
|
@ -819,6 +818,14 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
.CONV {font-family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#404040; font-size:11pt;}
|
||||
.CONV_IMPR {font-family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#202020; font-size:11pt;}
|
||||
|
||||
/***************************** Public user's profile *************************/
|
||||
.RANK
|
||||
{
|
||||
color:#808080;
|
||||
font-size:16pt;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.CON {color:#B8D070; font-size:9pt; line-height:110%; white-space:nowrap;}
|
||||
.CON_CRS {color:#398000; font-size:9pt; line-height:110%; white-space:nowrap;}
|
||||
|
||||
|
|
|
@ -265,7 +265,6 @@ p {margin:0;}
|
|||
.TIT_TBL_10
|
||||
{
|
||||
margin:0 10px 10px 10px;
|
||||
font-family:Arial, "Nimbus Sans L", "DejaVu LGC Sans", "Bitstream Vera Sans", sans-serif;
|
||||
color:#808080;
|
||||
font-size:20pt;
|
||||
font-weight:bold;
|
||||
|
@ -632,5 +631,13 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
.CONV {font-Family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#404040; font-size:11pt;}
|
||||
.CONV_IMPR {font-Family:Garamond, "DejaVu LGC Serif", "Bitstream Vera Serif", serif; color:#202020; font-size:11pt;}
|
||||
|
||||
/***************************** Public user's profile *************************/
|
||||
.RANK
|
||||
{
|
||||
color:#808080;
|
||||
font-size:20pt;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.CON {color:#B8D070; font-size:9pt; line-height:110%; white-space:nowrap;}
|
||||
.CON_CRS {color:#398000; font-size:9pt; line-height:110%; white-space:nowrap;}
|
||||
|
|
|
@ -1894,7 +1894,7 @@ static void Att_ListAttOnlyMeAsStudent (struct AttendanceEvent *Att)
|
|||
{
|
||||
extern const char *Txt_Student_comment;
|
||||
extern const char *Txt_Teachers_comment;
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Save;
|
||||
|
||||
/***** Get my preference about photos in users' list for current course *****/
|
||||
|
@ -1927,7 +1927,7 @@ static void Att_ListAttOnlyMeAsStudent (struct AttendanceEvent *Att)
|
|||
"%s"
|
||||
"</th>"
|
||||
"</tr>",
|
||||
Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
|
||||
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
|
||||
Txt_Student_comment,
|
||||
Txt_Teachers_comment);
|
||||
|
||||
|
@ -1954,7 +1954,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
|||
{
|
||||
extern const char *Txt_Student_comment;
|
||||
extern const char *Txt_Teachers_comment;
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Save;
|
||||
unsigned NumStd;
|
||||
struct UsrData UsrDat;
|
||||
|
@ -1998,7 +1998,7 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
|||
"%s"
|
||||
"</th>"
|
||||
"</tr>",
|
||||
Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
|
||||
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
|
||||
Txt_Student_comment,
|
||||
Txt_Teachers_comment);
|
||||
|
||||
|
@ -3143,7 +3143,7 @@ static void Att_ListStdsAttendanceTable (unsigned NumStdsInList,long *LstSelecte
|
|||
|
||||
static void Att_WriteTableHeadSeveralAttEvents (void)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Attendance;
|
||||
unsigned NumAttEvent;
|
||||
|
||||
|
@ -3154,7 +3154,7 @@ static void Att_WriteTableHeadSeveralAttEvents (void)
|
|||
"</th>",
|
||||
Gbl.Usrs.Listing.WithPhotos ? 4 :
|
||||
3,
|
||||
Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
|
||||
for (NumAttEvent = 0;
|
||||
NumAttEvent < Gbl.AttEvents.Num;
|
||||
|
|
|
@ -103,11 +103,12 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.87.4 (2015/03/11)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.88 (2015/03/12)"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 14.88: Mar 12, 2015 Changes in layout of public user profile. (181718 lines)
|
||||
Version 14.87.4: Mar 11, 2015 Added indexes to usr_figures. (181629 lines)
|
||||
2 changes necessary in database:
|
||||
CREATE INDEX FirstClickTime ON usr_figures (FirstClickTime);
|
||||
|
|
|
@ -155,7 +155,7 @@ void Con_GetAndShowLastClicks (void)
|
|||
extern const char *Txt_Role;
|
||||
extern const char *Txt_Degree;
|
||||
extern const char *Txt_Action;
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
char Query[1024];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -248,7 +248,7 @@ void Con_GetAndShowLastClicks (void)
|
|||
"</tr>",
|
||||
ClassRow,row[0],
|
||||
ClassRow,row[2],
|
||||
ClassRow,Txt_ROLES_SINGULAR_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN],
|
||||
ClassRow,Txt_ROLES_SINGUL_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN],
|
||||
ClassRow,Deg.ShortName,
|
||||
ClassRow,row[5]);
|
||||
}
|
||||
|
@ -268,7 +268,7 @@ void Con_ShowGlobalConnectedUsrs (void)
|
|||
extern const char *Txt_sessions;
|
||||
extern const char *Txt_user[Usr_NUM_SEXS];
|
||||
extern const char *Txt_users;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
unsigned StdsTotal = Con_GetConnectedStdsTotal ();
|
||||
unsigned TchsTotal = Con_GetConnectedTchsTotal ();
|
||||
|
@ -312,7 +312,7 @@ void Con_ShowGlobalConnectedUsrs (void)
|
|||
"</td>"
|
||||
"</tr>",
|
||||
StdsTotal,
|
||||
(StdsTotal == 1) ? Txt_ROLES_SINGULAR_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
|
||||
(StdsTotal == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc [Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
|
||||
/***** Write total number of teachers *****/
|
||||
|
@ -323,7 +323,7 @@ void Con_ShowGlobalConnectedUsrs (void)
|
|||
"</td>"
|
||||
"</tr>",
|
||||
TchsTotal,
|
||||
(TchsTotal == 1) ? Txt_ROLES_SINGULAR_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
|
||||
(TchsTotal == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc [Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
|
||||
|
||||
/***** Write total number of users who do not belong to any course *****/
|
||||
|
@ -335,7 +335,7 @@ void Con_ShowGlobalConnectedUsrs (void)
|
|||
"</td>"
|
||||
"</tr>",
|
||||
WithoutCoursesTotal,
|
||||
(WithoutCoursesTotal == 1) ? Txt_ROLES_SINGULAR_abc[Rol_ROLE_GUEST__][Usr_SEX_UNKNOWN] :
|
||||
(WithoutCoursesTotal == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_GUEST__][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc [Rol_ROLE_GUEST__][Usr_SEX_UNKNOWN]);
|
||||
|
||||
/***** End table *****/
|
||||
|
@ -499,7 +499,7 @@ static void Con_ComputeConnectedUsrsOfTypeBelongingToCurrentCrs (Rol_Role_t Role
|
|||
|
||||
static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol_Role_t Role)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
unsigned NumUsrsThisRole;
|
||||
Usr_Sex_t UsrSex;
|
||||
|
@ -513,7 +513,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (
|
|||
"</td>"
|
||||
"</tr>",
|
||||
NumUsrsThisRole,
|
||||
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGULAR_abc[Role][UsrSex] :
|
||||
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGUL_abc[Role][UsrSex] :
|
||||
Txt_ROLES_PLURAL_abc [Role][UsrSex]);
|
||||
|
||||
/***** List connected users belonging to this location *****/
|
||||
|
@ -559,7 +559,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (
|
|||
static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol_Role_t Role)
|
||||
{
|
||||
extern const char *The_ClassConnected[The_NUM_THEMES];
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Connected_users;
|
||||
unsigned NumUsrsThisRole;
|
||||
|
@ -590,7 +590,7 @@ static void Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColum
|
|||
"</td>"
|
||||
"</tr>",
|
||||
NumUsrsThisRole,
|
||||
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGULAR_abc[Role][UsrSex] :
|
||||
(NumUsrsThisRole == 1) ? Txt_ROLES_SINGUL_abc[Role][UsrSex] :
|
||||
Txt_ROLES_PLURAL_abc [Role][UsrSex]);
|
||||
|
||||
/***** List connected users belonging to this location *****/
|
||||
|
|
|
@ -150,7 +150,7 @@ void Enr_ModifyRoleInCurrentCrs (struct UsrData *UsrDat,
|
|||
Cns_QuietOrVerbose_t QuietOrVerbose)
|
||||
{
|
||||
extern const char *Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
char Query[256];
|
||||
Rol_Role_t OldRole;
|
||||
|
||||
|
@ -174,8 +174,8 @@ void Enr_ModifyRoleInCurrentCrs (struct UsrData *UsrDat,
|
|||
{
|
||||
sprintf (Gbl.Message,Txt_The_role_of_THE_USER_X_in_the_course_Y_has_changed_from_A_to_B,
|
||||
UsrDat->FullName,Gbl.CurrentCrs.Crs.FullName,
|
||||
Txt_ROLES_SINGULAR_abc[OldRole][UsrDat->Sex],
|
||||
Txt_ROLES_SINGULAR_abc[NewRole][UsrDat->Sex]);
|
||||
Txt_ROLES_SINGUL_abc[OldRole][UsrDat->Sex],
|
||||
Txt_ROLES_SINGUL_abc[NewRole][UsrDat->Sex]);
|
||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
}
|
||||
|
||||
|
@ -318,7 +318,7 @@ void Enr_GetNotifEnrollment (char *SummaryStr,
|
|||
long CrsCod,long UsrCod,
|
||||
unsigned MaxChars)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
char Query[256];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -351,7 +351,7 @@ void Enr_GetNotifEnrollment (char *SummaryStr,
|
|||
|
||||
/* Role (row[0]) */
|
||||
Role = Rol_ConvertUnsignedStrToRole (row[0]);
|
||||
strcpy (SummaryStr,Txt_ROLES_SINGULAR_Abc[Role][UsrDat.Sex]);
|
||||
strcpy (SummaryStr,Txt_ROLES_SINGUL_Abc[Role][UsrDat.Sex]);
|
||||
if (MaxChars)
|
||||
Str_LimitLengthHTMLStr (SummaryStr,MaxChars);
|
||||
|
||||
|
@ -1825,13 +1825,13 @@ unsigned Enr_RemAllStdsInCrs (struct Course *Crs)
|
|||
void Enr_ReqSignUpInCrs (void)
|
||||
{
|
||||
extern const char *Txt_You_were_already_enrolled_as_X_in_the_course_Y;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
|
||||
/***** Check if I already belong to course *****/
|
||||
if (Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB >= Rol_ROLE_STUDENT)
|
||||
{
|
||||
sprintf (Gbl.Message,Txt_You_were_already_enrolled_as_X_in_the_course_Y,
|
||||
Txt_ROLES_SINGULAR_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Txt_ROLES_SINGUL_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Gbl.CurrentCrs.Crs.FullName);
|
||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||
}
|
||||
|
@ -1850,7 +1850,7 @@ void Enr_ReqSignUpInCrs (void)
|
|||
void Enr_SignUpInCrs (void)
|
||||
{
|
||||
extern const char *Txt_You_were_already_enrolled_as_X_in_the_course_Y;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Your_request_for_enrollment_as_X_in_the_course_Y_has_been_accepted_for_processing;
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
|
@ -1864,7 +1864,7 @@ void Enr_SignUpInCrs (void)
|
|||
if (Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB >= Rol_ROLE_STUDENT)
|
||||
{
|
||||
sprintf (Gbl.Message,Txt_You_were_already_enrolled_as_X_in_the_course_Y,
|
||||
Txt_ROLES_SINGULAR_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Txt_ROLES_SINGUL_abc[Gbl.Usrs.Me.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Gbl.CurrentCrs.Crs.FullName);
|
||||
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
|
||||
}
|
||||
|
@ -1916,7 +1916,7 @@ void Enr_SignUpInCrs (void)
|
|||
|
||||
/***** Show confirmation message *****/
|
||||
sprintf (Gbl.Message,Txt_Your_request_for_enrollment_as_X_in_the_course_Y_has_been_accepted_for_processing,
|
||||
Txt_ROLES_SINGULAR_abc[RoleFromForm][Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Txt_ROLES_SINGUL_abc[RoleFromForm][Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Gbl.CurrentCrs.Crs.FullName);
|
||||
Lay_ShowAlert (Lay_SUCCESS,Gbl.Message);
|
||||
|
||||
|
@ -1939,7 +1939,7 @@ void Enr_SignUpInCrs (void)
|
|||
void Enr_GetNotifEnrollmentRequest (char *SummaryStr,char **ContentStr,
|
||||
long ReqCod,unsigned MaxChars,bool GetContent)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
char Query[256];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1973,7 +1973,7 @@ void Enr_GetNotifEnrollmentRequest (char *SummaryStr,char **ContentStr,
|
|||
|
||||
/* Role (row[1]) */
|
||||
DesiredRole = Rol_ConvertUnsignedStrToRole (row[1]);
|
||||
strcpy (SummaryStr,Txt_ROLES_SINGULAR_Abc[DesiredRole][UsrDat.Sex]);
|
||||
strcpy (SummaryStr,Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]);
|
||||
if (MaxChars)
|
||||
Str_LimitLengthHTMLStr (SummaryStr,MaxChars);
|
||||
|
||||
|
@ -2003,7 +2003,7 @@ void Enr_AskIfRejectSignUp (void)
|
|||
{
|
||||
extern const char *Txt_THE_USER_X_is_already_enrolled_in_the_course_Y;
|
||||
extern const char *Txt_Do_you_really_want_to_reject_the_enrollment_request_;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Reject;
|
||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||
|
||||
|
@ -2034,7 +2034,7 @@ void Enr_AskIfRejectSignUp (void)
|
|||
/* Ask if reject */
|
||||
sprintf (Gbl.Message,Txt_Do_you_really_want_to_reject_the_enrollment_request_,
|
||||
Gbl.Usrs.Other.UsrDat.FullName,
|
||||
Txt_ROLES_SINGULAR_abc[Role][Gbl.Usrs.Other.UsrDat.Sex],
|
||||
Txt_ROLES_SINGUL_abc[Role][Gbl.Usrs.Other.UsrDat.Sex],
|
||||
Gbl.CurrentCrs.Crs.FullName);
|
||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
||||
Rec_ShowCommonRecordUnmodifiable (&Gbl.Usrs.Other.UsrDat);
|
||||
|
@ -2109,7 +2109,7 @@ void Enr_ShowEnrollmentRequests (void)
|
|||
extern const char *Txt_Role;
|
||||
extern const char *Txt_Date;
|
||||
extern const char *Txt_Go_to_X;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Register;
|
||||
extern const char *Txt_Reject;
|
||||
extern const char *Txt_No_enrollment_requests;
|
||||
|
@ -2494,7 +2494,7 @@ void Enr_ShowEnrollmentRequests (void)
|
|||
" vertical-align:top;\">"
|
||||
"%s"
|
||||
"</td>",
|
||||
Txt_ROLES_SINGULAR_abc[DesiredRole][UsrDat.Sex]);
|
||||
Txt_ROLES_SINGUL_abc[DesiredRole][UsrDat.Sex]);
|
||||
|
||||
/***** Request time (row[4]) *****/
|
||||
Msg_WriteMsgDate (row[4],"DAT");
|
||||
|
|
|
@ -8699,7 +8699,7 @@ void Brw_ShowFileMetadata (void)
|
|||
extern const char *Txt_Filename;
|
||||
extern const char *Txt_File_size;
|
||||
extern const char *Txt_Uploaded_by;
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Date_of_creation;
|
||||
extern const char *Txt_Availability;
|
||||
extern const char *Txt_Private_available_to_certain_users_identified;
|
||||
|
@ -8910,7 +8910,7 @@ void Brw_ShowFileMetadata (void)
|
|||
}
|
||||
else
|
||||
/* Unknown publisher */
|
||||
fprintf (Gbl.F.Out,"%s",Txt_ROLES_SINGULAR_Abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]);
|
||||
fprintf (Gbl.F.Out,"%s",Txt_ROLES_SINGUL_Abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
|
|
|
@ -2996,7 +2996,7 @@ static void Msg_WriteMsgFrom (struct UsrData *UsrDat,bool Deleted)
|
|||
{
|
||||
extern const char *Txt_MSG_Sent;
|
||||
extern const char *Txt_MSG_Sent_and_deleted;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
bool ShowPhoto;
|
||||
char PhotoURL[PATH_MAX+1];
|
||||
|
||||
|
@ -3040,7 +3040,7 @@ static void Msg_WriteMsgFrom (struct UsrData *UsrDat,bool Deleted)
|
|||
}
|
||||
else
|
||||
fprintf (Gbl.F.Out,"[%s]",
|
||||
Txt_ROLES_SINGULAR_abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]); // User not found, likely an old user who has been removed
|
||||
Txt_ROLES_SINGUL_abc[Rol_ROLE_UNKNOWN][Usr_SEX_UNKNOWN]); // User not found, likely an old user who has been removed
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>"
|
||||
"</table>");
|
||||
|
|
144
swad_record.c
144
swad_record.c
|
@ -2021,7 +2021,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
extern const char *Txt_Sex;
|
||||
extern const char *Txt_Role;
|
||||
extern const char *Txt_SEX_SINGULAR_Abc[Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Surname_1;
|
||||
extern const char *Txt_Surname_2;
|
||||
extern const char *Txt_First_name;
|
||||
|
@ -2090,7 +2090,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
TypeOfView == Rec_RECORD_PRINT) &&
|
||||
IAmTeacher && Gbl.Usrs.Listing.RecsUsrs == Rec_RECORD_USERS_STUDENTS))));
|
||||
bool ShowData = ItsMe || UsrDat->Accepted || IAmDegAdmin || IAmSuperuser;
|
||||
bool ShowMailIDRoleRows = (TypeOfView != Rec_RECORD_PUBLIC);
|
||||
bool ShowIDRows = (TypeOfView != Rec_RECORD_PUBLIC);
|
||||
bool ShowAddressRows = (TypeOfView == Rec_FORM_MY_COMMON_RECORD ||
|
||||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ||
|
||||
TypeOfView == Rec_FORM_MY_COURSE_RECORD ||
|
||||
|
@ -2387,7 +2387,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
if (ShowMailIDRoleRows)
|
||||
if (ShowIDRows)
|
||||
{
|
||||
/***** User's e-mail *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
|
@ -2455,7 +2455,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
if (Role == DefaultRoleInCurrentCrs)
|
||||
fprintf (Gbl.F.Out," selected=\"selected\"");
|
||||
fprintf (Gbl.F.Out,">%s</option>",
|
||||
Txt_ROLES_SINGULAR_Abc[Role][UsrDat->Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
|
||||
}
|
||||
fprintf (Gbl.F.Out,"</select>");
|
||||
break;
|
||||
|
@ -2494,7 +2494,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
case Rol_ROLE_STUDENT:
|
||||
fprintf (Gbl.F.Out,"<option value=\"%u\" selected=\"selected\" disabled=\"disabled\">%s</option>",
|
||||
(unsigned) Gbl.Usrs.Me.LoggedRole,
|
||||
Txt_ROLES_SINGULAR_Abc[Gbl.Usrs.Me.LoggedRole][UsrDat->Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.LoggedRole][UsrDat->Sex]);
|
||||
break;
|
||||
case Rol_ROLE_TEACHER:
|
||||
for (Role = Rol_ROLE_STUDENT;
|
||||
|
@ -2507,7 +2507,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
if (Role == DefaultRoleInCurrentCrs)
|
||||
fprintf (Gbl.F.Out," selected=\"selected\"");
|
||||
fprintf (Gbl.F.Out,">%s</option>",
|
||||
Txt_ROLES_SINGULAR_Abc[Role][UsrDat->Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
|
||||
}
|
||||
break;
|
||||
case Rol_ROLE_DEG_ADM:
|
||||
|
@ -2520,7 +2520,7 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
if (Role == DefaultRoleInCurrentCrs)
|
||||
fprintf (Gbl.F.Out," selected=\"selected\"");
|
||||
fprintf (Gbl.F.Out,">%s</option>",
|
||||
Txt_ROLES_SINGULAR_Abc[Role][UsrDat->Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
|
||||
}
|
||||
break;
|
||||
default: // The rest of users can not register other users
|
||||
|
@ -2534,14 +2534,14 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
{
|
||||
case Rol_ROLE_TEACHER: // A teacher only can create students
|
||||
fprintf (Gbl.F.Out,"<option value=\"%u\" selected=\"selected\">%s</option>",
|
||||
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
break;
|
||||
case Rol_ROLE_DEG_ADM: // An administrator or a superuser can create students and teachers
|
||||
case Rol_ROLE_SYS_ADM:
|
||||
fprintf (Gbl.F.Out,"<option value=\"%u\" selected=\"selected\">%s</option>"
|
||||
"<option value=\"%u\">%s</option>",
|
||||
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGULAR_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
|
||||
(unsigned) Rol_ROLE_TEACHER,Txt_ROLES_SINGULAR_Abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
|
||||
(unsigned) Rol_ROLE_STUDENT,Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN],
|
||||
(unsigned) Rol_ROLE_TEACHER,Txt_ROLES_SINGUL_Abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
|
||||
break;
|
||||
default: // The rest of users can not register other users
|
||||
break;
|
||||
|
@ -2569,70 +2569,70 @@ void Rec_ShowSharedUsrRecord (Rec_RecordViewType_t TypeOfView,
|
|||
Txt_Role,
|
||||
ClassData,Col2Width,
|
||||
TypeOfView == Rec_MY_COMMON_RECORD_CHECK ? Txt_SEX_SINGULAR_Abc[UsrDat->Sex] :
|
||||
Txt_ROLES_SINGULAR_Abc[UsrDat->RoleInCurrentCrsDB][UsrDat->Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[UsrDat->RoleInCurrentCrsDB][UsrDat->Sex]);
|
||||
|
||||
/***** Name *****/
|
||||
/* Surname 1 */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
|
||||
"%s",
|
||||
ClassForm,Col1Width,Txt_Surname_1);
|
||||
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
|
||||
fprintf (Gbl.F.Out,"*");
|
||||
fprintf (Gbl.F.Out,":</td>"
|
||||
"<td colspan=\"2\" class=\"%s\""
|
||||
" style=\"width:%upx; text-align:left;\">",
|
||||
ClassData,Cols2and3Width);
|
||||
if (DataForm)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname1\""
|
||||
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
|
||||
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname1);
|
||||
else if (UsrDat->Surname1[0])
|
||||
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->Surname1);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/* Surname 2 */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td colspan=\"2\" class=\"%s\""
|
||||
" style=\"width:%upx; text-align:left;\">",
|
||||
ClassForm,Col1Width,
|
||||
Txt_Surname_2,
|
||||
ClassData,Cols2and3Width);
|
||||
if (DataForm)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname2\""
|
||||
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
|
||||
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname2);
|
||||
else if (UsrDat->Surname2[0])
|
||||
fprintf (Gbl.F.Out,"<strong>%s</strong>",
|
||||
UsrDat->Surname2);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/* First name */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
|
||||
"%s",
|
||||
ClassForm,Col1Width,Txt_First_name);
|
||||
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
|
||||
fprintf (Gbl.F.Out,"*");
|
||||
fprintf (Gbl.F.Out,":</td>"
|
||||
"<td class=\"%s\" colspan=\"2\""
|
||||
" style=\"width:%upx; text-align:left;\">",
|
||||
ClassData,Cols2and3Width);
|
||||
if (DataForm)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"FirstName\""
|
||||
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
|
||||
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->FirstName);
|
||||
else if (UsrDat->FirstName[0])
|
||||
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->FirstName);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
}
|
||||
|
||||
/***** Name *****/
|
||||
/* Surname 1 */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
|
||||
"%s",
|
||||
ClassForm,Col1Width,Txt_Surname_1);
|
||||
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
|
||||
fprintf (Gbl.F.Out,"*");
|
||||
fprintf (Gbl.F.Out,":</td>"
|
||||
"<td colspan=\"2\" class=\"%s\""
|
||||
" style=\"width:%upx; text-align:left;\">",
|
||||
ClassData,Cols2and3Width);
|
||||
if (DataForm)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname1\""
|
||||
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
|
||||
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname1);
|
||||
else if (UsrDat->Surname1[0])
|
||||
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->Surname1);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/* Surname 2 */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td colspan=\"2\" class=\"%s\""
|
||||
" style=\"width:%upx; text-align:left;\">",
|
||||
ClassForm,Col1Width,
|
||||
Txt_Surname_2,
|
||||
ClassData,Cols2and3Width);
|
||||
if (DataForm)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Surname2\""
|
||||
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
|
||||
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->Surname2);
|
||||
else if (UsrDat->Surname2[0])
|
||||
fprintf (Gbl.F.Out,"<strong>%s</strong>",
|
||||
UsrDat->Surname2);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/* First name */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"width:%upx; text-align:left;\">"
|
||||
"%s",
|
||||
ClassForm,Col1Width,Txt_First_name);
|
||||
if (TypeOfView == Rec_FORM_MY_COMMON_RECORD)
|
||||
fprintf (Gbl.F.Out,"*");
|
||||
fprintf (Gbl.F.Out,":</td>"
|
||||
"<td class=\"%s\" colspan=\"2\""
|
||||
" style=\"width:%upx; text-align:left;\">",
|
||||
ClassData,Cols2and3Width);
|
||||
if (DataForm)
|
||||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"FirstName\""
|
||||
" style=\"width:400px;\" maxlength=\"%u\" value=\"%s\" />",
|
||||
Usr_MAX_LENGTH_USR_NAME_OR_SURNAME,UsrDat->FirstName);
|
||||
else if (UsrDat->FirstName[0])
|
||||
fprintf (Gbl.F.Out,"<strong>%s</strong>",UsrDat->FirstName);
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/* Country */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
|
|
|
@ -287,7 +287,7 @@ unsigned Rol_ConvertUnsignedStrToRoles (const char *UnsignedStr)
|
|||
|
||||
void Rol_PutFormToChangeMyRole (bool FormInHead)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
static const unsigned SelectorWidth[Lay_NUM_LAYOUTS] =
|
||||
{
|
||||
90, // Lay_LAYOUT_DESKTOP
|
||||
|
@ -310,7 +310,7 @@ void Rol_PutFormToChangeMyRole (bool FormInHead)
|
|||
if (Role == Gbl.Usrs.Me.LoggedRole)
|
||||
fprintf (Gbl.F.Out," selected=\"selected\"");
|
||||
fprintf (Gbl.F.Out,">%s</option>",
|
||||
Txt_ROLES_SINGULAR_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]);
|
||||
}
|
||||
fprintf (Gbl.F.Out,"</select>"
|
||||
"</form>");
|
||||
|
@ -414,7 +414,7 @@ void Rol_PutAllRolesRegRemUsrsCrs (void)
|
|||
|
||||
static void Rol_PutOneRoleRegRemUsrsCrs (Rol_Role_t Role,bool Checked)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
|
||||
fprintf (Gbl.F.Out,"<li>"
|
||||
"<input type=\"radio\" name=\"RegRemRole\" value=\"%u\"",
|
||||
|
@ -431,7 +431,7 @@ static void Rol_PutOneRoleRegRemUsrsCrs (Rol_Role_t Role,bool Checked)
|
|||
break;
|
||||
}
|
||||
fprintf (Gbl.F.Out," />%s</li>",
|
||||
Txt_ROLES_SINGULAR_Abc[Role][Usr_SEX_UNKNOWN]);
|
||||
Txt_ROLES_SINGUL_Abc[Role][Usr_SEX_UNKNOWN]);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -1452,7 +1452,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
|
|||
extern const char *Txt_Date;
|
||||
extern const char *Txt_Action;
|
||||
extern const char *Txt_LOG_More_info;
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
unsigned long NumRow;
|
||||
unsigned long FirstRow; // First row to show
|
||||
unsigned long LastRow; // Last rows to show
|
||||
|
@ -1656,7 +1656,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
|
|||
"%s "
|
||||
"</td>",
|
||||
Gbl.ColorRows[Gbl.RowEvenOdd],
|
||||
RoleFromLog < Rol_NUM_ROLES ? Txt_ROLES_SINGULAR_Abc[RoleFromLog][UsrDat.Sex] :
|
||||
RoleFromLog < Rol_NUM_ROLES ? Txt_ROLES_SINGUL_Abc[RoleFromLog][UsrDat.Sex] :
|
||||
"?");
|
||||
|
||||
/* Write the date (in row[3] is the date in YYYYMMDDHHMMSS format) */
|
||||
|
@ -1734,7 +1734,7 @@ static void Sta_ShowNumAccessesPerUsr (unsigned long NumRows,MYSQL_RES *mysql_re
|
|||
extern const char *Txt_Name;
|
||||
extern const char *Txt_Type;
|
||||
extern const char *Txt_STAT_TYPE_COUNT_CAPS[Sta_NUM_STAT_COUNT_TYPES];
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRow;
|
||||
float NumPagesGenerated,MaxPagesGenerated = 0.0;
|
||||
|
@ -1829,7 +1829,7 @@ static void Sta_ShowNumAccessesPerUsr (unsigned long NumRows,MYSQL_RES *mysql_re
|
|||
"%s "
|
||||
"</td>",
|
||||
Gbl.ColorRows[Gbl.RowEvenOdd],
|
||||
Txt_ROLES_SINGULAR_Abc[UsrDat.RoleInCurrentCrsDB][UsrDat.Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[UsrDat.RoleInCurrentCrsDB][UsrDat.Sex]);
|
||||
|
||||
/* Write the number of clicks */
|
||||
NumPagesGenerated = Str_GetFloatNumFromStr (row[1]);
|
||||
|
|
|
@ -6551,7 +6551,7 @@ static long Tst_GetParamTstCod (void)
|
|||
|
||||
void Tst_ShowOneTestExam (void)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Date;
|
||||
extern const char *Txt_Questions;
|
||||
extern const char *Txt_non_blank_QUESTIONS;
|
||||
|
@ -6615,7 +6615,7 @@ void Tst_ShowOneTestExam (void)
|
|||
"</td>"
|
||||
"<td class=\"DAT\" style=\"text-align:left;"
|
||||
" vertical-align:top;\">",
|
||||
Txt_ROLES_SINGULAR_Abc[Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Other.UsrDat.RoleInCurrentCrsDB][Gbl.Usrs.Other.UsrDat.Sex]);
|
||||
ID_WriteUsrIDs (&Gbl.Usrs.Other.UsrDat,true);
|
||||
fprintf (Gbl.F.Out," %s",
|
||||
Gbl.Usrs.Other.UsrDat.Surname1);
|
||||
|
|
57
swad_text.c
57
swad_text.c
|
@ -5589,7 +5589,7 @@ const char *Txt_courses =
|
|||
#elif L==8
|
||||
"disciplinas";
|
||||
#endif
|
||||
|
||||
/*
|
||||
const char *Txt_Courses_as_a_ROLE = // Warning: it is very important to include %s in the following sentences
|
||||
#if L==0
|
||||
"Assignatures com %s";
|
||||
|
@ -5610,7 +5610,7 @@ const char *Txt_Courses_as_a_ROLE = // Warning: it is very important to include
|
|||
#elif L==8
|
||||
"Disciplinas como %s";
|
||||
#endif
|
||||
|
||||
*/
|
||||
const char *Txt_X_courses_have_been_eliminated = // Warning: it is very important to include %u in the following sentences
|
||||
#if L==0
|
||||
"Se ha(n) eliminado %u asignatura(s)."; // Necessita traduccio
|
||||
|
@ -10892,7 +10892,7 @@ const char *Txt_Field_BR_name =
|
|||
#elif L==8
|
||||
"Nome<br />do campo";
|
||||
#endif
|
||||
|
||||
/*
|
||||
const char *Txt_Figures =
|
||||
#if L==0
|
||||
"Xifres";
|
||||
|
@ -10913,7 +10913,7 @@ const char *Txt_Figures =
|
|||
#elif L==8
|
||||
"Números";
|
||||
#endif
|
||||
|
||||
*/
|
||||
const char *Txt_File =
|
||||
#if L==0
|
||||
"Fitxer";
|
||||
|
@ -11546,7 +11546,7 @@ const char *Txt_Files_works =
|
|||
#elif L==8
|
||||
"Arquivos trabalhos";
|
||||
#endif
|
||||
|
||||
/*
|
||||
const char *Txt_First_access =
|
||||
#if L==0
|
||||
"Primer accés";
|
||||
|
@ -11567,7 +11567,7 @@ const char *Txt_First_access =
|
|||
#elif L==8
|
||||
"Primeiro acesso";
|
||||
#endif
|
||||
|
||||
*/
|
||||
const char *Txt_first_message_not_allowed =
|
||||
#if L==0
|
||||
"primer mensaje no permitido"; // Necessita traduccio
|
||||
|
@ -12180,6 +12180,27 @@ const char *Txt_from_A_COURSE =
|
|||
"de";
|
||||
#endif
|
||||
|
||||
const char *Txt_From_TIME =
|
||||
#if L==0
|
||||
"Des de";
|
||||
#elif L==1
|
||||
"Vom";
|
||||
#elif L==2
|
||||
"From";
|
||||
#elif L==3
|
||||
"Desde";
|
||||
#elif L==4
|
||||
"Depuis";
|
||||
#elif L==5
|
||||
"Desde"; // Okoteve traducción
|
||||
#elif L==6
|
||||
"Da";
|
||||
#elif L==7
|
||||
"Od";
|
||||
#elif L==8
|
||||
"Desde";
|
||||
#endif
|
||||
|
||||
const char *Txt_From_now_on_the_number_of_editing_lines_of_the_field_X_is_Y = // Warning: it is very important to include %s and %u (in this order) in the following sentences
|
||||
#if L==0
|
||||
"A partir de ahora el nº de líneas de edición del campo <strong>%s</strong> es <strong>%u</strong>."; // Necessita traduccio
|
||||
|
@ -27154,25 +27175,25 @@ const char *Txt_posts =
|
|||
"posts";
|
||||
#endif
|
||||
|
||||
const char *Txt_public_files =
|
||||
const char *Txt_public_FILES =
|
||||
#if L==0
|
||||
"arxius públics";
|
||||
"públics";
|
||||
#elif L==1
|
||||
"öffentliche Dateien";
|
||||
"öffentliche";
|
||||
#elif L==2
|
||||
"public files";
|
||||
"public";
|
||||
#elif L==3
|
||||
"archivos públicos";
|
||||
"públicos";
|
||||
#elif L==4
|
||||
"fichiers publics";
|
||||
"publics";
|
||||
#elif L==5
|
||||
"archivos públicos"; // Okoteve traducción
|
||||
"públicos"; // Okoteve traducción
|
||||
#elif L==6
|
||||
"file pubblici";
|
||||
"pubblici";
|
||||
#elif L==7
|
||||
"publicznych pliki";
|
||||
"publicznych";
|
||||
#elif L==8
|
||||
"arquivos públicos";
|
||||
"públicos";
|
||||
#endif
|
||||
|
||||
const char *Txt_Public_open_educational_resource_OER_for_everyone =
|
||||
|
@ -29678,7 +29699,7 @@ const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT] =
|
|||
#endif
|
||||
};
|
||||
|
||||
const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
|
||||
const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
|
||||
{
|
||||
{
|
||||
#if L==0 // Rol_ROLE_UNKNOWN - Usr_SEX_UNKNOWN
|
||||
|
@ -30410,7 +30431,7 @@ const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
|
|||
#endif
|
||||
} };
|
||||
|
||||
const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
|
||||
const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
|
||||
{
|
||||
{
|
||||
#if L==0 // Rol_ROLE_UNKNOWN - Usr_SEX_UNKNOWN
|
||||
|
|
263
swad_user.c
263
swad_user.c
|
@ -120,7 +120,7 @@ static void Usr_GetUsrCommentsFromString (char *Str,struct UsrData *UsrDat);
|
|||
static Usr_Sex_t Usr_GetSexFromStr (const char *Str);
|
||||
|
||||
static unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role);
|
||||
static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole);
|
||||
static unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole);
|
||||
|
||||
static bool Usr_CheckIfMyBirthdayHasNotBeenCongratulated (void);
|
||||
static void Usr_InsertMyBirthday (void);
|
||||
|
@ -767,10 +767,10 @@ static unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********* Get number of students in courses of a user as teacher ************/
|
||||
/******* Get number of users with different role in courses of a user ********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole)
|
||||
static unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole)
|
||||
{
|
||||
char Query[256];
|
||||
|
||||
|
@ -780,7 +780,7 @@ static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrR
|
|||
" (SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld' AND Role='%u')"
|
||||
" AND Role='%u'",
|
||||
UsrCod,(unsigned) UsrRole,(unsigned) OthersRole);
|
||||
return (unsigned) DB_QueryCOUNT (Query,"can not get the number of courses of a user with a role");
|
||||
return (unsigned) DB_QueryCOUNT (Query,"can not get the number of users");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1539,7 +1539,7 @@ void Usr_WriteLoggedUsrHead (void)
|
|||
{
|
||||
extern const char *The_ClassUsr[The_NUM_THEMES];
|
||||
extern const char *The_ClassHead[The_NUM_THEMES];
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
static const unsigned NumCharsName[Lay_NUM_LAYOUTS] =
|
||||
{
|
||||
16, // Lay_LAYOUT_DESKTOP
|
||||
|
@ -1553,7 +1553,7 @@ void Usr_WriteLoggedUsrHead (void)
|
|||
if (Rol_GetNumAvailableRoles () == 1)
|
||||
fprintf (Gbl.F.Out,"<span class=\"%s\">%s: </span>",
|
||||
The_ClassUsr[Gbl.Prefs.Theme],
|
||||
Txt_ROLES_SINGULAR_Abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
|
||||
Txt_ROLES_SINGUL_Abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
|
||||
else
|
||||
{
|
||||
Rol_PutFormToChangeMyRole (true);
|
||||
|
@ -2445,7 +2445,7 @@ void Usr_ShowFormsRoleAndLogout (void)
|
|||
extern const char *Txt_Log_out;
|
||||
extern const char *Txt_You_are_LOGGED_as_X;
|
||||
extern const char *Txt_logged[Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_Role;
|
||||
|
||||
/***** Link to log out *****/
|
||||
|
@ -2459,7 +2459,7 @@ void Usr_ShowFormsRoleAndLogout (void)
|
|||
/***** Write message with my new logged role *****/
|
||||
sprintf (Gbl.Message,Txt_You_are_LOGGED_as_X,
|
||||
Txt_logged[Gbl.Usrs.Me.UsrDat.Sex],
|
||||
Txt_ROLES_SINGULAR_abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
|
||||
Txt_ROLES_SINGUL_abc[Gbl.Usrs.Me.LoggedRole][Gbl.Usrs.Me.UsrDat.Sex]);
|
||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
||||
|
||||
/***** Put a form to change my role *****/
|
||||
|
@ -4865,7 +4865,7 @@ void Usr_ListUsersToSelect (Rol_Role_t Role)
|
|||
|
||||
void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role)
|
||||
{
|
||||
extern const char *Txt_ROLES_SINGULAR_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
struct ListUsers *LstUsrs;
|
||||
Usr_Sex_t Sex;
|
||||
|
@ -4887,7 +4887,7 @@ void Usr_PutCheckboxToSelectAllTheUsers (Rol_Role_t Role)
|
|||
Sex = Usr_GetSexOfUsrsLst (LstUsrs);
|
||||
fprintf (Gbl.F.Out,"%s:</td>"
|
||||
"</tr>",
|
||||
LstUsrs->NumUsrs == 1 ? Txt_ROLES_SINGULAR_Abc[Role][Sex] :
|
||||
LstUsrs->NumUsrs == 1 ? Txt_ROLES_SINGUL_Abc[Role][Sex] :
|
||||
Txt_ROLES_PLURAL_Abc [Role][Sex]);
|
||||
}
|
||||
|
||||
|
@ -5726,7 +5726,7 @@ void Usr_ListAllDataTchs (void)
|
|||
unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char *UsrQuery)
|
||||
{
|
||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
struct ListUsers *LstUsrs;
|
||||
Usr_Sex_t Sex;
|
||||
|
@ -5758,7 +5758,7 @@ unsigned Usr_ListUsrsFound (Rol_Role_t Role,const char *UsrQuery)
|
|||
Usr_NUM_MAIN_FIELDS_DATA_USR);
|
||||
if (NumUsrs == 1)
|
||||
fprintf (Gbl.F.Out,"1 %s",
|
||||
Txt_ROLES_SINGULAR_abc[Role][Sex]);
|
||||
Txt_ROLES_SINGUL_abc[Role][Sex]);
|
||||
else
|
||||
fprintf (Gbl.F.Out,"%u %s",
|
||||
NumUsrs,
|
||||
|
@ -7527,15 +7527,24 @@ static void Usr_ShowUserProfile (void)
|
|||
Gbl.Usrs.Other.UsrDat.Accepted = Usr_GetIfUserHasAcceptedEnrollmentInCurrentCrs (Gbl.Usrs.Other.UsrDat.UsrCod);
|
||||
}
|
||||
|
||||
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">");
|
||||
fprintf (Gbl.F.Out,"<div style=\"margin:0 auto;\">"
|
||||
"<table style=\"margin:0 auto;\">"
|
||||
"<tr>"
|
||||
"<td style=\"text-align:right; vertical-align:top;\">");
|
||||
|
||||
/***** Common record *****/
|
||||
Rec_ShowSharedUsrRecord (Rec_RECORD_PUBLIC,&Gbl.Usrs.Other.UsrDat);
|
||||
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"<td style=\"text-align:left; vertical-align:top; padding-left:4px;\">");
|
||||
|
||||
/***** Show details of user's profile *****/
|
||||
Usr_ShowDetailsUserProfile (&Gbl.Usrs.Other.UsrDat);
|
||||
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>"
|
||||
"</table>"
|
||||
"</div>");
|
||||
}
|
||||
else
|
||||
Error = true;
|
||||
|
@ -7587,29 +7596,101 @@ void Usr_ChangeProfileVisibility (void)
|
|||
void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Figures;
|
||||
extern const char *Txt_First_access;
|
||||
// extern const char *Txt_Figures;
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_course;
|
||||
extern const char *Txt_courses;
|
||||
extern const char *Txt_From_TIME;
|
||||
// extern const char *Txt_First_access;
|
||||
extern const char *Txt_day;
|
||||
extern const char *Txt_days;
|
||||
extern const char *Txt_Calculate;
|
||||
extern const char *Txt_Clicks;
|
||||
extern const char *Txt_of_PART_OF_A_TOTAL;
|
||||
extern const char *Txt_clicks;
|
||||
extern const char *Txt_Courses_as_a_ROLE;
|
||||
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
// extern const char *Txt_Courses_as_a_ROLE;
|
||||
extern const char *Txt_Forums;
|
||||
extern const char *Txt_post;
|
||||
extern const char *Txt_posts;
|
||||
extern const char *Txt_Messages;
|
||||
extern const char *Txt_message;
|
||||
extern const char *Txt_messages;
|
||||
extern const char *Txt_Files;
|
||||
extern const char *Txt_public_files;
|
||||
extern const char *Txt_Forum_posts;
|
||||
extern const char *Txt_Messages_sent;
|
||||
extern const char *Txt_files;
|
||||
extern const char *Txt_public_FILES;
|
||||
struct UsrFigures UsrFigures;
|
||||
unsigned NumCrssUsrIsTeacher;
|
||||
unsigned NumCrssUsrIsStudent;
|
||||
unsigned NumStds;
|
||||
unsigned NumTchs;
|
||||
unsigned NumFiles;
|
||||
unsigned NumPublicFiles;
|
||||
|
||||
/***** Start table *****/
|
||||
Lay_StartRoundFrameTable10 (NULL,2,Txt_Figures);
|
||||
// Lay_StartRoundFrameTable10 (NULL,2,Txt_Figures);
|
||||
// Lay_StartRoundFrameTable10 (NULL,2,NULL);
|
||||
fprintf (Gbl.F.Out,"<table class=\"TABLE10 CELLS_PAD_2\">");
|
||||
|
||||
/***** Number of courses in which the user is teacher or student *****/
|
||||
if ((NumCrssUsrIsTeacher = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_TEACHER)))
|
||||
{
|
||||
NumTchs = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_TEACHER);
|
||||
NumStds = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_STUDENT);
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">"
|
||||
"%u %s<br />"
|
||||
"%u %s<br />"
|
||||
"%u %s"
|
||||
"</a>"
|
||||
"</td>",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_ROLES_SINGUL_Abc[Rol_ROLE_TEACHER][UsrDat->Sex],
|
||||
NumCrssUsrIsTeacher,
|
||||
(NumCrssUsrIsTeacher == 1) ? Txt_course :
|
||||
Txt_courses,
|
||||
NumTchs,
|
||||
(NumTchs == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN],
|
||||
NumStds,
|
||||
(NumStds == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
}
|
||||
if ((NumCrssUsrIsStudent = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_STUDENT)))
|
||||
{
|
||||
NumTchs = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_TEACHER);
|
||||
NumStds = Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_STUDENT);
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">"
|
||||
"%u %s<br />"
|
||||
"%u %s<br />"
|
||||
"%u %s"
|
||||
"</a>"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_ROLES_SINGUL_Abc[Rol_ROLE_STUDENT][UsrDat->Sex],
|
||||
NumCrssUsrIsStudent,
|
||||
(NumCrssUsrIsStudent == 1) ? Txt_course :
|
||||
Txt_courses,
|
||||
NumTchs,
|
||||
(NumTchs == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN],
|
||||
NumStds,
|
||||
(NumStds == 1) ? Txt_ROLES_SINGUL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN] :
|
||||
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
}
|
||||
|
||||
/***** Get figures *****/
|
||||
Usr_GetUsrFigures (UsrDat->UsrCod,&UsrFigures);
|
||||
|
@ -7618,19 +7699,18 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s:"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_First_access);
|
||||
Txt_From_TIME);
|
||||
if (UsrFigures.FirstClickTime.Date.Year)
|
||||
{
|
||||
Dat_WriteDate (UsrFigures.FirstClickTime.Date.YYYYMMDD);
|
||||
fprintf (Gbl.F.Out," ");
|
||||
Dat_WriteHourMinute (&(UsrFigures.FirstClickTime.YYYYMMDDHHMMSS[8]));
|
||||
if (UsrFigures.NumDays >= 0)
|
||||
fprintf (Gbl.F.Out," (%d %s)",
|
||||
fprintf (Gbl.F.Out,"<br />"
|
||||
"%d %s",
|
||||
UsrFigures.NumDays,
|
||||
(UsrFigures.NumDays == 1) ? Txt_day :
|
||||
Txt_days);
|
||||
|
@ -7651,7 +7731,7 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s:"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">",
|
||||
|
@ -7659,8 +7739,10 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
Txt_Clicks);
|
||||
if (UsrFigures.NumClicks >= 0)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"%ld, #%ld %s %ld",
|
||||
UsrFigures.NumClicks,
|
||||
fprintf (Gbl.F.Out,"%ld %s<br />"
|
||||
"<span class=\"RANK\">#%ld</span>"
|
||||
" %s %ld",
|
||||
UsrFigures.NumClicks,Txt_clicks,
|
||||
Usr_GetRankingNumClicks (UsrDat->UsrCod),
|
||||
Txt_of_PART_OF_A_TOTAL,
|
||||
Usr_GetNumUsrsWithNumClicks ());
|
||||
|
@ -7669,8 +7751,10 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
fprintf (Gbl.F.Out,"<br />");
|
||||
Str_WriteFloatNum ((float) UsrFigures.NumClicks /
|
||||
(float) (UsrFigures.NumDays + 1));
|
||||
fprintf (Gbl.F.Out," %s / %s, #%ld %s %ld",
|
||||
Txt_clicks,Txt_day,
|
||||
fprintf (Gbl.F.Out," / %s<br />"
|
||||
"<span class=\"RANK\">#%ld</span>"
|
||||
" %s %ld",
|
||||
Txt_day,
|
||||
Usr_GetRankingNumClicksPerDay (UsrDat->UsrCod),
|
||||
Txt_of_PART_OF_A_TOTAL,
|
||||
Usr_GetNumUsrsWithNumClicksPerDay ());
|
||||
|
@ -7688,87 +7772,28 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/***** Number of courses in which the user is teacher or student *****/
|
||||
if ((NumCrssUsrIsTeacher = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_TEACHER)))
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,Txt_Courses_as_a_ROLE,
|
||||
Txt_ROLES_SINGULAR_abc[Rol_ROLE_TEACHER][UsrDat->Sex]);
|
||||
fprintf (Gbl.F.Out,":"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">"
|
||||
"%u (%u %s)"
|
||||
"</a>"
|
||||
"</td>",
|
||||
NumCrssUsrIsTeacher,
|
||||
Usr_GetNumUsrsOtherRoleInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_STUDENT),
|
||||
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||
}
|
||||
if ((NumCrssUsrIsStudent = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_STUDENT)))
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
fprintf (Gbl.F.Out,Txt_Courses_as_a_ROLE,
|
||||
Txt_ROLES_SINGULAR_abc[Rol_ROLE_STUDENT][UsrDat->Sex]);
|
||||
fprintf (Gbl.F.Out,":"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">"
|
||||
"%u (%u %s)"
|
||||
"</a>"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
NumCrssUsrIsStudent,
|
||||
Usr_GetNumUsrsOtherRoleInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_TEACHER),
|
||||
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
|
||||
}
|
||||
|
||||
/***** Number of files published *****/
|
||||
if ((NumFiles = Brw_GetNumFilesUsr (UsrDat->UsrCod)))
|
||||
NumPublicFiles = Brw_GetNumPublicFilesUsr (UsrDat->UsrCod);
|
||||
else
|
||||
NumPublicFiles = 0;
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s:"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">"
|
||||
"%u (%u %s)"
|
||||
"</a>"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_Files,
|
||||
NumFiles,NumPublicFiles,
|
||||
Txt_public_files);
|
||||
|
||||
/***** Number of posts in forums *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s:"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_Forum_posts);
|
||||
Txt_Forums);
|
||||
if (UsrFigures.NumForPst >= 0)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"%ld",UsrFigures.NumForPst);
|
||||
fprintf (Gbl.F.Out,"%ld %s",
|
||||
UsrFigures.NumForPst,
|
||||
(UsrFigures.NumForPst == 1) ? Txt_post :
|
||||
Txt_posts);
|
||||
if (UsrFigures.NumDays >= 0)
|
||||
{
|
||||
fprintf (Gbl.F.Out," (");
|
||||
fprintf (Gbl.F.Out,"<br />");
|
||||
Str_WriteFloatNum ((float) UsrFigures.NumForPst /
|
||||
(float) (UsrFigures.NumDays + 1));
|
||||
fprintf (Gbl.F.Out," / %s)",Txt_day);
|
||||
fprintf (Gbl.F.Out," / %s",Txt_day);
|
||||
}
|
||||
}
|
||||
else // Number of forum posts is unknown
|
||||
|
@ -7787,21 +7812,24 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s:"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_Messages_sent);
|
||||
Txt_Messages);
|
||||
if (UsrFigures.NumMsgSnt >= 0)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"%ld",UsrFigures.NumMsgSnt);
|
||||
fprintf (Gbl.F.Out,"%ld %s",
|
||||
UsrFigures.NumMsgSnt,
|
||||
(UsrFigures.NumMsgSnt == 1) ? Txt_message :
|
||||
Txt_messages);
|
||||
if (UsrFigures.NumDays >= 0)
|
||||
{
|
||||
fprintf (Gbl.F.Out," (");
|
||||
fprintf (Gbl.F.Out,"<br />");
|
||||
Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt /
|
||||
(float) (UsrFigures.NumDays + 1));
|
||||
fprintf (Gbl.F.Out," / %s)",Txt_day);
|
||||
fprintf (Gbl.F.Out," / %s",Txt_day);
|
||||
}
|
||||
}
|
||||
else // Number of clicks is unknown
|
||||
|
@ -7816,8 +7844,31 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
fprintf (Gbl.F.Out,"</td>"
|
||||
"</tr>");
|
||||
|
||||
/***** Number of files published *****/
|
||||
if ((NumFiles = Brw_GetNumFilesUsr (UsrDat->UsrCod)))
|
||||
NumPublicFiles = Brw_GetNumPublicFilesUsr (UsrDat->UsrCod);
|
||||
else
|
||||
NumPublicFiles = 0;
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\""
|
||||
" style=\"text-align:right; vertical-align:top;\">"
|
||||
"%s"
|
||||
"</td>"
|
||||
"<td class=\"DAT\""
|
||||
" style=\"text-align:left; vertical-align:top;\">"
|
||||
"%u %s<br />"
|
||||
"%u %s"
|
||||
"</a>"
|
||||
"</td>"
|
||||
"</tr>",
|
||||
The_ClassFormul[Gbl.Prefs.Theme],
|
||||
Txt_Files,
|
||||
NumFiles,Txt_files,
|
||||
NumPublicFiles,Txt_public_FILES);
|
||||
|
||||
/***** End of table *****/
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
fprintf (Gbl.F.Out,"</table>");
|
||||
// Lay_EndRoundFrameTable10 ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue