Version 16.200

This commit is contained in:
Antonio Cañas Vargas 2017-05-02 10:24:47 +02:00
parent 0b36aa168c
commit 22a619a45e
7 changed files with 214 additions and 155 deletions

View File

@ -437,6 +437,7 @@ Assessment:
312. ActRcvRchTxtAss Receive and change the rich text of the assessment system 312. ActRcvRchTxtAss Receive and change the rich text of the assessment system
313. ActFrmNewAsg Form to create a new assignment 313. ActFrmNewAsg Form to create a new assignment
314. ActEdiOneAsg Edit one assignment 314. ActEdiOneAsg Edit one assignment
NEW. ActPrnOneAsg Print one assignment
315. ActNewAsg Create new assignment 315. ActNewAsg Create new assignment
316. ActChgAsg Modify data of an existing assignment 316. ActChgAsg Modify data of an existing assignment
317. ActReqRemAsg Request the removal of an assignment 317. ActReqRemAsg Request the removal of an assignment
@ -1883,6 +1884,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActFrmNewAsg */{ 812,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RequestCreatOrEditAsg ,NULL}, /* ActFrmNewAsg */{ 812,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RequestCreatOrEditAsg ,NULL},
/* ActEdiOneAsg */{ 814,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RequestCreatOrEditAsg ,NULL}, /* ActEdiOneAsg */{ 814,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RequestCreatOrEditAsg ,NULL},
/* ActPrnOneAsg */{1637,-1,TabUnk,ActSeeAsg ,0x1F8,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BLNK_WINDOW,NULL ,Asg_PrintOneAssignment ,NULL},
/* ActNewAsg */{ 803,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RecFormAssignment ,NULL}, /* ActNewAsg */{ 803,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RecFormAssignment ,NULL},
/* ActChgAsg */{ 815,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RecFormAssignment ,NULL}, /* ActChgAsg */{ 815,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RecFormAssignment ,NULL},
/* ActReqRemAsg */{ 813,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_ReqRemAssignment ,NULL}, /* ActReqRemAsg */{ 813,-1,TabUnk,ActSeeAsg ,0x110,0x100, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_ReqRemAssignment ,NULL},
@ -4621,6 +4623,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActSeeCalDeg, // #1634 ActSeeCalDeg, // #1634
ActPrnCalDeg, // #1635 ActPrnCalDeg, // #1635
ActChgCalDeg1stDay, // #1636 ActChgCalDeg1stDay, // #1636
ActPrnOneAsg, // #1637
}; };
/*****************************************************************************/ /*****************************************************************************/

View File

@ -57,9 +57,9 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 32 + 24 + 115 + 71 + 416 + 159 + 172 + 42 + 14 + 96) #define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 32 + 24 + 115 + 72 + 416 + 159 + 172 + 42 + 14 + 96)
#define Act_MAX_ACTION_COD 1636 #define Act_MAX_ACTION_COD 1637
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12
@ -451,63 +451,64 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActFrmNewAsg (ActChgCalCrs1stDay + 17) #define ActFrmNewAsg (ActChgCalCrs1stDay + 17)
#define ActEdiOneAsg (ActChgCalCrs1stDay + 18) #define ActEdiOneAsg (ActChgCalCrs1stDay + 18)
#define ActNewAsg (ActChgCalCrs1stDay + 19) #define ActPrnOneAsg (ActChgCalCrs1stDay + 19)
#define ActChgAsg (ActChgCalCrs1stDay + 20) #define ActNewAsg (ActChgCalCrs1stDay + 20)
#define ActReqRemAsg (ActChgCalCrs1stDay + 21) #define ActChgAsg (ActChgCalCrs1stDay + 21)
#define ActRemAsg (ActChgCalCrs1stDay + 22) #define ActReqRemAsg (ActChgCalCrs1stDay + 22)
#define ActHidAsg (ActChgCalCrs1stDay + 23) #define ActRemAsg (ActChgCalCrs1stDay + 23)
#define ActShoAsg (ActChgCalCrs1stDay + 24) #define ActHidAsg (ActChgCalCrs1stDay + 24)
#define ActShoAsg (ActChgCalCrs1stDay + 25)
#define ActSeeTst (ActChgCalCrs1stDay + 25) #define ActSeeTst (ActChgCalCrs1stDay + 26)
#define ActAssTst (ActChgCalCrs1stDay + 26) #define ActAssTst (ActChgCalCrs1stDay + 27)
#define ActEdiTstQst (ActChgCalCrs1stDay + 27) #define ActEdiTstQst (ActChgCalCrs1stDay + 28)
#define ActEdiOneTstQst (ActChgCalCrs1stDay + 28) #define ActEdiOneTstQst (ActChgCalCrs1stDay + 29)
#define ActReqImpTstQst (ActChgCalCrs1stDay + 29) #define ActReqImpTstQst (ActChgCalCrs1stDay + 30)
#define ActImpTstQst (ActChgCalCrs1stDay + 30) #define ActImpTstQst (ActChgCalCrs1stDay + 31)
#define ActLstTstQst (ActChgCalCrs1stDay + 31) #define ActLstTstQst (ActChgCalCrs1stDay + 32)
#define ActRcvTstQst (ActChgCalCrs1stDay + 32) #define ActRcvTstQst (ActChgCalCrs1stDay + 33)
#define ActReqRemTstQst (ActChgCalCrs1stDay + 33) #define ActReqRemTstQst (ActChgCalCrs1stDay + 34)
#define ActRemTstQst (ActChgCalCrs1stDay + 34) #define ActRemTstQst (ActChgCalCrs1stDay + 35)
#define ActShfTstQst (ActChgCalCrs1stDay + 35) #define ActShfTstQst (ActChgCalCrs1stDay + 36)
#define ActCfgTst (ActChgCalCrs1stDay + 36) #define ActCfgTst (ActChgCalCrs1stDay + 37)
#define ActEnableTag (ActChgCalCrs1stDay + 37) #define ActEnableTag (ActChgCalCrs1stDay + 38)
#define ActDisableTag (ActChgCalCrs1stDay + 38) #define ActDisableTag (ActChgCalCrs1stDay + 39)
#define ActRenTag (ActChgCalCrs1stDay + 39) #define ActRenTag (ActChgCalCrs1stDay + 40)
#define ActRcvCfgTst (ActChgCalCrs1stDay + 40) #define ActRcvCfgTst (ActChgCalCrs1stDay + 41)
#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 41) #define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 42)
#define ActSeeMyTstRes (ActChgCalCrs1stDay + 42) #define ActSeeMyTstRes (ActChgCalCrs1stDay + 43)
#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 43) #define ActSeeOneTstResMe (ActChgCalCrs1stDay + 44)
#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 44) #define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 45)
#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 45) #define ActSeeUsrTstRes (ActChgCalCrs1stDay + 46)
#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 46) #define ActSeeOneTstResOth (ActChgCalCrs1stDay + 47)
#define ActSeeOneSvy (ActChgCalCrs1stDay + 47) #define ActSeeOneSvy (ActChgCalCrs1stDay + 48)
#define ActAnsSvy (ActChgCalCrs1stDay + 48) #define ActAnsSvy (ActChgCalCrs1stDay + 49)
#define ActFrmNewSvy (ActChgCalCrs1stDay + 49) #define ActFrmNewSvy (ActChgCalCrs1stDay + 50)
#define ActEdiOneSvy (ActChgCalCrs1stDay + 50) #define ActEdiOneSvy (ActChgCalCrs1stDay + 51)
#define ActNewSvy (ActChgCalCrs1stDay + 51) #define ActNewSvy (ActChgCalCrs1stDay + 52)
#define ActChgSvy (ActChgCalCrs1stDay + 52) #define ActChgSvy (ActChgCalCrs1stDay + 53)
#define ActReqRemSvy (ActChgCalCrs1stDay + 53) #define ActReqRemSvy (ActChgCalCrs1stDay + 54)
#define ActRemSvy (ActChgCalCrs1stDay + 54) #define ActRemSvy (ActChgCalCrs1stDay + 55)
#define ActReqRstSvy (ActChgCalCrs1stDay + 55) #define ActReqRstSvy (ActChgCalCrs1stDay + 56)
#define ActRstSvy (ActChgCalCrs1stDay + 56) #define ActRstSvy (ActChgCalCrs1stDay + 57)
#define ActHidSvy (ActChgCalCrs1stDay + 57) #define ActHidSvy (ActChgCalCrs1stDay + 58)
#define ActShoSvy (ActChgCalCrs1stDay + 58) #define ActShoSvy (ActChgCalCrs1stDay + 59)
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 59) #define ActEdiOneSvyQst (ActChgCalCrs1stDay + 60)
#define ActRcvSvyQst (ActChgCalCrs1stDay + 60) #define ActRcvSvyQst (ActChgCalCrs1stDay + 61)
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 61) #define ActReqRemSvyQst (ActChgCalCrs1stDay + 62)
#define ActRemSvyQst (ActChgCalCrs1stDay + 62) #define ActRemSvyQst (ActChgCalCrs1stDay + 63)
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 63) #define ActSeeOneExaAnn (ActChgCalCrs1stDay + 64)
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 64) #define ActSeeDatExaAnn (ActChgCalCrs1stDay + 65)
#define ActEdiExaAnn (ActChgCalCrs1stDay + 65) #define ActEdiExaAnn (ActChgCalCrs1stDay + 66)
#define ActRcvExaAnn (ActChgCalCrs1stDay + 66) #define ActRcvExaAnn (ActChgCalCrs1stDay + 67)
#define ActPrnExaAnn (ActChgCalCrs1stDay + 67) #define ActPrnExaAnn (ActChgCalCrs1stDay + 68)
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 68) #define ActReqRemExaAnn (ActChgCalCrs1stDay + 69)
#define ActRemExaAnn (ActChgCalCrs1stDay + 69) #define ActRemExaAnn (ActChgCalCrs1stDay + 70)
#define ActHidExaAnn (ActChgCalCrs1stDay + 70) #define ActHidExaAnn (ActChgCalCrs1stDay + 71)
#define ActShoExaAnn (ActChgCalCrs1stDay + 71) #define ActShoExaAnn (ActChgCalCrs1stDay + 72)
/*****************************************************************************/ /*****************************************************************************/
/******************************** Files tab **********************************/ /******************************** Files tab **********************************/

View File

@ -63,15 +63,16 @@ extern struct Globals Gbl;
/*****************************************************************************/ /*****************************************************************************/
static void Asg_ShowAllAssignments (void); static void Asg_ShowAllAssignments (void);
static void Asg_PutHeadForSeeing (void);
static bool Asg_CheckIfICanCreateAssignments (void); static bool Asg_CheckIfICanCreateAssignments (void);
static void Asg_PutIconsListAssignments (void); static void Asg_PutIconsListAssignments (void);
static void Asg_PutIconToCreateNewAsg (void); static void Asg_PutIconToCreateNewAsg (void);
static void Asg_PutButtonToCreateNewAsg (void); static void Asg_PutButtonToCreateNewAsg (void);
static void Asg_PutFormToSelectWhichGroupsToShow (void); static void Asg_PutFormToSelectWhichGroupsToShow (void);
static void Asg_ParamsWhichGroupsToShow (void); static void Asg_ParamsWhichGroupsToShow (void);
static void Asg_ShowOneAssignment (long AsgCod); static void Asg_ShowOneAssignment (long AsgCod,bool PrintView);
static void Asg_WriteAsgAuthor (struct Assignment *Asg); static void Asg_WriteAsgAuthor (struct Assignment *Asg);
static void Asg_WriteAssignmentFolder (struct Assignment *Asg); static void Asg_WriteAssignmentFolder (struct Assignment *Asg,bool PrintView);
static void Asg_GetParamAsgOrder (void); static void Asg_GetParamAsgOrder (void);
static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden); static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden);
@ -114,13 +115,7 @@ static void Asg_ShowAllAssignments (void)
{ {
extern const char *Hlp_ASSESSMENT_Assignments; extern const char *Hlp_ASSESSMENT_Assignments;
extern const char *Txt_Assignments; extern const char *Txt_Assignments;
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Assignment;
extern const char *Txt_Upload_files_QUESTION;
extern const char *Txt_Folder;
extern const char *Txt_No_assignments; extern const char *Txt_No_assignments;
Dat_StartEndTime_t Order;
struct Pagination Pagination; struct Pagination Pagination;
unsigned NumAsg; unsigned NumAsg;
@ -151,45 +146,14 @@ static void Asg_ShowAllAssignments (void)
{ {
/***** Table head *****/ /***** Table head *****/
Lay_StartTableWideMargin (2); Lay_StartTableWideMargin (2);
fprintf (Gbl.F.Out,"<tr>"); Asg_PutHeadForSeeing ();
for (Order = Dat_START_TIME;
Order <= Dat_END_TIME;
Order++)
{
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
Act_FormStart (ActSeeAsg);
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Pag_ASSIGNMENTS,Gbl.Asgs.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
if (Order == Gbl.Asgs.SelectedOrder)
fprintf (Gbl.F.Out,"<u>");
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
if (Order == Gbl.Asgs.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
fprintf (Gbl.F.Out,"</th>");
}
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">"
"%s"
"</th>"
"<th class=\"CENTER_MIDDLE\">"
"%s"
"</th>"
"<th class=\"LEFT_MIDDLE\">"
"%s"
"</th>"
"</tr>",
Txt_Assignment,
Txt_Upload_files_QUESTION,
Txt_Folder);
/***** Write all the assignments *****/ /***** Write all the assignments *****/
for (NumAsg = Pagination.FirstItemVisible; for (NumAsg = Pagination.FirstItemVisible;
NumAsg <= Pagination.LastItemVisible; NumAsg <= Pagination.LastItemVisible;
NumAsg++) NumAsg++)
Asg_ShowOneAssignment (Gbl.Asgs.LstAsgCods[NumAsg - 1]); Asg_ShowOneAssignment (Gbl.Asgs.LstAsgCods[NumAsg - 1],
false); // Not print view
/***** End table *****/ /***** End table *****/
Lay_EndTable (); Lay_EndTable ();
@ -214,6 +178,54 @@ static void Asg_ShowAllAssignments (void)
Asg_FreeListAssignments (); Asg_FreeListAssignments ();
} }
/*****************************************************************************/
/***************** Write header with fields of an assignment *****************/
/*****************************************************************************/
static void Asg_PutHeadForSeeing (void)
{
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Assignment;
extern const char *Txt_Upload_files_QUESTION;
extern const char *Txt_Folder;
Dat_StartEndTime_t Order;
fprintf (Gbl.F.Out,"<tr>");
for (Order = Dat_START_TIME;
Order <= Dat_END_TIME;
Order++)
{
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
Act_FormStart (ActSeeAsg);
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Pag_ASSIGNMENTS,Gbl.Asgs.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
if (Order == Gbl.Asgs.SelectedOrder)
fprintf (Gbl.F.Out,"<u>");
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
if (Order == Gbl.Asgs.SelectedOrder)
fprintf (Gbl.F.Out,"</u>");
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
fprintf (Gbl.F.Out,"</th>");
}
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">"
"%s"
"</th>"
"<th class=\"CENTER_MIDDLE\">"
"%s"
"</th>"
"<th class=\"LEFT_MIDDLE\">"
"%s"
"</th>"
"</tr>",
Txt_Assignment,
Txt_Upload_files_QUESTION,
Txt_Folder);
}
/*****************************************************************************/ /*****************************************************************************/
/******************** Check if I can create assignments **********************/ /******************** Check if I can create assignments **********************/
/*****************************************************************************/ /*****************************************************************************/
@ -287,11 +299,40 @@ static void Asg_ParamsWhichGroupsToShow (void)
Pag_PutHiddenParamPagNum (Pag_ASSIGNMENTS,Gbl.Asgs.CurrentPage); Pag_PutHiddenParamPagNum (Pag_ASSIGNMENTS,Gbl.Asgs.CurrentPage);
} }
/*****************************************************************************/
/******************** Show print view of one assignment **********************/
/*****************************************************************************/
void Asg_PrintOneAssignment (void)
{
long AsgCod;
/***** Get the code of the assignment *****/
AsgCod = Asg_GetParamAsgCod ();
/***** Start frame *****/
Lay_WriteHeaderClassPhoto (true,false,
Gbl.CurrentIns.Ins.InsCod,
Gbl.CurrentDeg.Deg.DegCod,
Gbl.CurrentCrs.Crs.CrsCod);
/***** Table head *****/
Lay_StartTableWideMargin (2);
Asg_PutHeadForSeeing ();
/***** Write assignment *****/
Asg_ShowOneAssignment (AsgCod,
true); // Print view
/***** End table *****/
Lay_EndTable ();
}
/*****************************************************************************/ /*****************************************************************************/
/*************************** Show one assignment *****************************/ /*************************** Show one assignment *****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Asg_ShowOneAssignment (long AsgCod) static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
{ {
extern const char *Txt_Today; extern const char *Txt_Today;
extern const char *Txt_ASSIGNMENT_TYPES[Asg_NUM_TYPES_SEND_WORK]; extern const char *Txt_ASSIGNMENT_TYPES[Asg_NUM_TYPES_SEND_WORK];
@ -368,7 +409,8 @@ static void Asg_ShowOneAssignment (long AsgCod)
/* Assignment folder */ /* Assignment folder */
fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"DAT LEFT_TOP COLOR%u\">", fprintf (Gbl.F.Out,"<td rowspan=\"2\" class=\"DAT LEFT_TOP COLOR%u\">",
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
Asg_WriteAssignmentFolder (&Asg); if (Asg.SendWork == Asg_SEND_WORK)
Asg_WriteAssignmentFolder (&Asg,PrintView);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"</tr>"); "</tr>");
@ -381,15 +423,9 @@ static void Asg_ShowOneAssignment (long AsgCod)
Asg_WriteAsgAuthor (&Asg); Asg_WriteAsgAuthor (&Asg);
/* Forms to remove/edit this assignment */ /* Forms to remove/edit this assignment */
switch (Gbl.Usrs.Me.LoggedRole) if (!PrintView)
{ Asg_PutFormsToRemEditOneAsg (Asg.AsgCod,Asg.Hidden);
case Rol_TEACHER:
case Rol_SYS_ADM:
Asg_PutFormsToRemEditOneAsg (Asg.AsgCod,Asg.Hidden);
break;
default:
break;
}
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
/* Text of the assignment */ /* Text of the assignment */
@ -433,45 +469,45 @@ static void Asg_WriteAsgAuthor (struct Assignment *Asg)
/********************* Write the folder of an assignment *********************/ /********************* Write the folder of an assignment *********************/
/*****************************************************************************/ /*****************************************************************************/
static void Asg_WriteAssignmentFolder (struct Assignment *Asg) static void Asg_WriteAssignmentFolder (struct Assignment *Asg,bool PrintView)
{ {
extern const char *Txt_Upload_file_or_create_folder_in_FOLDER; extern const char *Txt_Upload_file_or_create_folder_in_FOLDER;
extern const char *Txt_Folder; extern const char *Txt_Folder;
bool ICanSendFiles = !Asg->Hidden && // It's visible (not hidden)
Asg->Open && // It's open (inside dates)
Asg->IBelongToCrsOrGrps && // I belong to course or groups
Gbl.Usrs.Me.LoggedRole == Rol_STUDENT; // I am a student
if (Asg->SendWork == Asg_SEND_WORK) /***** Folder icon *****/
if (!PrintView && // Not print view
ICanSendFiles) // I can send files to this assignment folder
{ {
/***** Folder icon *****/ /* Form to create a new file or folder */
if (!Asg->Hidden && // It's visible (not hidden) Act_FormStart (ActFrmCreAsgUsr);
Asg->Open && // It's open (inside dates) Brw_PutParamsFileBrowser (ActUnk,
Asg->IBelongToCrsOrGrps && // I belong to course or groups Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS,
Gbl.Usrs.Me.LoggedRole == Rol_STUDENT) // I am a student Asg->Folder,
// I can send files to this assignment folder Brw_IS_FOLDER,-1L);
{ sprintf (Gbl.Title,Txt_Upload_file_or_create_folder_in_FOLDER,
/* Form to create a new file or folder */ Asg->Folder);
Act_FormStart (ActFrmCreAsgUsr); fprintf (Gbl.F.Out,"<input type=\"image\""
Brw_PutParamsFileBrowser (ActUnk, " src=\"%s/folder-open-plus16x16.gif\""
Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS, " alt=\"%s\" title=\"%s\" class=\"ICO20x20\" />",
Asg->Folder, Gbl.Prefs.IconsURL,
Brw_IS_FOLDER,-1L); Gbl.Title,
sprintf (Gbl.Title,Txt_Upload_file_or_create_folder_in_FOLDER, Gbl.Title);
Asg->Folder); Act_FormEnd ();
fprintf (Gbl.F.Out,"<input type=\"image\""
" src=\"%s/folder-open-plus16x16.gif\""
" alt=\"%s\" title=\"%s\" class=\"ICO20x20\" />",
Gbl.Prefs.IconsURL,
Gbl.Title,
Gbl.Title);
Act_FormEnd ();
}
else // I can't send files to this assignment folder
fprintf (Gbl.F.Out,"<img src=\"%s/folder-closed16x16.gif\""
" alt=\"%s\" title=\"%s\" class=\"ICO20x20\" />",
Gbl.Prefs.IconsURL,
Txt_Folder,Txt_Folder);
/***** Folder name *****/
fprintf (Gbl.F.Out,"%s",Asg->Folder);
} }
else // I can't send files to this assignment folder
fprintf (Gbl.F.Out,"<img src=\"%s/%s\" alt=\"%s\" title=\"%s\""
" class=\"ICO20x20\" />",
Gbl.Prefs.IconsURL,
ICanSendFiles ? "folder-open16x16.gif" :
"folder-closed16x16.gif",
Txt_Folder,Txt_Folder);
/***** Folder name *****/
fprintf (Gbl.F.Out,"%s",Asg->Folder);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -502,21 +538,33 @@ void Asg_PutHiddenParamAsgOrder (void)
static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden) static void Asg_PutFormsToRemEditOneAsg (long AsgCod,bool Hidden)
{ {
fprintf (Gbl.F.Out,"<div>"); fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
Gbl.Asgs.AsgCodToEdit = AsgCod; // Used as parameter in contextual links Gbl.Asgs.AsgCodToEdit = AsgCod; // Used as parameter in contextual links
/***** Put form to remove assignment *****/ switch (Gbl.Usrs.Me.LoggedRole)
Lay_PutContextualIconToRemove (ActReqRemAsg,Asg_PutParams); {
case Rol_TEACHER:
case Rol_SYS_ADM:
/***** Put form to remove assignment *****/
Lay_PutContextualIconToRemove (ActReqRemAsg,Asg_PutParams);
/***** Put form to hide/show assignment *****/ /***** Put form to hide/show assignment *****/
if (Hidden) if (Hidden)
Lay_PutContextualIconToUnhide (ActShoAsg,Asg_PutParams); Lay_PutContextualIconToUnhide (ActShoAsg,Asg_PutParams);
else else
Lay_PutContextualIconToHide (ActHidAsg,Asg_PutParams); Lay_PutContextualIconToHide (ActHidAsg,Asg_PutParams);
/***** Put form to edit assignment *****/ /***** Put form to edit assignment *****/
Lay_PutContextualIconToEdit (ActEdiOneAsg,Asg_PutParams); Lay_PutContextualIconToEdit (ActEdiOneAsg,Asg_PutParams);
// no break
case Rol_STUDENT:
/***** Put form to print assignment *****/
Lay_PutContextualIconToPrint (ActPrnOneAsg,Asg_PutParams);
break;
default:
break;
}
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
} }

View File

@ -69,6 +69,8 @@ struct Assignment
/*****************************************************************************/ /*****************************************************************************/
void Asg_SeeAssignments (void); void Asg_SeeAssignments (void);
void Asg_PrintOneAssignment (void);
void Asg_PutHiddenParamAsgOrder (void); void Asg_PutHiddenParamAsgOrder (void);
void Asg_RequestCreatOrEditAsg (void); void Asg_RequestCreatOrEditAsg (void);
void Asg_GetListAssignments (void); void Asg_GetListAssignments (void);

View File

@ -542,7 +542,7 @@ static void Att_PutFormToListStdsParams (void)
static void Att_PutFormsToRemEditOneAttEvent (long AttCod,bool Hidden) static void Att_PutFormsToRemEditOneAttEvent (long AttCod,bool Hidden)
{ {
fprintf (Gbl.F.Out,"<div>"); fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
Gbl.AttEvents.AttCodToEdit = AttCod; // Used as parameters in contextual links Gbl.AttEvents.AttCodToEdit = AttCod; // Used as parameters in contextual links

View File

@ -217,19 +217,24 @@
// TODO: Change numbers of notifications in program and database to match order in tabs // TODO: Change numbers of notifications in program and database to match order in tabs
// TODO: Icon to view en "Fuente de información" // TODO: Icon to view en "Fuente de información"
// TODO: Print view of an assignment (suggested by Sandra Daniela Tazzioli Barroso). // TODO: Change layout of contextual icons in assignments, surveys and attendance
// TODO: Fix problem printing view of students, teachers, etc.
/*****************************************************************************/ /*****************************************************************************/
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.199 (2017-05-02)" #define Log_PLATFORM_VERSION "SWAD 16.200 (2017-05-02)"
#define CSS_FILE "swad16.195.8.css" #define CSS_FILE "swad16.195.8.css"
#define JS_FILE "swad16.181.js" #define JS_FILE "swad16.181.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 16.200: May 02, 2017 Print view of an assignment, suggested by Sandra Daniela Tazzioli Barroso. (218337 lines)
1 change necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1637','es','N','Imprimir actividad');
Version 16.199: May 02, 2017 Code refactoring related to message author. (218291 lines) Version 16.199: May 02, 2017 Code refactoring related to message author. (218291 lines)
Version 16.198.9: May 02, 2017 Code refactoring related to message author. (218345 lines) Version 16.198.9: May 02, 2017 Code refactoring related to message author. (218345 lines)
Version 16.198.8: May 01, 2017 Code refactoring related to tables. (218323 lines) Version 16.198.8: May 01, 2017 Code refactoring related to tables. (218323 lines)

View File

@ -783,7 +783,7 @@ static void Svy_PutFormsToRemEditOneSvy (long SvyCod,bool Visible)
{ {
extern const char *Txt_Reset; extern const char *Txt_Reset;
fprintf (Gbl.F.Out,"<div>"); fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
Gbl.Svys.SvyCodToEdit = SvyCod; // Used as parameters in contextual links Gbl.Svys.SvyCodToEdit = SvyCod; // Used as parameters in contextual links