mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-20 00:02:42 +02:00
Version 17.9.1
This commit is contained in:
parent
b3fb8ad5e2
commit
ca46f020d5
|
@ -252,13 +252,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 17.9 (2017-09-24)"
|
#define Log_PLATFORM_VERSION "SWAD 17.9.1 (2017-09-24)"
|
||||||
#define CSS_FILE "swad17.0.css"
|
#define CSS_FILE "swad17.0.css"
|
||||||
#define JS_FILE "swad16.206.3.js"
|
#define JS_FILE "swad16.206.3.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 17.9.1: Sep 24, 2017 Changes in listing of all projects in a table. (231172 lines)
|
||||||
Version 17.9: Sep 24, 2017 Action to show all projects in a table. (231151 lines)
|
Version 17.9: Sep 24, 2017 Action to show all projects in a table. (231151 lines)
|
||||||
1 change necessary in database:
|
1 change necessary in database:
|
||||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1696','es','N','Ver tabla proyectos');
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1696','es','N','Ver tabla proyectos');
|
||||||
|
|
201
swad_project.c
201
swad_project.c
|
@ -88,8 +88,12 @@ static void Prj_ShowOneProjectUsrs (const struct Project *Prj,
|
||||||
const char *Label,Prj_RoleInProject_t RoleInProject);
|
const char *Label,Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
||||||
Prj_RoleInProject_t RoleInProject);
|
Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
Prj_RoleInProject_t RoleInProject);
|
Prj_RoleInProject_t RoleInProject);
|
||||||
|
static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
|
||||||
|
Prj_RoleInProject_t RoleInProject);
|
||||||
|
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
||||||
|
MYSQL_RES **mysql_res);
|
||||||
|
|
||||||
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject);
|
||||||
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject);
|
||||||
|
@ -153,7 +157,7 @@ void Prj_ShowTableAllProjects (void)
|
||||||
|
|
||||||
/***** Write all the projects *****/
|
/***** Write all the projects *****/
|
||||||
for (NumPrj = 0;
|
for (NumPrj = 0;
|
||||||
NumPrj <= Gbl.Prjs.Num;
|
NumPrj < Gbl.Prjs.Num;
|
||||||
NumPrj++)
|
NumPrj++)
|
||||||
{
|
{
|
||||||
Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj];
|
Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj];
|
||||||
|
@ -773,7 +777,7 @@ static void Prj_ShowOneProjectUsrs (const struct Project *Prj,
|
||||||
Label);
|
Label);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Prj_WriteUsrs (Prj->PrjCod,ProjectView,RoleInProject);
|
Prj_ShowOneProjectWriteUsrs (Prj->PrjCod,ProjectView,RoleInProject);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
}
|
}
|
||||||
|
@ -786,7 +790,7 @@ static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
Prj->Hidden ? "DAT_LIGHT" :
|
Prj->Hidden ? "DAT_LIGHT" :
|
||||||
"DAT");
|
"DAT");
|
||||||
Prj_WriteUsrs (Prj->PrjCod,Prj_LIST_PROJECTS,RoleInProject);
|
Prj_ShowTableAllProjectsWriteUsrs (Prj->PrjCod,RoleInProject);
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -794,22 +798,17 @@ static void Prj_ShowTableAllProjectsUsrs (const struct Project *Prj,
|
||||||
/*************** Write list of users with a role in a project ****************/
|
/*************** Write list of users with a role in a project ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
static void Prj_ShowOneProjectWriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
Prj_RoleInProject_t RoleInProject)
|
Prj_RoleInProject_t RoleInProject)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Remove;
|
extern const char *Txt_Remove;
|
||||||
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_Add_USER;
|
extern const char *Txt_Add_USER;
|
||||||
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT];
|
||||||
char Query[2048];
|
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned NumUsr;
|
unsigned NumUsr;
|
||||||
unsigned NumUsrs;
|
unsigned NumUsrs;
|
||||||
unsigned NumUsrsKnown;
|
|
||||||
unsigned NumUsrsUnknown;
|
|
||||||
unsigned NumUsrsToShow;
|
|
||||||
bool UsrValid;
|
bool UsrValid;
|
||||||
bool ShowPhoto;
|
bool ShowPhoto;
|
||||||
char PhotoURL[PATH_MAX + 1];
|
char PhotoURL[PATH_MAX + 1];
|
||||||
|
@ -828,92 +827,56 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
ActReqAddEvaPrj, // Prj_ROLE_EVA, Evaluator
|
ActReqAddEvaPrj, // Prj_ROLE_EVA, Evaluator
|
||||||
};
|
};
|
||||||
|
|
||||||
/***** Get number of users in project from database *****/
|
|
||||||
sprintf (Query,"SELECT COUNT(*) FROM prj_usr"
|
|
||||||
" WHERE PrjCod=%ld AND RoleInProject=%u",
|
|
||||||
PrjCod,(unsigned) RoleInProject);
|
|
||||||
NumUsrs = (unsigned) DB_QueryCOUNT (Query,"can not get users in project");
|
|
||||||
|
|
||||||
/***** Get users in project from database *****/
|
/***** Get users in project from database *****/
|
||||||
sprintf (Query,"SELECT prj_usr.UsrCod,"
|
NumUsrs = Prj_GetUsrsInPrj (PrjCod,RoleInProject,&mysql_res);
|
||||||
"usr_data.Surname1 AS S1,"
|
|
||||||
"usr_data.Surname2 AS S2,"
|
|
||||||
"usr_data.FirstName AS FN"
|
|
||||||
" FROM prj_usr,usr_data"
|
|
||||||
" WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u"
|
|
||||||
" AND prj_usr.UsrCod=usr_data.UsrCod"
|
|
||||||
" ORDER BY S1,S2,FN",
|
|
||||||
PrjCod,(unsigned) RoleInProject);
|
|
||||||
NumUsrsKnown = (unsigned) DB_QuerySELECT (Query,&mysql_res,
|
|
||||||
"can not get users in project");
|
|
||||||
|
|
||||||
/***** Start table *****/
|
/***** Start table *****/
|
||||||
fprintf (Gbl.F.Out,"<table>");
|
fprintf (Gbl.F.Out,"<table>");
|
||||||
|
|
||||||
/***** Check number of users *****/
|
/***** Write users *****/
|
||||||
if (NumUsrs)
|
for (NumUsr = 0;
|
||||||
|
NumUsr < NumUsrs;
|
||||||
|
NumUsr++)
|
||||||
{
|
{
|
||||||
/***** How many users will be shown? *****/
|
/* Get user's code */
|
||||||
NumUsrsToShow = NumUsrsKnown;
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
|
||||||
/***** Write known users *****/
|
/* Get user's data */
|
||||||
for (NumUsr = 0;
|
UsrValid = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
|
||||||
NumUsr < NumUsrsToShow;
|
|
||||||
NumUsr++)
|
|
||||||
{
|
|
||||||
/* Get user's code */
|
|
||||||
row = mysql_fetch_row (mysql_res);
|
|
||||||
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
|
||||||
|
|
||||||
/* Get user's data */
|
/* Start row for this user */
|
||||||
UsrValid = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
|
fprintf (Gbl.F.Out,"<tr>");
|
||||||
|
|
||||||
/* Start row for this user */
|
/* Icon to remove user */
|
||||||
fprintf (Gbl.F.Out,"<tr>");
|
if (ProjectView == Prj_EDIT_ONE_PROJECT)
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
||||||
|
Lay_PutContextualLink (ActionReqRemUsr[RoleInProject],NULL,Prj_PutParams,
|
||||||
|
"remove-on64x64.png",
|
||||||
|
Txt_Remove,NULL,
|
||||||
|
NULL);
|
||||||
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
}
|
||||||
|
|
||||||
/* Icon to remove user */
|
/* Put user's photo */
|
||||||
if (ProjectView == Prj_EDIT_ONE_PROJECT)
|
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
||||||
{
|
ShowPhoto = (UsrValid ? Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL) :
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
false);
|
||||||
Lay_PutContextualLink (ActionReqRemUsr[RoleInProject],NULL,Prj_PutParams,
|
Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL :
|
||||||
"remove-on64x64.png",
|
NULL,
|
||||||
Txt_Remove,NULL,
|
"PHOTO21x28",Pho_ZOOM,false);
|
||||||
NULL);
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Put user's photo */
|
/* Write user's name */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">");
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
ShowPhoto = (UsrValid ? Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL) :
|
"<td class=\"AUTHOR_TXT LEFT_MIDDLE\">");
|
||||||
false);
|
if (UsrValid)
|
||||||
Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL :
|
fprintf (Gbl.F.Out,"%s",Gbl.Usrs.Other.UsrDat.FullName);
|
||||||
NULL,
|
else
|
||||||
"PHOTO21x28",Pho_ZOOM,false);
|
fprintf (Gbl.F.Out,"[%s]",
|
||||||
|
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN]); // User not found, likely a user who has been removed
|
||||||
/* Write user's name */
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
"</tr>");
|
||||||
"<td class=\"AUTHOR_TXT LEFT_MIDDLE\">");
|
|
||||||
if (UsrValid)
|
|
||||||
fprintf (Gbl.F.Out,"%s",Gbl.Usrs.Other.UsrDat.FullName);
|
|
||||||
else
|
|
||||||
fprintf (Gbl.F.Out,"[%s]",
|
|
||||||
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN]); // User not found, likely a user who has been removed
|
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
|
||||||
"</tr>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** If any users are unknown *****/
|
|
||||||
if ((NumUsrsUnknown = NumUsrs - NumUsrsKnown))
|
|
||||||
/***** Start form to show all the users *****/
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td colspan=\"3\" class=\"AUTHOR_TXT LEFT_MIDDLE\">"
|
|
||||||
"[%u %s]"
|
|
||||||
"</td>"
|
|
||||||
"</tr>",
|
|
||||||
NumUsrsUnknown,
|
|
||||||
(NumUsrsUnknown == 1) ?
|
|
||||||
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN] :
|
|
||||||
Txt_ROLES_PLURAL_abc[Rol_UNK][Usr_SEX_UNKNOWN]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Row to add a new user *****/
|
/***** Row to add a new user *****/
|
||||||
|
@ -938,6 +901,70 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView,
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Prj_ShowTableAllProjectsWriteUsrs (long PrjCod,
|
||||||
|
Prj_RoleInProject_t RoleInProject)
|
||||||
|
{
|
||||||
|
extern const char *Txt_ROLES_SINGUL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
unsigned NumUsr;
|
||||||
|
unsigned NumUsrs;
|
||||||
|
bool UsrValid;
|
||||||
|
|
||||||
|
/***** Get users in project from database *****/
|
||||||
|
NumUsrs = Prj_GetUsrsInPrj (PrjCod,RoleInProject,&mysql_res);
|
||||||
|
|
||||||
|
/***** Write users *****/
|
||||||
|
for (NumUsr = 0;
|
||||||
|
NumUsr < NumUsrs;
|
||||||
|
NumUsr++)
|
||||||
|
{
|
||||||
|
/* Get user's code */
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
Gbl.Usrs.Other.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
|
||||||
|
/* Get user's data */
|
||||||
|
UsrValid = Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat);
|
||||||
|
|
||||||
|
/* Separator */
|
||||||
|
if (NumUsr)
|
||||||
|
fprintf (Gbl.F.Out,",<br />");
|
||||||
|
|
||||||
|
/* Write user's name */
|
||||||
|
if (UsrValid)
|
||||||
|
fprintf (Gbl.F.Out,"%s",Gbl.Usrs.Other.UsrDat.FullName);
|
||||||
|
else
|
||||||
|
fprintf (Gbl.F.Out,"[%s]",
|
||||||
|
Txt_ROLES_SINGUL_abc[Rol_UNK][Usr_SEX_UNKNOWN]); // User not found, likely a user who has been removed
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Free structure that stores the query result *****/
|
||||||
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Get number of users in a project ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
|
||||||
|
MYSQL_RES **mysql_res)
|
||||||
|
{
|
||||||
|
char Query[1024];
|
||||||
|
|
||||||
|
/***** Get users in project from database *****/
|
||||||
|
sprintf (Query,"SELECT prj_usr.UsrCod,"
|
||||||
|
"usr_data.Surname1 AS S1,"
|
||||||
|
"usr_data.Surname2 AS S2,"
|
||||||
|
"usr_data.FirstName AS FN"
|
||||||
|
" FROM prj_usr,usr_data"
|
||||||
|
" WHERE prj_usr.PrjCod=%ld AND RoleInProject=%u"
|
||||||
|
" AND prj_usr.UsrCod=usr_data.UsrCod"
|
||||||
|
" ORDER BY S1,S2,FN",
|
||||||
|
PrjCod,(unsigned) RoleInProject);
|
||||||
|
return (unsigned) DB_QuerySELECT (Query,mysql_res,
|
||||||
|
"can not get users in project");
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*** Request another user's ID, @nickname or email to add user to project ****/
|
/*** Request another user's ID, @nickname or email to add user to project ****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user