Version19.42.8

This commit is contained in:
Antonio Cañas Vargas 2019-10-25 01:15:11 +02:00
parent 86bb09193f
commit c518faaf13
6 changed files with 123 additions and 106 deletions

View File

@ -487,14 +487,15 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.42.7 (2019-10-24)"
#define Log_PLATFORM_VERSION "SWAD 19.42.8 (2019-10-25)"
#define CSS_FILE "swad19.42.6.css"
#define JS_FILE "swad19.39.js"
/*
// TODO: Perico: poner un candado de bloqueo de creación/edición de proyectos (por ejemplo en asignaturas obsoletas)
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
Version 19.42.7: Oct 24, 2019 Code refactoring in media. (246037 lines)
Version 19.42.8: Oct 25, 2019 New warning on projects non-assigned but with registered students. (246052 lines)
Version 19.42.7: Oct 25, 2019 Code refactoring in media. (246037 lines)
Version 19.42.6: Oct 24, 2019 Code refactoring in CSS.
Changes icon to upload file in timeline.
Code refactoring in media. (246034 lines)

View File

@ -3298,7 +3298,7 @@ static void Brw_FormToChangeCrsGrpZone (void)
"<input type=\"radio\" name=\"GrpCod\" value=\"%ld\"",
(IsGroupZone &&
GrpDat.GrpCod == Gbl.Crs.Grps.GrpCod) ? "BROWSER_TITLE" :
"BROWSER_TITLE_LIGHT",
"BROWSER_TITLE_LIGHT",
Cfg_URL_ICON_PUBLIC,
NumGrp < LstMyGrps.NumGrps - 1 ? "submid" :
"subend",

View File

@ -304,10 +304,12 @@ void Gbl_InitializeGlobals (void)
/* Projects */
Gbl.Prjs.Filter.My_All = Prj_FILTER_WHOSE_PROJECTS_DEFAULT;
Gbl.Prjs.Filter.PreNon = Prj_FILTER_PREASSIGNED_DEFAULT |
Prj_FILTER_NONPREASSIG_DEFAULT;
Gbl.Prjs.Filter.HidVis = Prj_FILTER_HIDDEN_DEFAULT |
Gbl.Prjs.Filter.Assign = Prj_FILTER_ASSIGNED_DEFAULT |
Prj_FILTER_NONASSIG_DEFAULT;
Gbl.Prjs.Filter.Hidden = Prj_FILTER_HIDDEN_DEFAULT |
Prj_FILTER_VISIBL_DEFAULT;
Gbl.Prjs.Filter.Faulti = Prj_FILTER_FAULTY_DEFAULT |
Prj_FILTER_FAULTLESS_DEFAULT;
Gbl.Prjs.Filter.DptCod = Prj_FILTER_DPT_DEFAULT;
Gbl.Prjs.LstIsRead = false; // List is not read
Gbl.Prjs.Num = 0;

View File

@ -91,7 +91,7 @@ static const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES] =
};
/***** Preassigned/non-preassigned project *****/
static const char *PreassignedNonpreassigImage[Prj_NUM_PREASSIGNED_NONPREASSIG] =
static const char *PreassignedNonpreassigImage[Prj_NUM_ASSIGNED_NONASSIG] =
{
"user.svg", // Prj_PREASSIGNED
"user-slash.svg", // Prj_NONPREASSIG
@ -118,6 +118,7 @@ struct Prj_Faults
bool WrongTitle;
bool WrongDescription;
bool WrongNumStds;
bool WrongAssigned;
};
/*****************************************************************************/
@ -134,8 +135,8 @@ static void Prj_ShowFormToFilterByDpt (void);
static void Prj_PutCurrentParams (void);
static void Prj_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All);
static void Prj_PutHiddenParamPreNon (unsigned PreNon);
static void Prj_PutHiddenParamHidVis (unsigned HidVis);
static void Prj_PutHiddenParamAssign (unsigned Assign);
static void Prj_PutHiddenParamHidden (unsigned Hidden);
static void Prj_PutHiddenParamFaulti (unsigned Faulti);
static void Prj_PutHiddenParamDptCod (long DptCod);
static void Prj_GetHiddenParamMy_All (void);
@ -423,8 +424,8 @@ static void Prj_ShowFormToFilterByMy_All (void)
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.My_All = My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
@ -445,22 +446,22 @@ static void Prj_ShowFormToFilterByMy_All (void)
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
{
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NONPREASSIG];
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_ASSIGNED_NONASSIG];
struct Prj_Filter Filter;
Prj_PreassignedNonpreassig_t PreNon;
Prj_AssignedNonassig_t PreNon;
Set_StartOneSettingSelector ();
for (PreNon = (Prj_PreassignedNonpreassig_t) 0;
PreNon <= (Prj_PreassignedNonpreassig_t) (Prj_NUM_PREASSIGNED_NONPREASSIG - 1);
for (PreNon = (Prj_AssignedNonassig_t) 0;
PreNon <= (Prj_AssignedNonassig_t) (Prj_NUM_ASSIGNED_NONASSIG - 1);
PreNon++)
{
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Prjs.Filter.PreNon & (1 << PreNon)) ? "PREF_ON" :
(Gbl.Prjs.Filter.Assign & (1 << PreNon)) ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon ^ (1 << PreNon); // Toggle
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
Filter.Assign = Gbl.Prjs.Filter.Assign ^ (1 << PreNon); // Toggle
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
@ -496,12 +497,12 @@ static void Prj_ShowFormToFilterByHidden (void)
HidVis++)
{
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Prjs.Filter.HidVis & (1 << HidVis)) ? "PREF_ON" :
(Gbl.Prjs.Filter.Hidden & (1 << HidVis)) ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
Filter.HidVis = Gbl.Prjs.Filter.HidVis ^ (1 << HidVis); // Toggle
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden ^ (1 << HidVis); // Toggle
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
@ -541,8 +542,8 @@ static void Prj_ShowFormToFilterByWarning (void)
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti ^ (1 << Faultiness); // Toggle
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
@ -570,8 +571,8 @@ static void Prj_ShowFormToFilterByDpt (void)
HTM_DIV_Begin (NULL);
Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here
Prj_PutParams (&Filter,
@ -617,13 +618,13 @@ void Prj_PutParams (struct Prj_Filter *Filter,
if (Filter->My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT)
Prj_PutHiddenParamMy_All (Filter->My_All);
if (Filter->PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
(unsigned) Prj_FILTER_NONPREASSIG_DEFAULT))
Prj_PutHiddenParamPreNon (Filter->PreNon);
if (Filter->Assign != ((unsigned) Prj_FILTER_ASSIGNED_DEFAULT |
(unsigned) Prj_FILTER_NONASSIG_DEFAULT))
Prj_PutHiddenParamAssign (Filter->Assign);
if (Filter->HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT |
if (Filter->Hidden != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT |
(unsigned) Prj_FILTER_VISIBL_DEFAULT))
Prj_PutHiddenParamHidVis (Filter->HidVis);
Prj_PutHiddenParamHidden (Filter->Hidden);
if (Filter->Faulti != ((unsigned) Prj_FILTER_FAULTY_DEFAULT |
(unsigned) Prj_FILTER_FAULTLESS_DEFAULT))
@ -658,14 +659,14 @@ static void Prj_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All)
Par_PutHiddenParamUnsigned (Prj_PARAM_MY__ALL_NAME,(unsigned) My_All);
}
static void Prj_PutHiddenParamPreNon (unsigned PreNon)
static void Prj_PutHiddenParamAssign (unsigned Assign)
{
Par_PutHiddenParamUnsigned (Prj_PARAM_PRE_NON_NAME,PreNon);
Par_PutHiddenParamUnsigned (Prj_PARAM_PRE_NON_NAME,Assign);
}
static void Prj_PutHiddenParamHidVis (unsigned HidVis)
static void Prj_PutHiddenParamHidden (unsigned Hidden)
{
Par_PutHiddenParamUnsigned (Prj_PARAM_HID_VIS_NAME,HidVis);
Par_PutHiddenParamUnsigned (Prj_PARAM_HID_VIS_NAME,Hidden);
}
static void Prj_PutHiddenParamFaulti (unsigned Faulti)
@ -692,12 +693,12 @@ static void Prj_GetHiddenParamMy_All (void)
static void Prj_GetHiddenParamPreNon (void)
{
Gbl.Prjs.Filter.PreNon = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_PRE_NON_NAME,
Gbl.Prjs.Filter.Assign = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_PRE_NON_NAME,
0,
(1 << Prj_PREASSIGNED) |
(1 << Prj_NONPREASSIG),
(unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
(unsigned) Prj_FILTER_NONPREASSIG_DEFAULT);
(1 << Prj_ASSIGNED) |
(1 << Prj_NONASSIG),
(unsigned) Prj_FILTER_ASSIGNED_DEFAULT |
(unsigned) Prj_FILTER_NONASSIG_DEFAULT);
}
static void Prj_GetHiddenParamHidVis (void)
@ -705,12 +706,12 @@ static void Prj_GetHiddenParamHidVis (void)
switch (Gbl.Usrs.Me.Role.Logged)
{
case Rol_STD: // Students can view only visible projects
Gbl.Prjs.Filter.HidVis = (1 << Prj_VISIBL); // Only visible projects
Gbl.Prjs.Filter.Hidden = (1 << Prj_VISIBL); // Only visible projects
break;
case Rol_NET:
case Rol_TCH:
case Rol_SYS_ADM:
Gbl.Prjs.Filter.HidVis = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_HID_VIS_NAME,
Gbl.Prjs.Filter.Hidden = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_HID_VIS_NAME,
0,
(1 << Prj_HIDDEN) |
(1 << Prj_VISIBL),
@ -827,7 +828,7 @@ static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView)
static void Prj_ShowTableAllProjectsHead (void)
{
extern const char *Txt_PROJECT_ORDER[Prj_NUM_ORDERS];
extern const char *Txt_Preassigned_QUESTION;
extern const char *Txt_Assigned_QUESTION;
extern const char *Txt_Number_of_students;
extern const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT];
extern const char *Txt_Proposal;
@ -844,7 +845,7 @@ static void Prj_ShowTableAllProjectsHead (void)
Order <= (Prj_Order_t) (Prj_NUM_ORDERS - 1);
Order++)
HTM_TH (1,1,"LT DAT_N",Txt_PROJECT_ORDER[Order]);
HTM_TH (1,1,"LT DAT_N",Txt_Preassigned_QUESTION);
HTM_TH (1,1,"LT DAT_N",Txt_Assigned_QUESTION);
HTM_TH (1,1,"LT DAT_N",Txt_Number_of_students);
for (NumRoleToShow = 0;
NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
@ -1032,10 +1033,10 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
{
extern const char *Txt_Today;
extern const char *Txt_Project_files;
extern const char *Txt_Preassigned_QUESTION;
extern const char *Txt_Assigned_QUESTION;
extern const char *Txt_Yes;
extern const char *Txt_No;
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj_NUM_PREASSIGNED_NONPREASSIG];
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj_NUM_ASSIGNED_NONASSIG];
extern const char *Txt_Number_of_students;
extern const char *Txt_See_more;
extern const char *Txt_See_less;
@ -1198,7 +1199,7 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
ClassLabel);
break;
}
fprintf (Gbl.F.Out,"%s:",Txt_Preassigned_QUESTION);
fprintf (Gbl.F.Out,"%s:",Txt_Assigned_QUESTION);
HTM_TD_End ();
switch (ProjectView)
@ -1212,10 +1213,14 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
ClassData);
break;
}
fprintf (Gbl.F.Out,"%s&nbsp;",(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
fprintf (Gbl.F.Out,"%s&nbsp;",(Prj->Assigned == Prj_ASSIGNED) ? Txt_Yes :
Txt_No);
Ico_PutIconOff (PreassignedNonpreassigImage[Prj->Preassigned],
Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Preassigned]);
Ico_PutIconOff (PreassignedNonpreassigImage[Prj->Assigned],
Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj->Assigned]);
if (Faults.WrongAssigned)
Prj_PutWarningIcon ();
HTM_TD_End ();
HTM_TR_End ();
@ -1371,7 +1376,8 @@ static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
/***** Reset faults *****/
Faults->WrongTitle =
Faults->WrongDescription =
Faults->WrongNumStds = false;
Faults->WrongNumStds =
Faults->WrongAssigned = false;
/***** Get some project date and check faults ****/
if (PrjCod > 0)
@ -1413,11 +1419,18 @@ static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
/* 3. Check number of students */
if (NumProposedStds == 0)
// The number of proposed students should be > 0
Faults->WrongNumStds = true;
else if (IsPreassigned)
else
{
NumStdsRegisteredInPrj = Prj_GetNumUsrsInPrj (PrjCod,Prj_ROLE_STD);
Faults->WrongNumStds = (NumProposedStds != NumStdsRegisteredInPrj);
if (IsPreassigned) // Assigned
// In an assigned project the number of proposed students...
// ...should match the number of students registered in it
Faults->WrongNumStds = (NumProposedStds != NumStdsRegisteredInPrj);
else // Not assigned
// A non assigned project should not have students registered in it
Faults->WrongAssigned = (NumStdsRegisteredInPrj != 0);
}
}
@ -1427,7 +1440,8 @@ static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
return Faults->WrongTitle ||
Faults->WrongDescription ||
Faults->WrongNumStds;
Faults->WrongNumStds ||
Faults->WrongAssigned;
}
/*****************************************************************************/
@ -1437,7 +1451,7 @@ static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
static void Prj_PutWarningIcon (void)
{
fprintf (Gbl.F.Out,"<img src=\"%s/%s\" alt=\"\" class=\"ICO16x16\" />",
Cfg_URL_ICON_PUBLIC,"exclamation-triangle.svg");
Cfg_URL_ICON_PUBLIC,"warning64x64.gif");
}
/*****************************************************************************/
@ -1521,7 +1535,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
/***** Preassigned? *****/
HTM_TD_Begin ("class=\"LT %s COLOR%u\"",ClassData,Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"%s",(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
fprintf (Gbl.F.Out,"%s",(Prj->Assigned == Prj_ASSIGNED) ? Txt_Yes :
Txt_No);
HTM_TD_End ();
@ -2669,18 +2683,18 @@ void Prj_GetListProjects (void)
Prj_FreeListProjects ();
/***** Get list of projects from database *****/
if (Gbl.Prjs.Filter.PreNon && // Any selector is on
Gbl.Prjs.Filter.HidVis && // Any selector is on
if (Gbl.Prjs.Filter.Assign && // Any selector is on
Gbl.Prjs.Filter.Hidden && // Any selector is on
Gbl.Prjs.Filter.Faulti) // Any selector is on
{
/* Preassigned subquery */
switch (Gbl.Prjs.Filter.PreNon)
switch (Gbl.Prjs.Filter.Assign)
{
case (1 << Prj_PREASSIGNED): // Preassigned projects
case (1 << Prj_ASSIGNED): // Preassigned projects
if (asprintf (&PreNonSubQuery," AND projects.Preassigned='Y'") < 0)
Lay_NotEnoughMemoryExit ();
break;
case (1 << Prj_NONPREASSIG): // Non-preassigned projects
case (1 << Prj_NONASSIG): // Non-preassigned projects
if (asprintf (&PreNonSubQuery," AND projects.Preassigned='N'") < 0)
Lay_NotEnoughMemoryExit ();
break;
@ -2700,7 +2714,7 @@ void Prj_GetListProjects (void)
case Rol_NET:
case Rol_TCH:
case Rol_SYS_ADM:
switch (Gbl.Prjs.Filter.HidVis)
switch (Gbl.Prjs.Filter.Hidden)
{
case (1 << Prj_HIDDEN): // Hidden projects
if (asprintf (&HidVisSubQuery," AND projects.Hidden='Y'") < 0)
@ -2940,8 +2954,8 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj)
Prj_VISIBL;
/* Get if project is preassigned or not (row[5]) */
Prj->Preassigned = (row[5][0] == 'Y') ? Prj_PREASSIGNED :
Prj_NONPREASSIG;
Prj->Assigned = (row[5][0] == 'Y') ? Prj_ASSIGNED :
Prj_NONASSIG;
/* Get if project is preassigned or not (row[6]) */
LongNum = Str_ConvertStrCodToLongCod (row[6]);
@ -3008,7 +3022,7 @@ static void Prj_ResetProject (struct Project *Prj)
Prj->CrsCod = -1L;
Prj->Locked = Prj_UNLOCKED;
Prj->Hidden = Prj_NEW_PRJ_HIDDEN_VISIBL_DEFAULT;
Prj->Preassigned = Prj_NEW_PRJ_PREASSIGNED_NONPREASSIG_DEFAULT;
Prj->Assigned = Prj_NEW_PRJ_ASSIGNED_NONASSIG_DEFAULT;
Prj->NumStds = 1;
Prj->Proposal = Prj_PROPOSAL_DEFAULT;
Prj->CreatTime =
@ -3525,7 +3539,7 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
extern const char *Txt_Title;
extern const char *Txt_Department;
extern const char *Txt_Another_department;
extern const char *Txt_Preassigned_QUESTION;
extern const char *Txt_Assigned_QUESTION;
extern const char *Txt_Number_of_students;
extern const char *Txt_Proposal;
extern const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES];
@ -3622,19 +3636,19 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"%s RM\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
fprintf (Gbl.F.Out,"%s:",Txt_Preassigned_QUESTION);
fprintf (Gbl.F.Out,"%s:",Txt_Assigned_QUESTION);
HTM_TD_End ();
HTM_TD_Begin ("class=\"LM\"");
fprintf (Gbl.F.Out,"<select name=\"Preassigned\">");
fprintf (Gbl.F.Out,"<option value=\"Y\"");
if (Prj->Preassigned == Prj_PREASSIGNED)
if (Prj->Assigned == Prj_ASSIGNED)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_Yes);
fprintf (Gbl.F.Out,"<option value=\"N\"");
if (Prj->Preassigned == Prj_NONPREASSIG)
if (Prj->Assigned == Prj_NONASSIG)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_No);
@ -3839,8 +3853,8 @@ void Prj_RecFormProject (void)
Prj.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
/* Get whether the project is preassigned */
Prj.Preassigned = (Par_GetParToBool ("Preassigned")) ? Prj_PREASSIGNED :
Prj_NONPREASSIG;
Prj.Assigned = (Par_GetParToBool ("Preassigned")) ? Prj_ASSIGNED :
Prj_NONASSIG;
/* Get number of students */
Prj.NumStds = (unsigned)
@ -3930,7 +3944,7 @@ static void Prj_CreateProject (struct Project *Prj)
Prj->DptCod,
Prj->Hidden == Prj_HIDDEN ? 'Y' :
'N',
Prj->Preassigned == Prj_PREASSIGNED ? 'Y' :
Prj->Assigned == Prj_ASSIGNED ? 'Y' :
'N',
Prj->NumStds,
Prj_Proposal_DB[Prj->Proposal],
@ -3983,7 +3997,7 @@ static void Prj_UpdateProject (struct Project *Prj)
Prj->DptCod,
Prj->Hidden == Prj_HIDDEN ? 'Y' :
'N',
Prj->Preassigned == Prj_PREASSIGNED ? 'Y' :
Prj->Assigned == Prj_ASSIGNED ? 'Y' :
'N',
Prj->NumStds,
Prj_Proposal_DB[Prj->Proposal],

View File

@ -46,16 +46,16 @@ typedef enum
} Prj_WhoseProjects_t;
#define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Prj_MY__PROJECTS
/* Preassigned projects / non-preassigned projects */
#define Prj_NUM_PREASSIGNED_NONPREASSIG 2
/* Assigned projects / non-assigned projects */
#define Prj_NUM_ASSIGNED_NONASSIG 2
typedef enum
{
Prj_PREASSIGNED = 0,
Prj_NONPREASSIG = 1,
} Prj_PreassignedNonpreassig_t;
#define Prj_NEW_PRJ_PREASSIGNED_NONPREASSIG_DEFAULT Prj_NONPREASSIG
#define Prj_FILTER_PREASSIGNED_DEFAULT (1 << Prj_PREASSIGNED) // on
#define Prj_FILTER_NONPREASSIG_DEFAULT (1 << Prj_NONPREASSIG) // on
Prj_ASSIGNED = 0,
Prj_NONASSIG = 1,
} Prj_AssignedNonassig_t;
#define Prj_NEW_PRJ_ASSIGNED_NONASSIG_DEFAULT Prj_NONASSIG
#define Prj_FILTER_ASSIGNED_DEFAULT (1 << Prj_ASSIGNED) // on
#define Prj_FILTER_NONASSIG_DEFAULT (1 << Prj_NONASSIG) // on
/* Locked/unlocked project */
#define Prj_NUM_LOCKED_UNLOCKED 2
@ -93,8 +93,8 @@ typedef enum
struct Prj_Filter
{
Prj_WhoseProjects_t My_All; // Show my / all projects
unsigned PreNon; // Show preassigned / non preassigned projects
unsigned HidVis; // Show hidden / visible projects
unsigned Assign; // Show assigned / non assigned projects
unsigned Hidden; // Show hidden / visible projects
unsigned Faulti; // Show faulty / faultless projects
long DptCod; // Show projects of this department
};
@ -142,7 +142,7 @@ struct Project
long CrsCod;
Prj_Locked_t Locked;
Prj_HiddenVisibl_t Hidden;
Prj_PreassignedNonpreassig_t Preassigned;
Prj_AssignedNonassig_t Assigned;
unsigned NumStds;
Prj_Proposal_t Proposal;
time_t CreatTime;

View File

@ -2051,6 +2051,27 @@ const char *Txt_Assessment_criteria =
"Crit&eacute;rios de avalia&ccedil;&atilde;o";
#endif
const char *Txt_Assigned_QUESTION =
#if L==1 // ca
"Assignat?";
#elif L==2 // de
"Vorbelegt?";
#elif L==3 // en
"Assigned?";
#elif L==4 // es
"&iquest;Asignado?";
#elif L==5 // fr
"Assign&eacute;?";
#elif L==6 // gn
"&iquest;Asignado?"; // Okoteve traducción
#elif L==7 // it
"Assegnato?";
#elif L==8 // pl
"Zadany?";
#elif L==9 // pt
"Atribu&iacute;do?";
#endif
const char *Txt_Assignment =
#if L==1 // ca
"Activitat";
@ -29732,27 +29753,6 @@ const char *Txt_Post = // Publish (verb)
"Publicar";
#endif
const char *Txt_Preassigned_QUESTION =
#if L==1 // ca
"Preassignat?";
#elif L==2 // de
"Vorbelegt?";
#elif L==3 // en
"Preassigned?";
#elif L==4 // es
"&iquest;Preasignado?";
#elif L==5 // fr
"Pr&eacute;assign&eacute;?";
#elif L==6 // gn
"&iquest;Preasignado?"; // Okoteve traducción
#elif L==7 // it
"Preassegnato?";
#elif L==8 // pl
"Zadany?";
#elif L==9 // pt
"Pr&eacute;-atribu&iacute;do?";
#endif
const char *Txt_Present =
#if L==1 // ca
"Present";
@ -31033,7 +31033,7 @@ const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS] =
#endif
};
const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NONPREASSIG] =
const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_ASSIGNED_NONASSIG] =
{
// Prj_PREASSIGNED
#if L==1 // ca
@ -31078,7 +31078,7 @@ const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NO
#endif
};
const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj_NUM_PREASSIGNED_NONPREASSIG] =
const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_SINGUL[Prj_NUM_ASSIGNED_NONASSIG] =
{
// Prj_PREASSIGNED
#if L==1 // ca