mirror of https://github.com/acanas/swad-core.git
Version 22.43: Oct 11, 2022 Review of projects (not finished).
This commit is contained in:
parent
7202f590ed
commit
6e3cea9ba1
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 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="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z"/></svg>
|
After Width: | Height: | Size: 687 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 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="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z"/></svg>
|
After Width: | Height: | Size: 683 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 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="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z"/></svg>
|
After Width: | Height: | Size: 899 B |
|
@ -606,19 +606,23 @@ 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.42 (2022-10-11)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.43 (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)
|
||||
Version 22.43: Oct 11, 2022 Review of projects (not finished). (332930 lines)
|
||||
Version 22.42: Oct 11, 2022 Review of projects (not finished). (332738 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/
|
||||
// sudo cp icon/comment-slash.svg /var/www/html/swad/icon/
|
||||
sudo cp icon/file-circle-check.svg /var/www/html/swad/icon/
|
||||
sudo cp icon/file-circle-exclamation.svg /var/www/html/swad/icon/
|
||||
sudo cp icon/file-circle-question.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)
|
||||
|
|
114
swad_project.c
114
swad_project.c
|
@ -91,12 +91,24 @@ static const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) /
|
|||
sizeof (Prj_RolesToShow[0]);
|
||||
|
||||
/***** Assigned/non-assigned project *****/
|
||||
static const char *AssignedNonassigImage[Prj_NUM_ASSIGNED_NONASSIG] =
|
||||
static const char *AssignedNonassigIcon[Prj_NUM_ASSIGNED_NONASSIG] =
|
||||
{
|
||||
[Prj_ASSIGNED] = "user.svg",
|
||||
[Prj_NONASSIG] = "user-slash.svg",
|
||||
};
|
||||
|
||||
/***** Review status *****/
|
||||
static struct
|
||||
{
|
||||
const char *Icon;
|
||||
Ico_Color_t Color;
|
||||
} ReviewIcon[Prj_NUM_REVIEW_STATUS] =
|
||||
{
|
||||
[Prj_UNREVIEWED] = {"file-circle-question.svg" ,Ico_BLACK},
|
||||
[Prj_UNAPPROVED] = {"file-circle-exclamation.svg",Ico_RED },
|
||||
[Prj_APPROVED ] = {"file-circle-check.svg" ,Ico_GREEN},
|
||||
};
|
||||
|
||||
/***** Locked/unlocked project edition *****/
|
||||
static const struct
|
||||
{
|
||||
|
@ -622,7 +634,7 @@ static void Prj_ShowFormToFilterByAssign (const struct Prj_Projects *Projects)
|
|||
Projects->SelectedOrder,
|
||||
Projects->CurrentPage,
|
||||
-1L);
|
||||
Ico_PutSettingIconLink (AssignedNonassigImage[Assign],Ico_BLACK,
|
||||
Ico_PutSettingIconLink (AssignedNonassigIcon[Assign],Ico_BLACK,
|
||||
Txt_PROJECT_ASSIGNED_NONASSIGNED_PLURAL[Assign]);
|
||||
Frm_EndForm ();
|
||||
Set_EndPref ();
|
||||
|
@ -726,19 +738,9 @@ static void Prj_ShowFormToFilterByWarning (const struct Prj_Projects *Projects)
|
|||
|
||||
static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects)
|
||||
{
|
||||
extern const char *Txt_PROJECT_REVIEWED_PROJECTS[Prj_NUM_REVIEW_STATUS];
|
||||
extern const char *Txt_PROJECT_REVIEW_PLURAL[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;
|
||||
|
@ -759,7 +761,7 @@ static void Prj_ShowFormToFilterByReview (const struct Prj_Projects *Projects)
|
|||
-1L);
|
||||
Ico_PutSettingIconLink (ReviewIcon[ReviewStatus].Icon,
|
||||
ReviewIcon[ReviewStatus].Color,
|
||||
Txt_PROJECT_REVIEWED_PROJECTS[ReviewStatus]);
|
||||
Txt_PROJECT_REVIEW_PLURAL[ReviewStatus]);
|
||||
Frm_EndForm ();
|
||||
Set_EndPref ();
|
||||
}
|
||||
|
@ -1352,6 +1354,8 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
|||
Prj_ProjectView_t ProjectView)
|
||||
{
|
||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||
extern const char *Txt_Review;
|
||||
extern const char *Txt_PROJECT_REVIEW_SINGUL[Prj_NUM_REVIEW_STATUS];
|
||||
extern const char *Txt_Assigned_QUESTION;
|
||||
extern const char *Txt_Yes;
|
||||
extern const char *Txt_No;
|
||||
|
@ -1395,7 +1399,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
|||
switch (ProjectView)
|
||||
{
|
||||
case Prj_LIST_PROJECTS:
|
||||
HTM_TD_Begin ("rowspan=\"3\" class=\"RT BIG_INDEX_%s %s\"",
|
||||
HTM_TD_Begin ("rowspan=\"4\" class=\"RT BIG_INDEX_%s %s\"",
|
||||
The_GetSuffix (),
|
||||
The_GetColorRows ());
|
||||
HTM_Unsigned (NumIndex);
|
||||
|
@ -1414,7 +1418,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
|||
switch (ProjectView)
|
||||
{
|
||||
case Prj_LIST_PROJECTS:
|
||||
HTM_TD_Begin ("rowspan=\"3\" class=\"CONTEXT_COL %s\"",
|
||||
HTM_TD_Begin ("rowspan=\"4\" class=\"CONTEXT_COL %s\"",
|
||||
The_GetColorRows ());
|
||||
Prj_PutIconsToRemEditOnePrj (Projects,Anchor);
|
||||
HTM_TD_End ();
|
||||
|
@ -1505,8 +1509,51 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
|||
/* Department */
|
||||
Prj_ShowOneProjectDepartment (&Projects->Prj,ProjectView);
|
||||
|
||||
/***** Assigned? *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Review status *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
switch (ProjectView)
|
||||
{
|
||||
case Prj_LIST_PROJECTS:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s_%s %s\"",
|
||||
ClassLabel,The_GetSuffix (),The_GetColorRows ());
|
||||
break;
|
||||
default:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s_%s\"",
|
||||
ClassLabel,The_GetSuffix ());
|
||||
break;
|
||||
}
|
||||
HTM_TxtColon (Txt_Review);
|
||||
HTM_TD_End ();
|
||||
|
||||
switch (ProjectView)
|
||||
{
|
||||
case Prj_LIST_PROJECTS:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"LT %s_%s %s\"",
|
||||
ClassData,The_GetSuffix (),The_GetColorRows ());
|
||||
break;
|
||||
default:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"LT %s_%s\"",
|
||||
ClassData,The_GetSuffix ());
|
||||
break;
|
||||
}
|
||||
HTM_TxtF ("%s ",Txt_PROJECT_REVIEW_SINGUL[Projects->Prj.ReviewStatus]);
|
||||
Ico_PutIconOff (ReviewIcon[Projects->Prj.ReviewStatus].Icon,
|
||||
ReviewIcon[Projects->Prj.ReviewStatus].Color,
|
||||
Txt_PROJECT_REVIEW_SINGUL[Projects->Prj.ReviewStatus]);
|
||||
/*
|
||||
if (Faults.WrongAssigned)
|
||||
Prj_PutWarningIcon ();
|
||||
*/
|
||||
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Assigned? *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
switch (ProjectView)
|
||||
{
|
||||
|
@ -1535,7 +1582,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
|||
}
|
||||
HTM_TxtF ("%s ",Projects->Prj.Assigned == Prj_ASSIGNED ? Txt_Yes :
|
||||
Txt_No);
|
||||
Ico_PutIconOff (AssignedNonassigImage[Projects->Prj.Assigned],Ico_BLACK,
|
||||
Ico_PutIconOff (AssignedNonassigIcon[Projects->Prj.Assigned],Ico_BLACK,
|
||||
Txt_PROJECT_ASSIGNED_NONASSIGNED_SINGUL[Projects->Prj.Assigned]);
|
||||
|
||||
if (Faults.WrongAssigned)
|
||||
|
@ -1924,7 +1971,6 @@ static void Prj_ShowOneProjectDepartment (const struct Prj_Project *Prj,
|
|||
if (PutLink)
|
||||
HTM_A_End ();
|
||||
HTM_TD_End ();
|
||||
HTM_TR_End ();
|
||||
}
|
||||
|
||||
static void Prj_ShowTableAllProjectsDepartment (const struct Prj_Project *Prj)
|
||||
|
@ -2999,9 +3045,11 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
|
|||
void Prj_GetDataOfProjectByCod (struct Prj_Project *Prj)
|
||||
{
|
||||
extern const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES];
|
||||
extern const char *Prj_ReviewStatus_DB[Prj_NUM_REVIEW_STATUS];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
Prj_Proposal_t Proposal;
|
||||
Prj_ReviewStatus_t ReviewStatus;
|
||||
|
||||
if (Prj->PrjCod > 0)
|
||||
{
|
||||
|
@ -3057,6 +3105,20 @@ void Prj_GetDataOfProjectByCod (struct Prj_Project *Prj)
|
|||
Str_Copy (Prj->Knowledge ,row[12],Cns_MAX_BYTES_TEXT);
|
||||
Str_Copy (Prj->Materials ,row[13],Cns_MAX_BYTES_TEXT);
|
||||
Str_Copy (Prj->URL ,row[14],sizeof (Prj->URL ) - 1);
|
||||
|
||||
/* Get review status (row[15]), review time (row[16])
|
||||
and review text (row[17]) */
|
||||
Prj->ReviewStatus = Prj_REVIEW_STATUS_DEFAULT;
|
||||
for (ReviewStatus = (Prj_ReviewStatus_t) 0;
|
||||
ReviewStatus <= (Prj_ReviewStatus_t) (Prj_NUM_REVIEW_STATUS - 1);
|
||||
ReviewStatus++)
|
||||
if (!strcmp (Prj_ReviewStatus_DB[Proposal],row[15]))
|
||||
{
|
||||
Prj->ReviewStatus = ReviewStatus;
|
||||
break;
|
||||
}
|
||||
Prj->ReviewTime = Dat_GetUNIXTimeFromStr (row[16]);
|
||||
Str_Copy (Prj->ReviewTxt ,row[17],Cns_MAX_BYTES_TEXT);
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
|
@ -3092,6 +3154,10 @@ static void Prj_ResetProject (struct Prj_Project *Prj)
|
|||
Prj->Knowledge[0] = '\0';
|
||||
Prj->Materials[0] = '\0';
|
||||
Prj->URL[0] = '\0';
|
||||
|
||||
Prj->ReviewStatus = Prj_REVIEW_STATUS_DEFAULT;
|
||||
Prj->ReviewTime = (time_t) 0;
|
||||
Prj->ReviewTxt[0] = '\0';
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3620,6 +3686,9 @@ void Prj_AllocMemProject (struct Prj_Project *Prj)
|
|||
|
||||
if ((Prj->Materials = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
if ((Prj->ReviewTxt = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3643,6 +3712,11 @@ void Prj_FreeMemProject (struct Prj_Project *Prj)
|
|||
free (Prj->Materials);
|
||||
Prj->Materials = NULL;
|
||||
}
|
||||
if (Prj->ReviewTxt)
|
||||
{
|
||||
free (Prj->ReviewTxt);
|
||||
Prj->ReviewTxt = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -91,6 +91,7 @@ typedef enum
|
|||
Prj_UNAPPROVED = 1,
|
||||
Prj_APPROVED = 2,
|
||||
} Prj_ReviewStatus_t;
|
||||
#define Prj_REVIEW_STATUS_DEFAULT Prj_UNREVIEWED
|
||||
#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
|
||||
|
@ -163,6 +164,9 @@ struct Prj_Project
|
|||
char *Knowledge;
|
||||
char *Materials;
|
||||
char URL[Cns_MAX_BYTES_WWW + 1];
|
||||
Prj_ReviewStatus_t ReviewStatus;
|
||||
time_t ReviewTime;
|
||||
char *ReviewTxt;
|
||||
};
|
||||
|
||||
/***** Struct to store context/status of projects *****/
|
||||
|
|
|
@ -52,6 +52,14 @@ const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES] =
|
|||
[Prj_PROPOSAL_UNMODIFIED] = "unmodified",
|
||||
};
|
||||
|
||||
/***** Enum field in database for review status *****/
|
||||
const char *Prj_ReviewStatus_DB[Prj_NUM_REVIEW_STATUS] =
|
||||
{
|
||||
[Prj_UNREVIEWED] = "unreviewed",
|
||||
[Prj_UNAPPROVED] = "unapproved",
|
||||
[Prj_APPROVED ] = "approved",
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ Update configuration of projects for current course ************/
|
||||
/*****************************************************************************/
|
||||
|
@ -109,11 +117,13 @@ long Prj_DB_CreateProject (const struct Prj_Project *Prj)
|
|||
"INSERT INTO prj_projects"
|
||||
" (CrsCod,DptCod,Hidden,Assigned,NumStds,Proposal,"
|
||||
"CreatTime,ModifTime,"
|
||||
"Title,Description,Knowledge,Materials,URL)"
|
||||
"Title,Description,Knowledge,Materials,URL,"
|
||||
"ReviewStatus,ReviewTime,ReviewTxt)"
|
||||
" VALUES"
|
||||
" (%ld,%ld,'%c','%c',%u,'%s',"
|
||||
"FROM_UNIXTIME(%ld),FROM_UNIXTIME(%ld),"
|
||||
"'%s','%s','%s','%s','%s')",
|
||||
"'%s','%s','%s','%s','%s',"
|
||||
"'%s',FROM_UNIXTIME(%ld),'%s')",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
Prj->DptCod,
|
||||
Prj->Hidden == Prj_HIDDEN ? 'Y' :
|
||||
|
@ -128,7 +138,10 @@ long Prj_DB_CreateProject (const struct Prj_Project *Prj)
|
|||
Prj->Description,
|
||||
Prj->Knowledge,
|
||||
Prj->Materials,
|
||||
Prj->URL);
|
||||
Prj->URL,
|
||||
Prj_ReviewStatus_DB[Prj->ReviewStatus],
|
||||
Prj->ReviewTime,
|
||||
Prj->ReviewTxt);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -283,30 +296,42 @@ unsigned Prj_DB_GetListProjects (MYSQL_RES **mysql_res,
|
|||
switch (Projects->Filter.Review)
|
||||
{
|
||||
case (1 << Prj_UNREVIEWED): // Unreviewed projects
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='unreviewed'") < 0)
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='%s'",
|
||||
Prj_ReviewStatus_DB[Prj_UNREVIEWED]) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case (1 << Prj_UNAPPROVED): // Unapproved projects
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='unapproved'") < 0)
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='%s'",
|
||||
Prj_ReviewStatus_DB[Prj_UNAPPROVED]) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
break;
|
||||
case (1 << Prj_APPROVED): // Approved projects
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='approved'") < 0)
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus='%s'",
|
||||
Prj_ReviewStatus_DB[Prj_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)
|
||||
case (1 << Prj_UNREVIEWED |
|
||||
1 << Prj_UNAPPROVED): // Unreviewed and unapproved projects
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus IN ('%s','%s')",
|
||||
Prj_ReviewStatus_DB[Prj_UNREVIEWED],
|
||||
Prj_ReviewStatus_DB[Prj_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)
|
||||
case (1 << Prj_UNREVIEWED |
|
||||
1 << Prj_APPROVED): // Unreviewed and approved projects
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus IN ('%s','%s')",
|
||||
Prj_ReviewStatus_DB[Prj_UNREVIEWED],
|
||||
Prj_ReviewStatus_DB[Prj_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)
|
||||
case (1 << Prj_UNAPPROVED |
|
||||
1 << Prj_APPROVED): // Unapproved and approved projects
|
||||
if (asprintf (&AssignSubQuery," AND prj_projects.ReviewStatus IN ('%s','%s')",
|
||||
Prj_ReviewStatus_DB[Prj_UNAPPROVED],
|
||||
Prj_ReviewStatus_DB[Prj_APPROVED ]) < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
break;
|
||||
default: // All projects
|
||||
default: // All projects
|
||||
if (asprintf (&AssignSubQuery,"%s","") < 0)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
break;
|
||||
|
@ -525,7 +550,10 @@ unsigned Prj_DB_GetDataOfProjectByCod (MYSQL_RES **mysql_res,long PrjCod)
|
|||
"Description," // row[11]
|
||||
"Knowledge," // row[12]
|
||||
"Materials," // row[13]
|
||||
"URL" // row[14]
|
||||
"URL," // row[14]
|
||||
"ReviewStatus," // row[15]
|
||||
"UNIX_TIMESTAMP(ReviewTime)," // row[16]
|
||||
"ReviewTxt" // row[17]
|
||||
" FROM prj_projects"
|
||||
" WHERE PrjCod=%ld"
|
||||
" AND CrsCod=%ld", // Extra check
|
||||
|
|
99
swad_text.c
99
swad_text.c
|
@ -2469,7 +2469,7 @@ const char *Txt_Assigned_QUESTION =
|
|||
#elif L==9 // pt
|
||||
"Atribuído?";
|
||||
#elif L==10 // tr
|
||||
"Assigned?"; // Çeviri lazim!
|
||||
"Atandı mı?";
|
||||
#endif
|
||||
|
||||
const char *Txt_Assignment =
|
||||
|
@ -32970,7 +32970,79 @@ const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS] =
|
|||
#endif
|
||||
};
|
||||
|
||||
const char *Txt_PROJECT_REVIEWED_PROJECTS[Prj_NUM_REVIEW_STATUS] =
|
||||
const char *Txt_PROJECT_REVIEW_PLURAL[Prj_NUM_REVIEW_STATUS] =
|
||||
{
|
||||
[Prj_UNREVIEWED] =
|
||||
#if L==1 // ca
|
||||
"Projectes sense revisar"
|
||||
#elif L==2 // de
|
||||
"Ungeprü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ão revisados"
|
||||
#elif L==10 // tr
|
||||
"İncelenmemiş 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é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ão aprovados"
|
||||
#elif L==10 // tr
|
||||
"Onaylanmamış 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é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ış projeler"
|
||||
#endif
|
||||
};
|
||||
|
||||
const char *Txt_PROJECT_REVIEW_SINGUL[Prj_NUM_REVIEW_STATUS] =
|
||||
{
|
||||
[Prj_UNREVIEWED] =
|
||||
#if L==1 // ca
|
||||
|
@ -36252,6 +36324,29 @@ const char *Txt_Retype_new_password =
|
|||
"Yeni şifrenizi tekrar yazınız";
|
||||
#endif
|
||||
|
||||
const char *Txt_Review =
|
||||
#if L==1 // ca
|
||||
"Revisió";
|
||||
#elif L==2 // de
|
||||
"Überprüfungs";
|
||||
#elif L==3 // en
|
||||
"Review";
|
||||
#elif L==4 // es
|
||||
"Revisión";
|
||||
#elif L==5 // fr
|
||||
"Examen";
|
||||
#elif L==6 // gn
|
||||
"Revisión"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Revisione";
|
||||
#elif L==8 // pl
|
||||
"Recenzja";
|
||||
#elif L==9 // pt
|
||||
"Revisão";
|
||||
#elif L==10 // tr
|
||||
"Gözden geçir";
|
||||
#endif
|
||||
|
||||
const char *Txt_Role =
|
||||
#if L==1 // ca
|
||||
"Rol";
|
||||
|
|
Loading…
Reference in New Issue