Version 22.42: Oct 11, 2022 Review of projects (not finished).

This commit is contained in:
acanas 2022-10-11 21:36:37 +02:00
parent 5d43b34773
commit 7202f590ed
9 changed files with 281 additions and 40 deletions

1
icon/comment-slash.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z"/></svg>

After

Width:  |  Height:  |  Size: 821 B

1
icon/thumbs-down.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-25.3-19.5-46-44.3-47.9c7.7-8.5 12.3-19.8 12.3-32.1c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 320H96c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64V288c0 17.7 14.3 32 32 32z"/></svg>

After

Width:  |  Height:  |  Size: 813 B

1
icon/thumbs-up.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 25.3-19.5 46-44.3 47.9c7.7 8.5 12.3 19.8 12.3 32.1c0 23.4-16.8 42.9-38.9 47.1c4.4 7.2 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z"/></svg>

After

Width:  |  Height:  |  Size: 818 B

View File

@ -606,10 +606,20 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia.
*/
#define Log_PLATFORM_VERSION "SWAD 22.41.1 (2022-10-07)"
#define Log_PLATFORM_VERSION "SWAD 22.42 (2022-10-11)"
#define CSS_FILE "swad22.40.css"
#define JS_FILE "swad21.100.js"
/*
Version 22.42: Oct 11, 2022 Review of projects (not finished). (? lines)
3 changes necessary in database:
ALTER TABLE prj_projects ADD COLUMN ReviewStatus ENUM('unreviewed','unapproved','approved') NOT NULL DEFAULT 'unreviewed' AFTER URL,ADD INDEX (CrsCod,ReviewStatus);
ALTER TABLE prj_projects ADD COLUMN ReviewTime DATETIME NOT NULL DEFAULT '1970-01-01 01:00:00' AFTER ReviewStatus;
ALTER TABLE prj_projects ADD COLUMN ReviewTxt TEXT NOT NULL AFTER ReviewTime;
Copy the following icons to icon public directory:
sudo cp icon/comment-slash.svg /var/www/html/swad/icon/
sudo cp icon/thumbs-down.svg /var/www/html/swad/icon/
sudo cp icon/thumbs-up.svg /var/www/html/swad/icon/
Version 22.41.1: Oct 07, 2022 Fixed issue in main title. (332512 lines)
Version 22.41: Oct 06, 2022 Changes in the behavior of the expansion/contraction of program items. (332511 lines)
Version 22.40: Oct 04, 2022 Link in main title. (332514 lines)

View File

@ -2595,26 +2595,29 @@ mysql> DESCRIBE prj_config;
/***** Table prj_projects *****/
/*
mysql> DESCRIBE prj_projects;
+-------------+-------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------------------------------+------+-----+---------+----------------+
| PrjCod | int(11) | NO | PRI | NULL | auto_increment |
| CrsCod | int(11) | NO | MUL | -1 | |
| DptCod | int(11) | NO | | -1 | |
| Locked | enum('N','Y') | NO | | N | |
| Hidden | enum('N','Y') | NO | | N | |
| Assigned | enum('N','Y') | NO | | N | |
| NumStds | int(11) | NO | | 1 | |
| Proposal | enum('new','modified','unmodified') | NO | | new | |
| CreatTime | datetime | NO | | NULL | |
| ModifTime | datetime | NO | | NULL | |
| Title | varchar(4095) | NO | | NULL | |
| Description | text | NO | | NULL | |
| Knowledge | text | NO | | NULL | |
| Materials | text | NO | | NULL | |
| URL | varchar(255) | NO | | NULL | |
+-------------+-------------------------------------+------+-----+---------+----------------+
15 rows in set (0.00 sec)
+--------------+--------------------------------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------------------------------------+------+-----+---------------------+----------------+
| PrjCod | int | NO | PRI | NULL | auto_increment |
| CrsCod | int | NO | MUL | -1 | |
| DptCod | int | NO | | -1 | |
| Locked | enum('N','Y') | NO | | N | |
| Hidden | enum('N','Y') | NO | | N | |
| Assigned | enum('N','Y') | NO | | N | |
| NumStds | int | NO | | 1 | |
| Proposal | enum('new','modified','unmodified') | NO | | new | |
| CreatTime | datetime | NO | | NULL | |
| ModifTime | datetime | NO | | NULL | |
| Title | varchar(4095) | NO | | NULL | |
| Description | text | NO | | NULL | |
| Knowledge | text | NO | | NULL | |
| Materials | text | NO | | NULL | |
| URL | varchar(255) | NO | | NULL | |
| ReviewStatus | enum('unreviewed','unapproved','approved') | NO | | unreviewed | |
| ReviewTime | datetime | NO | | 1970-01-01 01:00:00 | |
| ReviewTxt | text | NO | | NULL | |
+--------------+--------------------------------------------+------+-----+---------------------+----------------+
18 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_projects ("
"PrjCod INT NOT NULL AUTO_INCREMENT,"
@ -2632,11 +2635,36 @@ mysql> DESCRIBE prj_projects;
"Knowledge TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"Materials TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"URL VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW
"ReviewStatus ENUM('unreviewed','unapproved','approved') NOT NULL DEFAULT 'unreviewed',"
"ReviewTime DATETIME NOT NULL DEFAULT '1970-01-01 01:00:00',"
"ReviewTxt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"UNIQUE INDEX(PrjCod),"
"INDEX(CrsCod,Hidden),"
"INDEX(CrsCod,CreatTime),"
"INDEX(CrsCod,ModifTime),"
"INDEX(CrsCod,DptCod))");
"INDEX(CrsCod,DptCod),"
"INDEX(CrsCod,ReviewStatus))");
/***** Table prj_reviews *****/
/*
mysql> DESCRIBE prj_reviews;
+------------+--------------------------------------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------------------------------+------+-----+----------+-------+
| PrjCod | int | NO | MUL | NULL | |
| ReviewTime | datetime | NO | | NULL | |
| Result | enum('negative','solved','positive') | NO | | negative | |
| Txt | text | NO | | NULL | |
+------------+--------------------------------------+------+-----+----------+-------+
4 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_reviews ("
"PrjCod INT NOT NULL,"
"ReviewTime DATETIME NOT NULL,"
"Result ENUM('negative','solved','positive') NOT NULL DEFAULT 'negative',"
"Txt TEXT NOT NULL," // Cns_MAX_BYTES_TEXT
"INDEX(PrjCod,ReviewTime),"
"INDEX(PrjCod,Result))");
/***** Table prj_users *****/
/*

View File

@ -69,6 +69,7 @@ extern struct Globals Gbl;
#define Prj_PARAM_PRE_NON_NAME "PreNon"
#define Prj_PARAM_HID_VIS_NAME "HidVis"
#define Prj_PARAM_FAULTIN_NAME "Faulti"
#define Prj_PARAM_REVIEW_NAME "Review"
/***** Type of view when writing one project *****/
typedef enum
@ -159,16 +160,19 @@ static void Prj_ShowFormToFilterByMy_All (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByAssign (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByHidden (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByWarning (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects);
static void Prj_ShowFormToFilterByDpt (const struct Prj_Projects *Projects);
static void Prj_PutCurrentParams (void *Projects);
static void Prj_PutHiddenParamAssign (unsigned Assign);
static void Prj_PutHiddenParamHidden (unsigned Hidden);
static void Prj_PutHiddenParamFaulti (unsigned Faulti);
static void Prj_PutHiddenParamReview (unsigned Review);
static void Prj_PutHiddenParamDptCod (long DptCod);
static void Prj_GetHiddenParamPreNon (struct Prj_Projects *Projects);
static Prj_HiddenVisibl_t Prj_GetHiddenParamHidVis (void);
static unsigned Prj_GetHiddenParamFaulti (void);
static unsigned Prj_GetHiddenParamReview (void);
static long Prj_GetHiddenParamDptCod (void);
static Usr_Who_t Prj_GetParamWho (void);
@ -464,19 +468,22 @@ static void Prj_ShowPrjsInCurrentPage (void *Projects)
/***** Put filters to choice which projects to show *****/
/* 1st. row */
Set_BeginSettingsHead ();
Prj_ShowFormToFilterByMy_All ((struct Prj_Projects *) Projects);
Prj_ShowFormToFilterByAssign ((struct Prj_Projects *) Projects);
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
case Rol_TCH:
case Rol_SYS_ADM:
Prj_ShowFormToFilterByHidden ((struct Prj_Projects *) Projects);
break;
default: // Students will see only visible projects
break;
}
Prj_ShowFormToFilterByWarning ((struct Prj_Projects *) Projects);
Prj_ShowFormToFilterByMy_All ((struct Prj_Projects *) Projects);
Prj_ShowFormToFilterByAssign ((struct Prj_Projects *) Projects);
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_NET:
case Rol_TCH:
case Rol_SYS_ADM:
Prj_ShowFormToFilterByHidden ((struct Prj_Projects *) Projects);
break;
default: // Students will see only visible projects
break;
}
Prj_ShowFormToFilterByWarning ((struct Prj_Projects *) Projects);
Prj_ShowFormToFilterByReview ((struct Prj_Projects *) Projects);
Set_EndSettingsHead ();
/* 2nd. row */
@ -575,6 +582,7 @@ static void Prj_ShowFormToFilterByMy_All (const struct Prj_Projects *Projects)
Filter.Assign = Projects->Filter.Assign;
Filter.Hidden = Projects->Filter.Hidden;
Filter.Faulti = Projects->Filter.Faulti;
Filter.Review = Projects->Filter.Review;
Filter.DptCod = Projects->Filter.DptCod;
Prj_PutParams (&Filter,
Projects->SelectedOrder,
@ -608,6 +616,7 @@ static void Prj_ShowFormToFilterByAssign (const struct Prj_Projects *Projects)
Filter.Assign = Projects->Filter.Assign ^ (1 << Assign); // Toggle
Filter.Hidden = Projects->Filter.Hidden;
Filter.Faulti = Projects->Filter.Faulti;
Filter.Review = Projects->Filter.Review;
Filter.DptCod = Projects->Filter.DptCod;
Prj_PutParams (&Filter,
Projects->SelectedOrder,
@ -651,6 +660,7 @@ static void Prj_ShowFormToFilterByHidden (const struct Prj_Projects *Projects)
Filter.Assign = Projects->Filter.Assign;
Filter.Hidden = Projects->Filter.Hidden ^ (1 << HidVis); // Toggle
Filter.Faulti = Projects->Filter.Faulti;
Filter.Review = Projects->Filter.Review;
Filter.DptCod = Projects->Filter.DptCod;
Prj_PutParams (&Filter,
Projects->SelectedOrder,
@ -681,7 +691,7 @@ static void Prj_ShowFormToFilterByWarning (const struct Prj_Projects *Projects)
} FaultinessIcon[Prj_NUM_FAULTINESS] =
{
[Prj_FAULTY ] = {"exclamation-triangle.svg",Ico_YELLOW},
[Prj_FAULTLESS] = {"check-circle.svg" ,Ico_GREEN},
[Prj_FAULTLESS] = {"check-circle.svg" ,Ico_GREEN },
};
Set_BeginOneSettingSelector ();
@ -695,6 +705,7 @@ static void Prj_ShowFormToFilterByWarning (const struct Prj_Projects *Projects)
Filter.Assign = Projects->Filter.Assign;
Filter.Hidden = Projects->Filter.Hidden;
Filter.Faulti = Projects->Filter.Faulti ^ (1 << Faultiness); // Toggle
Filter.Review = Projects->Filter.Review;
Filter.DptCod = Projects->Filter.DptCod;
Prj_PutParams (&Filter,
Projects->SelectedOrder,
@ -709,6 +720,52 @@ static void Prj_ShowFormToFilterByWarning (const struct Prj_Projects *Projects)
Set_EndOneSettingSelector ();
}
/*****************************************************************************/
/********** Show form to select projects depending on review status **********/
/*****************************************************************************/
static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects)
{
extern const char *Txt_PROJECT_REVIEWED_PROJECTS[Prj_NUM_REVIEW_STATUS];
struct Prj_Filter Filter;
Prj_ReviewStatus_t ReviewStatus;
struct
{
const char *Icon;
Ico_Color_t Color;
} ReviewIcon[Prj_NUM_REVIEW_STATUS] =
{
[Prj_UNREVIEWED] = {"comment-slash.svg",Ico_BLACK},
[Prj_UNAPPROVED] = {"thumbs-down.svg" ,Ico_RED },
[Prj_APPROVED ] = {"thumbs-up.svg" ,Ico_GREEN},
};
Set_BeginOneSettingSelector ();
for (ReviewStatus = (Prj_ReviewStatus_t) 0;
ReviewStatus <= (Prj_ReviewStatus_t) (Prj_NUM_REVIEW_STATUS - 1);
ReviewStatus++)
{
Set_BeginPref ((Projects->Filter.Review & (1 << ReviewStatus)));
Frm_BeginForm (ActSeePrj);
Filter.Who = Projects->Filter.Who;
Filter.Assign = Projects->Filter.Assign;
Filter.Hidden = Projects->Filter.Hidden;
Filter.Faulti = Projects->Filter.Faulti;
Filter.Review = Projects->Filter.Review ^ (1 << ReviewStatus); // Toggle
Filter.DptCod = Projects->Filter.DptCod;
Prj_PutParams (&Filter,
Projects->SelectedOrder,
Projects->CurrentPage,
-1L);
Ico_PutSettingIconLink (ReviewIcon[ReviewStatus].Icon,
ReviewIcon[ReviewStatus].Color,
Txt_PROJECT_REVIEWED_PROJECTS[ReviewStatus]);
Frm_EndForm ();
Set_EndPref ();
}
Set_EndOneSettingSelector ();
}
/*****************************************************************************/
/*************** Show form to filter projects by department ******************/
/*****************************************************************************/
@ -726,6 +783,7 @@ static void Prj_ShowFormToFilterByDpt (const struct Prj_Projects *Projects)
Filter.Assign = Projects->Filter.Assign;
Filter.Hidden = Projects->Filter.Hidden;
Filter.Faulti = Projects->Filter.Faulti;
Filter.Review = Projects->Filter.Review;
Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here
Prj_PutParams (&Filter,
Projects->SelectedOrder,
@ -787,6 +845,11 @@ void Prj_PutParams (struct Prj_Filter *Filter,
(unsigned) Prj_FILTER_FAULTLESS_DEFAULT))
Prj_PutHiddenParamFaulti (Filter->Faulti);
if (Filter->Review != ((unsigned) Prj_FILTER_UNREVIEWED_DEFAULT |
(unsigned) Prj_FILTER_UNAPPROVED_DEFAULT |
(unsigned) Prj_FILTER_APPROVED_DEFAULT))
Prj_PutHiddenParamReview (Filter->Review);
if (Filter->DptCod != Prj_FILTER_DPT_DEFAULT)
Prj_PutHiddenParamDptCod (Filter->DptCod);
@ -830,6 +893,11 @@ static void Prj_PutHiddenParamFaulti (unsigned Faulti)
Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_FAULTIN_NAME,Faulti);
}
static void Prj_PutHiddenParamReview (unsigned Review)
{
Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_REVIEW_NAME,Review);
}
static void Prj_PutHiddenParamDptCod (long DptCod)
{
Par_PutHiddenParamUnsigned (NULL,Dpt_PARAM_DPT_COD_NAME,DptCod);
@ -882,6 +950,19 @@ static unsigned Prj_GetHiddenParamFaulti (void)
(unsigned) Prj_FILTER_FAULTLESS_DEFAULT);
}
static unsigned Prj_GetHiddenParamReview (void)
{
return (unsigned)
Par_GetParToUnsignedLong (Prj_PARAM_REVIEW_NAME,
0,
(1 << Prj_UNREVIEWED) |
(1 << Prj_UNAPPROVED) |
(1 << Prj_APPROVED),
(unsigned) Prj_FILTER_UNREVIEWED_DEFAULT |
(unsigned) Prj_FILTER_UNAPPROVED_DEFAULT |
(unsigned) Prj_FILTER_APPROVED_DEFAULT);
}
static long Prj_GetHiddenParamDptCod (void)
{
return Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
@ -898,6 +979,7 @@ void Prj_GetParams (struct Prj_Projects *Projects)
Prj_GetHiddenParamPreNon (Projects);
Projects->Filter.Hidden = Prj_GetHiddenParamHidVis ();
Projects->Filter.Faulti = Prj_GetHiddenParamFaulti ();
Projects->Filter.Review = Prj_GetHiddenParamReview ();
Projects->Filter.DptCod = Prj_GetHiddenParamDptCod ();
/***** Get order and page *****/
@ -2833,7 +2915,8 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
if (Projects->Filter.Assign && // Any selector is on
Projects->Filter.Hidden && // Any selector is on
Projects->Filter.Faulti) // Any selector is on
Projects->Filter.Faulti && // Any selector is on
Projects->Filter.Review) // Any selector is on
{
/****** Get users selected *****/
if (Projects->Filter.Who == Usr_WHO_SELECTED)

View File

@ -83,6 +83,18 @@ typedef enum
#define Prj_FILTER_FAULTY_DEFAULT (1 << Prj_FAULTY) // on
#define Prj_FILTER_FAULTLESS_DEFAULT (1 << Prj_FAULTLESS) // on
/* Review status project */
#define Prj_NUM_REVIEW_STATUS 3
typedef enum
{
Prj_UNREVIEWED = 0,
Prj_UNAPPROVED = 1,
Prj_APPROVED = 2,
} Prj_ReviewStatus_t;
#define Prj_FILTER_UNREVIEWED_DEFAULT (1 << Prj_UNREVIEWED) // on
#define Prj_FILTER_UNAPPROVED_DEFAULT (1 << Prj_UNAPPROVED) // on
#define Prj_FILTER_APPROVED_DEFAULT (1 << Prj_APPROVED) // on
/* Project department */
#define Prj_FILTER_DPT_DEFAULT -1L // Any department
@ -93,6 +105,7 @@ struct Prj_Filter
unsigned Assign; // Show assigned / non assigned projects
unsigned Hidden; // Show hidden / visible projects
unsigned Faulti; // Show faulty / faultless projects
unsigned Review; // Show projects depending on review status
long DptCod; // Show projects of this department
};

View File

@ -279,6 +279,39 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
break;
}
/* Review status subquery */
switch (Projects->Filter.Review)
{
case (1 << Prj_UNREVIEWED): // Unreviewed projects
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='unreviewed'") < 0)
Err_NotEnoughMemoryExit ();
break;
case (1 << Prj_UNAPPROVED): // Unapproved projects
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='unapproved'") < 0)
Err_NotEnoughMemoryExit ();
break;
case (1 << Prj_APPROVED): // Approved projects
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='approved'") < 0)
Err_NotEnoughMemoryExit ();
break;
case (1 << Prj_UNREVIEWED | 1 << Prj_UNAPPROVED): // Unreviewed and unapproved projects
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus IN ('unreviewed','unapproved')") < 0)
Err_NotEnoughMemoryExit ();
break;
case (1 << Prj_UNREVIEWED | 1 << Prj_APPROVED): // Unreviewed and approved projects
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus IN ('unreviewed','approved')") < 0)
Err_NotEnoughMemoryExit ();
break;
case (1 << Prj_UNAPPROVED | 1 << Prj_APPROVED): // Unapproved and approved projects
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus IN ('unapproved','approved')") < 0)
Err_NotEnoughMemoryExit ();
break;
default: // All projects
if (asprintf (&AssignSubQuery,"%s","") < 0)
Err_NotEnoughMemoryExit ();
break;
}
/* Department subquery */
if (Projects->Filter.DptCod >= 0)
{

View File

@ -32921,7 +32921,6 @@ const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
"Project proposed in previous calls, without modifications" // Çeviri lazim!
#endif
};
const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS] =
{
[Prj_FAULTY] =
@ -32944,7 +32943,7 @@ const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS] =
#elif L==9 // pt
"Projetos defeituosos"
#elif L==10 // tr
"Faulty projects" // Çeviri lazim!
"Hatal&inodot; projeler"
#endif
,
[Prj_FAULTLESS] =
@ -32967,7 +32966,79 @@ const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS] =
#elif L==9 // pt
"Projetos sem falhas"
#elif L==10 // tr
"Faultless projects" // Çeviri lazim!
"Kusursuz projeler"
#endif
};
const char *Txt_PROJECT_REVIEWED_PROJECTS[Prj_NUM_REVIEW_STATUS] =
{
[Prj_UNREVIEWED] =
#if L==1 // ca
"Projectes sense revisar"
#elif L==2 // de
"Ungepr&uuml;fte Projekte"
#elif L==3 // en
"Unreviewed projects"
#elif L==4 // es
"Proyectos sin revisar"
#elif L==5 // fr
"Projets non revus"
#elif L==6 // gn
"Proyectos sin revisar" // Okoteve traducción
#elif L==7 // it
"Progetti non recensiti"
#elif L==8 // pl
"Niesprawdzone projekty"
#elif L==9 // pt
"Projetos n&atilde;o revisados"
#elif L==10 // tr
"&Idot;ncelenmemi&scedil; projeler"
#endif
,
[Prj_UNAPPROVED] =
#if L==1 // ca
"Projectes sense aprovar"
#elif L==2 // de
"Nicht genehmigte Projekte"
#elif L==3 // en
"Unapproved projects"
#elif L==4 // es
"Proyectos sin aprobar"
#elif L==5 // fr
"Projets non approuv&eacute;s"
#elif L==6 // gn
"Proyectos sin aprobar" // Okoteve traducción
#elif L==7 // it
"Progetti non approvati"
#elif L==8 // pl
"Niezatwierdzone projekty"
#elif L==9 // pt
"Projetos n&atilde;o aprovados"
#elif L==10 // tr
"Onaylanmam&inodot;&scedil; projeler"
#endif
,
[Prj_APPROVED] =
#if L==1 // ca
"Projectes aprovats"
#elif L==2 // de
"Genehmigte Projekte"
#elif L==3 // en
"Approved projects"
#elif L==4 // es
"Proyectos aprobados"
#elif L==5 // fr
"Projets approuv&eacute;s"
#elif L==6 // gn
"Proyectos aprobados" // Okoteve traducción
#elif L==7 // it
"Progetti approvati"
#elif L==8 // pl
"Zatwierdzone projekty"
#elif L==9 // pt
"Projetos aprovados"
#elif L==10 // tr
"Onaylanm&inodot;&scedil; projeler"
#endif
};