From dc7e9fc917a2887f1405a3dde1d10c0665fd579c Mon Sep 17 00:00:00 2001 From: acanas Date: Thu, 15 Sep 2022 18:45:57 +0200 Subject: [PATCH] Version 22.4: Sep 15, 2022 Changes in edition of program items. --- swad_attendance.c | 10 +-- swad_browser.c | 19 +++++ swad_browser.h | 1 + swad_browser_database.c | 25 +++++- swad_changelog.h | 5 +- swad_error.c | 6 +- swad_error.h | 2 +- swad_program.c | 90 +++++++-------------- swad_program.h | 11 +-- swad_program_resource.c | 175 ++++++++++++++++++++++------------------ swad_program_resource.h | 3 +- swad_text.c | 2 +- 12 files changed, 185 insertions(+), 164 deletions(-) diff --git a/swad_attendance.c b/swad_attendance.c index 44bbd4a02..b01627e54 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -2235,7 +2235,7 @@ static void Att_ReqListOrPrintUsrsAttendanceCrs (void *TypeOfView) Att_FreeListAttEvents (&Events); break; default: - Err_WrongTypeOfViewExit (); + Err_WrongTypeExit (); break; } } @@ -2303,7 +2303,7 @@ static void Att_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView) NULL,Box_NOT_CLOSABLE); break; default: - Err_WrongTypeOfViewExit (); + Err_WrongTypeExit (); break; } @@ -2333,7 +2333,7 @@ static void Att_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView) Att_FreeListAttEvents (&Events); break; default: - Err_WrongTypeOfViewExit (); + Err_WrongTypeExit (); break; } } @@ -2419,7 +2419,7 @@ static void Att_ListOrPrintUsrsAttendanceCrs (void *TypeOfView) NULL,Box_NOT_CLOSABLE); break; default: - Err_WrongTypeOfViewExit (); + Err_WrongTypeExit (); } /***** List events to select *****/ @@ -2453,7 +2453,7 @@ static void Att_ListOrPrintUsrsAttendanceCrs (void *TypeOfView) Grp_FreeListCodSelectedGrps (); break; default: - Err_WrongTypeOfViewExit (); + Err_WrongTypeExit (); break; } } diff --git a/swad_browser.c b/swad_browser.c index c12c724a0..1a7dcf711 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -9103,6 +9103,25 @@ void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata) FileMetadata->NumLoggedUsrs = 0; } +/*****************************************************************************/ +/******************** Get summary and content of a file **********************/ +/*****************************************************************************/ + +void Brw_GetFileNameFromFilCod (long FilCod,char FileName[NAME_MAX + 1]) + { + struct FileMetadata FileMetadata; + + /***** Return nothing on error *****/ + FileName[0] = '\0'; // Return nothing on error + + /***** Get file metadata *****/ + FileMetadata.FilCod = FilCod; + Brw_GetFileMetadataByCod (&FileMetadata); + + /***** Copy file name into summary string *****/ + Str_Copy (FileName,FileMetadata.FilFolLnk.Name,NAME_MAX); + } + /*****************************************************************************/ /********************** Get file type, size and date *************************/ /*****************************************************************************/ diff --git a/swad_browser.h b/swad_browser.h index 7c7d7c639..b4263e2a8 100644 --- a/swad_browser.h +++ b/swad_browser.h @@ -233,6 +233,7 @@ void Brw_GetLinkToDownloadFile (const char *PathInTree,const char *FileName,char void Brw_ChgFileMetadata (void); void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata); void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata); +void Brw_GetFileNameFromFilCod (long FilCod,char FileName[NAME_MAX + 1]); bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata); void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata); void Brw_UpdateMyFileViews (long FilCod); diff --git a/swad_browser_database.c b/swad_browser_database.c index 742a2affb..1b2f94285 100644 --- a/swad_browser_database.c +++ b/swad_browser_database.c @@ -298,7 +298,7 @@ unsigned Brw_DB_GetFileMetadataByPath (MYSQL_RES **mysql_res,const char *Path) /*****************************************************************************/ /********************* Get file metadata using its code **********************/ /*****************************************************************************/ -// FileMetadata.FilCod must be filled + // This function only gets metadata stored in table files, // does not get size, time, numviews... @@ -321,6 +321,29 @@ unsigned Brw_DB_GetFileMetadataByCod (MYSQL_RES **mysql_res,long FilCod) FilCod); } +/*****************************************************************************/ +/*********************** Get file name using its code ************************/ +/*****************************************************************************/ +/* +unsigned Brw_DB_GetFileNameByCod (MYSQL_RES **mysql_res,long FilCod) + { + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get file metadata", + "SELECT FilCod," // row[0] + "FileBrowser," // row[1] + "Cod," // row[2] + "ZoneUsrCod," // row[3] + "PublisherUsrCod," // row[4] + "FileType," // row[5] + "Path," // row[6] + "Hidden," // row[7] + "Public," // row[8] + "License" // row[9] + " FROM brw_files" + " WHERE FilCod=%ld", + FilCod); + } +*/ /*****************************************************************************/ /************************ Get the publisher of a subtree *********************/ /*****************************************************************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 209e8990e..70005b820 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -606,11 +606,12 @@ 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.3 (2022-09-14)" +#define Log_PLATFORM_VERSION "SWAD 22.4 (2022-09-15)" #define CSS_FILE "swad22.3.css" #define JS_FILE "swad21.100.js" /* - Version 22.3: Sep 14, 2022 Listing program resource clipboard. (? lines) + Version 22.4: Sep 15, 2022 Changes in edition of program items. (329940 lines) + Version 22.3: Sep 14, 2022 Listing program resource clipboard. (329918 lines) 4 changes necessary in database: ALTER TABLE prg_clipboards CHANGE COLUMN Type Type ENUM('non','asg','cfe','exa','gam','svy','doc','mrk','att','for') NOT NULL DEFAULT 'non'; ALTER TABLE prg_resources DROP COLUMN Type; diff --git a/swad_error.c b/swad_error.c index f94d53211..af16e52dc 100644 --- a/swad_error.c +++ b/swad_error.c @@ -249,12 +249,12 @@ void Err_WrongGroupExit (void) } /*****************************************************************************/ -/************* Write error message and exit when wrong order *****************/ +/************* Write error message and exit when wrong type ******************/ /*****************************************************************************/ -void Err_WrongTypeOfViewExit (void) +void Err_WrongTypeExit (void) { - Err_ShowErrorAndExit ("Wrong type of view."); + Err_ShowErrorAndExit ("Wrong type."); } /*****************************************************************************/ diff --git a/swad_error.h b/swad_error.h index ee92c22bc..8b41428ef 100644 --- a/swad_error.h +++ b/swad_error.h @@ -54,7 +54,7 @@ void Err_WrongCopySrcExit (void); void Err_WrongNumberOfRowsExit (void); void Err_WrongGrpTypExit (void); void Err_WrongGroupExit (void); -void Err_WrongTypeOfViewExit (void); +void Err_WrongTypeExit (void); void Err_WrongBannerExit (void); void Err_WrongLinkExit (void); void Err_WrongHolidayExit (void); diff --git a/swad_program.c b/swad_program.c index b7dbc7953..ea492e33f 100644 --- a/swad_program.c +++ b/swad_program.c @@ -419,12 +419,10 @@ static void Prg_PutIconToViewProgram (void) static void Prg_PutIconToCreateNewItem (void) { - struct Prg_ItmRscCodes SelectedItmRscCodes; + long ItmCod = -1L; - SelectedItmRscCodes.ItmCod = -1L; - SelectedItmRscCodes.RscCod = -1L; Ico_PutContextualIconToAdd (ActFrmNewPrgItm,Prg_ITEM_SECTION_ID, - Prg_PutParams,&SelectedItmRscCodes); + Prg_PutParamItmCod,&ItmCod); } /*****************************************************************************/ @@ -434,12 +432,10 @@ static void Prg_PutIconToCreateNewItem (void) static void Prg_PutButtonToCreateNewItem (void) { extern const char *Txt_New_item; - struct Prg_ItmRscCodes SelectedItmRscCodes; + long ItmCod = -1L; - SelectedItmRscCodes.ItmCod = -1L; - SelectedItmRscCodes.RscCod = -1L; Frm_BeginFormAnchor (ActFrmNewPrgItm,Prg_ITEM_SECTION_ID); - Prg_PutParams (&SelectedItmRscCodes); + Prg_PutParamItmCod (&ItmCod); Btn_PutConfirmButton (Txt_New_item); Frm_EndForm (); } @@ -474,7 +470,6 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, unsigned NumCol; char *TitleClass; Dat_StartEndTime_t StartEndTime; - struct Prg_ItmRscCodes SelectedItmRscCodes; /***** Check if this item should be shown as hidden *****/ Prg_SetHiddenLevel (Item->Hierarchy.Level,Item->Hierarchy.Hidden); @@ -611,9 +606,7 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, } /* List of resources */ - SelectedItmRscCodes.ItmCod = Item->Hierarchy.ItmCod; - SelectedItmRscCodes.RscCod = SelectedRscCod; - PrgRsc_ListItemResources (ListingType,&SelectedItmRscCodes); + PrgRsc_ListItemResources (ListingType,Item->Hierarchy.ItmCod,SelectedRscCod); /* End text and resources */ HTM_TD_End (); @@ -885,24 +878,21 @@ static void Prg_PutFormsToRemEditOneItem (Prg_ListingType_t ListingType, [true ] = ActUnhPrgItm, // Hidden ==> action to unhide }; char StrItemIndex[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; - struct Prg_ItmRscCodes SelectedItmRscCodes; /***** Initialize item index string *****/ snprintf (StrItemIndex,sizeof (StrItemIndex),"%u",Item->Hierarchy.ItmInd); - SelectedItmRscCodes.ItmCod = Item->Hierarchy.ItmCod; - SelectedItmRscCodes.RscCod = -1L; switch (Gbl.Usrs.Me.Role.Logged) { case Rol_TCH: case Rol_SYS_ADM: /***** Icon to remove program item *****/ Ico_PutContextualIconToRemove (ActReqRemPrgItm,NULL, - Prg_PutParams,&SelectedItmRscCodes); + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod); /***** Icon to hide/unhide program item *****/ Ico_PutContextualIconToHideUnhide (ActionHideUnhide,"prg_highlighted", - Prg_PutParams,&SelectedItmRscCodes, + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod, Item->Hierarchy.Hidden); /***** Icon to edit program item *****/ @@ -910,24 +900,24 @@ static void Prg_PutFormsToRemEditOneItem (Prg_ListingType_t ListingType, { case Prg_FORM_EDIT_ITEM: Ico_PutContextualIconToView (ActSeePrgItm,Prg_ITEM_SECTION_ID, - Prg_PutParams,&SelectedItmRscCodes); + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod); break; default: Ico_PutContextualIconToEdit (ActFrmChgPrgItm,Prg_ITEM_SECTION_ID, - Prg_PutParams,&SelectedItmRscCodes); + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod); break; } /***** Icon to add a new child item inside this item *****/ Ico_PutContextualIconToAdd (ActFrmNewPrgItm,Prg_ITEM_SECTION_ID, - Prg_PutParams,&SelectedItmRscCodes); + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod); HTM_BR (); /***** Icon to move up the item *****/ if (Prg_CheckIfMoveUpIsAllowed (NumItem)) Lay_PutContextualLinkOnlyIcon (ActUp_PrgItm,"prg_highlighted", - Prg_PutParams,&SelectedItmRscCodes, + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod, "arrow-up.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-up.svg",Ico_BLACK,Txt_Movement_not_allowed); @@ -935,7 +925,7 @@ static void Prg_PutFormsToRemEditOneItem (Prg_ListingType_t ListingType, /***** Icon to move down the item *****/ if (Prg_CheckIfMoveDownIsAllowed (NumItem)) Lay_PutContextualLinkOnlyIcon (ActDwnPrgItm,"prg_highlighted", - Prg_PutParams,&SelectedItmRscCodes, + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod, "arrow-down.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-down.svg",Ico_BLACK,Txt_Movement_not_allowed); @@ -943,7 +933,7 @@ static void Prg_PutFormsToRemEditOneItem (Prg_ListingType_t ListingType, /***** Icon to move left item (increase level) *****/ if (Prg_CheckIfMoveLeftIsAllowed (NumItem)) Lay_PutContextualLinkOnlyIcon (ActLftPrgItm,"prg_highlighted", - Prg_PutParams,&SelectedItmRscCodes, + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod, "arrow-left.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-left.svg",Ico_BLACK,Txt_Movement_not_allowed); @@ -951,7 +941,7 @@ static void Prg_PutFormsToRemEditOneItem (Prg_ListingType_t ListingType, /***** Icon to move right item (indent, decrease level) *****/ if (Prg_CheckIfMoveRightIsAllowed (NumItem)) Lay_PutContextualLinkOnlyIcon (ActRgtPrgItm,"prg_highlighted", - Prg_PutParams,&SelectedItmRscCodes, + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod, "arrow-right.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-right.svg",Ico_BLACK,Txt_Movement_not_allowed); @@ -1038,30 +1028,31 @@ static bool Prg_CheckIfMoveRightIsAllowed (unsigned NumItem) /******************** Params used to edit a program item *********************/ /*****************************************************************************/ -void Prg_PutParams (void *ItmRscCodes) +void Prg_PutParamItmCod (void *ItmCod) { - if (ItmRscCodes) - { - /* If a resource is present, put resource code. - If no resource present, but item is, put item code. */ - if (((struct Prg_ItmRscCodes *) ItmRscCodes)->RscCod > 0) - PrgRsc_PutParamRscCod (((struct Prg_ItmRscCodes *) ItmRscCodes)->RscCod); - else if (((struct Prg_ItmRscCodes *) ItmRscCodes)->ItmCod > 0) - Prg_PutParamItmCod (((struct Prg_ItmRscCodes *) ItmRscCodes)->ItmCod); - } + if (ItmCod) + if (*((long *) ItmCod) > 0) + Par_PutHiddenParamLong (NULL,"ItmCod",*((long *) ItmCod)); + } + +void Prg_PutParamRscCod (void *RscCod) + { + if (RscCod) + if (*((long *) RscCod) > 0) + Par_PutHiddenParamLong (NULL,"RscCod",*((long *) RscCod)); } void Prg_GetParams (struct Prg_Item *Item) { /***** Try to get item resource *****/ - Item->Resource.Hierarchy.RscCod = PrgRsc_GetParamRscCod (); + Item->Resource.Hierarchy.RscCod = Par_GetParToLong ("RscCod"); /***** Get data of the program item from database *****/ PrgRsc_GetDataOfResourceByCod (Item); if (Item->Hierarchy.ItmCod <= 0) // No resource specified /***** Try to get data of the program item from database *****/ - Item->Hierarchy.ItmCod = Prg_GetParamItmCod (); + Item->Hierarchy.ItmCod = Par_GetParToLong ("ItmCod"); /***** Get data of the program item from database *****/ Prg_GetDataOfItemByCod (Item); @@ -1238,24 +1229,6 @@ void Prg_ResetItem (struct Prg_Item *Item) Item->Resource.Title[0] = '\0'; } -/*****************************************************************************/ -/**************** Write parameter with code of program item ******************/ -/*****************************************************************************/ - -void Prg_PutParamItmCod (long ItmCod) - { - Par_PutHiddenParamLong (NULL,"ItmCod",ItmCod); - } - -/*****************************************************************************/ -/***************** Get parameter with code of program item *******************/ -/*****************************************************************************/ - -long Prg_GetParamItmCod (void) - { - return Par_GetParToLong ("ItmCod"); - } - /*****************************************************************************/ /**************** Get number of item in list from item code ******************/ /*****************************************************************************/ @@ -1298,7 +1271,6 @@ void Prg_ReqRemItem (void) extern const char *Txt_Do_you_really_want_to_remove_the_item_X; extern const char *Txt_Remove_item; struct Prg_Item Item; - struct Prg_ItmRscCodes SelectedItmRscCodes; /***** Get list of program items *****/ Prg_GetListItems (); @@ -1309,10 +1281,8 @@ void Prg_ReqRemItem (void) Err_WrongItemExit (); /***** Show question and button to remove the program item *****/ - SelectedItmRscCodes.ItmCod = Item.Hierarchy.ItmCod; - SelectedItmRscCodes.RscCod = -1L; Ale_ShowAlertAndButton (ActRemPrgItm,NULL,NULL, - Prg_PutParams,&SelectedItmRscCodes, + Prg_PutParamItmCod,&Item.Hierarchy.ItmCod, Btn_REMOVE_BUTTON,Txt_Remove_item, Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_item_X, Item.Title); @@ -1820,7 +1790,7 @@ static void Prg_ShowFormToCreateItem (long ParentItmCod) /***** Begin form *****/ Frm_BeginFormAnchor (ActNewPrgItm,"prg_highlighted"); - Prg_PutParamItmCod (ParentItem.Hierarchy.ItmCod); + Prg_PutParamItmCod (&ParentItem.Hierarchy.ItmCod); /***** Begin box and table *****/ Box_BoxTableBegin ("100%",Txt_New_item, @@ -1864,7 +1834,7 @@ static void Prg_ShowFormToChangeItem (long ItmCod) /***** Begin form *****/ Frm_BeginFormAnchor (ActChgPrgItm,"prg_highlighted"); - Prg_PutParamItmCod (Item.Hierarchy.ItmCod); + Prg_PutParamItmCod (&Item.Hierarchy.ItmCod); /***** Begin box and table *****/ Box_BoxTableBegin ("100%", diff --git a/swad_program.h b/swad_program.h index a4488ba3d..0de20094f 100644 --- a/swad_program.h +++ b/swad_program.h @@ -130,12 +130,6 @@ typedef enum Prg_END_EDIT_RES, // List resources of a selected item after edition } Prg_ListingType_t; -struct Prg_ItmRscCodes // Used in forms to pass an item and a resource as parameters - { - long ItmCod; - long RscCod; - }; - /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ @@ -148,7 +142,8 @@ void Prg_ShowAllItems (Prg_ListingType_t ListingType, bool Prg_CheckIfICanEditProgram (void); -void Prg_PutParams (void *ItmRsc); +void Prg_PutParamRscCod (void *RscCod); +void Prg_PutParamItmCod (void *ItmCod); void Prg_GetParams (struct Prg_Item *Item); void Prg_GetListItems (void); @@ -156,8 +151,6 @@ void Prg_FreeListItems (void); void Prg_ResetItem (struct Prg_Item *Item); -void Prg_PutParamItmCod (long ItmCod); -long Prg_GetParamItmCod (void); unsigned Prg_GetNumItemFromItmCod (long ItmCod); unsigned Prg_GetLevelFromNumItem (unsigned NumItem); diff --git a/swad_program_resource.c b/swad_program_resource.c index 311910ec9..e5639b15d 100644 --- a/swad_program_resource.c +++ b/swad_program_resource.c @@ -87,8 +87,8 @@ static const char *PrgRsc_RESOURCE_SECTION_ID = "rsc_section"; /***************************** Private prototypes ****************************/ /*****************************************************************************/ -static void PrgRsc_PutIconsViewResources (void *ItmRscCodes); -static void PrgRsc_PutIconsEditResources (void *ItmRscCodes); +static void PrgRsc_PutIconsViewResources (void *ItmCod); +static void PrgRsc_PutIconsEditResources (void *ItmCod); static void PrgRsc_GetDataOfResource (struct Prg_Item *Item, MYSQL_RES **mysql_res); @@ -96,24 +96,25 @@ static void PrgRsc_WriteRowViewResource (unsigned NumRsc, const struct Prg_Item *Item); static void PrgRsc_WriteRowEditResource (Prg_ListingType_t ListingType, unsigned NumRsc,unsigned NumResources, - const struct Prg_Item *Item, - struct Prg_ItmRscCodes *SelectedItmRscCodes); + struct Prg_Item *Item, + long SelectedRscCod); static void PrgRsc_WriteRowNewResource (Prg_ListingType_t ListingType, unsigned NumResources, - struct Prg_ItmRscCodes *SelectedItmRscCodes); -static void PrgRsc_PutFormsToRemEditOneResource (unsigned NumRsc, - unsigned NumResources, - struct Prg_ItmRscCodes *ItmRscCodes, - bool Hidden); + struct Prg_Item *Item, + long SelectedRscCod); +static void PrgRsc_PutFormsToRemEditOneResource (struct Prg_Item *Item, + unsigned NumRsc, + unsigned NumResources); static void PrgRsc_HideOrUnhideResource (bool Hide); static void PrgRsc_MoveUpDownResource (PrgRsc_MoveUpDown_t UpDown); static bool PrgRsc_ExchangeResources (const struct Prg_ResourceHierarchy *Rsc1, const struct Prg_ResourceHierarchy *Rsc2); -static void PrgRsc_ShowClipboard (const struct Prg_Item *Item); +static void PrgRsc_ShowClipboard (struct Prg_Item *Item); static void PrgRsc_WriteRowClipboard (unsigned NumLink, const struct PrgRsc_Link *Link); +static void PrgRsc_WriteLinkName (const struct PrgRsc_Link *Link); static void PrgRsc_GetDataOfLinkFromClipboard (struct PrgRsc_Link *Link, MYSQL_RES **mysql_res); @@ -164,7 +165,7 @@ void PrgRsc_EditResources (void) /*****************************************************************************/ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, - struct Prg_ItmRscCodes *SelectedItmRscCodes) + long ItmCod,long SelectedRscCod) { extern const char *Hlp_COURSE_Program; extern const char *Txt_Remove_resource; @@ -218,7 +219,7 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, [Prg_CHANGE_RESOURCE_LINK] = true, [Prg_END_EDIT_RES ] = true, }; - static void (*FunctionToDrawContextualIcons[Prg_NUM_LISTING_TYPES]) (void *ItmRsc) = + static void (*FunctionToDrawContextualIcons[Prg_NUM_LISTING_TYPES]) (void *ItmCod) = { [Prg_PRINT ] = NULL, [Prg_VIEW ] = NULL, @@ -235,11 +236,11 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, }; /***** Trivial check *****/ - if (SelectedItmRscCodes->ItmCod <= 0) + if (ItmCod <= 0) return; /***** Get list of item resources from database *****/ - NumResources = Prg_DB_GetListResources (&mysql_res,SelectedItmRscCodes->ItmCod, + NumResources = Prg_DB_GetListResources (&mysql_res,ItmCod, GetHiddenResources[ListingType]); if (NumResources || ShowListWhenEmpty[ListingType]) @@ -255,7 +256,7 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, case ActReqRemPrgRsc: /* Alert with button to remove resource */ Ale_ShowLastAlertAndButton (ActRemPrgRsc,PrgRsc_RESOURCE_SECTION_ID,NULL, - Prg_PutParams,SelectedItmRscCodes, + Prg_PutParamRscCod,&SelectedRscCod, Btn_REMOVE_BUTTON,Txt_Remove_resource); break; default: @@ -265,7 +266,7 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, /***** Begin box *****/ Box_BoxBegin ("100%",Txt_Resources, - FunctionToDrawContextualIcons[ListingType],SelectedItmRscCodes, + FunctionToDrawContextualIcons[ListingType],&ItmCod, Hlp_COURSE_Program,Box_NOT_CLOSABLE); /***** Table *****/ @@ -288,7 +289,7 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, case Prg_CHANGE_RESOURCE_LINK: PrgRsc_WriteRowEditResource (ListingType, NumRsc,NumResources, - &Item,SelectedItmRscCodes); + &Item,SelectedRscCod); break; default: PrgRsc_WriteRowViewResource (NumRsc,&Item); @@ -302,8 +303,10 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, case Prg_EDIT_RESOURCES: case Prg_SHOW_CLIPBOARD: case Prg_CHANGE_RESOURCE_LINK: + Prg_ResetItem (&Item); + Item.Hierarchy.ItmCod = ItmCod; PrgRsc_WriteRowNewResource (ListingType,NumResources, - SelectedItmRscCodes); + &Item,SelectedRscCod); break; default: break; @@ -329,24 +332,24 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, /************** Put contextual icons in list of item resources ***************/ /*****************************************************************************/ -static void PrgRsc_PutIconsViewResources (void *ItmRscCodes) +static void PrgRsc_PutIconsViewResources (void *ItmCod) { /***** Put icon to create a new item resource *****/ - if (ItmRscCodes) - if (((struct Prg_ItmRscCodes *) ItmRscCodes)->ItmCod > 0) + if (ItmCod) + if (*(long *) ItmCod > 0) if (Prg_CheckIfICanEditProgram ()) Ico_PutContextualIconToView (ActFrmSeePrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,ItmRscCodes); + Prg_PutParamItmCod,ItmCod); } -static void PrgRsc_PutIconsEditResources (void *ItmRscCodes) +static void PrgRsc_PutIconsEditResources (void *ItmCod) { /***** Put icon to create a new item resource *****/ - if (ItmRscCodes) - if (((struct Prg_ItmRscCodes *) ItmRscCodes)->ItmCod > 0) + if (ItmCod) + if (*(long *) ItmCod > 0) if (Prg_CheckIfICanEditProgram ()) Ico_PutContextualIconToEdit (ActFrmEdiPrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,ItmRscCodes); + Prg_PutParamItmCod,ItmCod); } /*****************************************************************************/ @@ -444,21 +447,15 @@ static void PrgRsc_WriteRowViewResource (unsigned NumRsc, static void PrgRsc_WriteRowEditResource (Prg_ListingType_t ListingType, unsigned NumRsc,unsigned NumResources, - const struct Prg_Item *Item, - struct Prg_ItmRscCodes *SelectedItmRscCodes) + struct Prg_Item *Item, + long SelectedRscCod) { - struct Prg_ItmRscCodes ItmRscCodes; - - ItmRscCodes.ItmCod = Item->Hierarchy.ItmCod; - ItmRscCodes.RscCod = Item->Resource.Hierarchy.RscCod; - /***** Begin row *****/ HTM_TR_Begin (NULL); /***** Forms to remove/edit this item resource *****/ HTM_TD_Begin ("class=\"PRG_COL1 LT %s\"",The_GetColorRows1 (1)); - PrgRsc_PutFormsToRemEditOneResource (NumRsc,NumResources, - &ItmRscCodes,Item->Resource.Hierarchy.Hidden); + PrgRsc_PutFormsToRemEditOneResource (Item,NumRsc,NumResources); HTM_TD_End (); /***** Resource number *****/ @@ -470,7 +467,7 @@ static void PrgRsc_WriteRowEditResource (Prg_ListingType_t ListingType, /***** Title *****/ HTM_TD_Begin ("class=\"PRG_MAIN LT %s\"",The_GetColorRows1 (1)); Frm_BeginFormAnchor (ActRenPrgRsc,PrgRsc_RESOURCE_SECTION_ID); - Prg_PutParams (&ItmRscCodes); + Prg_PutParamRscCod (&Item->Resource.Hierarchy.RscCod); HTM_INPUT_TEXT ("Title",PrgRsc_MAX_CHARS_PROGRAM_RESOURCE_TITLE,Item->Resource.Title, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", @@ -481,7 +478,7 @@ static void PrgRsc_WriteRowEditResource (Prg_ListingType_t ListingType, /***** Icon to edit link *****/ HTM_TD_Begin ("class=\"PRG_MAIN RT %s\"",The_GetColorRows1 (1)); Ico_PutContextualIconToGetLink (ActSeeCliPrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,&ItmRscCodes); + Prg_PutParamRscCod,&Item->Resource.Hierarchy.RscCod); HTM_TD_End (); /***** Link *****/ @@ -492,7 +489,7 @@ static void PrgRsc_WriteRowEditResource (Prg_ListingType_t ListingType, /* Show clipboard to change resource link */ if (ListingType == Prg_SHOW_CLIPBOARD && - Item->Resource.Hierarchy.RscCod == SelectedItmRscCodes->RscCod) + Item->Resource.Hierarchy.RscCod == SelectedRscCod) PrgRsc_ShowClipboard (Item); HTM_TD_End (); @@ -507,16 +504,9 @@ static void PrgRsc_WriteRowEditResource (Prg_ListingType_t ListingType, static void PrgRsc_WriteRowNewResource (Prg_ListingType_t ListingType, unsigned NumResources, - struct Prg_ItmRscCodes *SelectedItmRscCodes) + struct Prg_Item *Item, + long SelectedRscCod) { - struct Prg_Item Item; - struct Prg_ItmRscCodes ItmRscCodes; - - Prg_ResetItem (&Item); - Item.Hierarchy.ItmCod = SelectedItmRscCodes->ItmCod; - ItmRscCodes.ItmCod = Item.Hierarchy.ItmCod; - ItmRscCodes.RscCod = Item.Resource.Hierarchy.RscCod; - /***** Begin row *****/ HTM_TR_Begin (NULL); @@ -533,7 +523,7 @@ static void PrgRsc_WriteRowNewResource (Prg_ListingType_t ListingType, /***** Title *****/ HTM_TD_Begin ("class=\"PRG_MAIN LT %s\"",The_GetColorRows1 (1)); Frm_BeginFormAnchor (ActNewPrgRsc,PrgRsc_RESOURCE_SECTION_ID); - Prg_PutParams (&ItmRscCodes); + Prg_PutParamItmCod (&Item->Hierarchy.ItmCod); HTM_INPUT_TEXT ("Title",PrgRsc_MAX_CHARS_PROGRAM_RESOURCE_TITLE,"", HTM_SUBMIT_ON_CHANGE, "placeholder=\"%s\"" @@ -546,7 +536,7 @@ static void PrgRsc_WriteRowNewResource (Prg_ListingType_t ListingType, /***** Icon to edit link *****/ HTM_TD_Begin ("class=\"PRG_MAIN RT %s\"",The_GetColorRows1 (1)); Ico_PutContextualIconToGetLink (ActSeeCliPrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,&ItmRscCodes); + Prg_PutParamItmCod,&Item->Hierarchy.ItmCod); HTM_TD_End (); /***** Link *****/ @@ -554,8 +544,8 @@ static void PrgRsc_WriteRowNewResource (Prg_ListingType_t ListingType, /* Show clipboard to change resource link */ if (ListingType == Prg_SHOW_CLIPBOARD && - SelectedItmRscCodes->RscCod <= 0) // No resource selected - PrgRsc_ShowClipboard (&Item); + SelectedRscCod <= 0) // No resource selected + PrgRsc_ShowClipboard (Item); HTM_TD_End (); @@ -567,10 +557,9 @@ static void PrgRsc_WriteRowNewResource (Prg_ListingType_t ListingType, /**************** Put a link (form) to edit one program item *****************/ /*****************************************************************************/ -static void PrgRsc_PutFormsToRemEditOneResource (unsigned NumRsc, - unsigned NumResources, - struct Prg_ItmRscCodes *ItmRscCodes, - bool Hidden) +static void PrgRsc_PutFormsToRemEditOneResource (struct Prg_Item *Item, + unsigned NumRsc, + unsigned NumResources) { static Act_Action_t ActionHideUnhide[2] = { @@ -585,17 +574,17 @@ static void PrgRsc_PutFormsToRemEditOneResource (unsigned NumRsc, case Rol_SYS_ADM: /***** Icon to remove item resource *****/ Ico_PutContextualIconToRemove (ActReqRemPrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,ItmRscCodes); + Prg_PutParamRscCod,&Item->Resource.Hierarchy.RscCod); /***** Icon to hide/unhide item resource *****/ Ico_PutContextualIconToHideUnhide (ActionHideUnhide,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,ItmRscCodes, - Hidden); + Prg_PutParamRscCod,&Item->Resource.Hierarchy.RscCod, + Item->Resource.Hierarchy.Hidden); /***** Icon to move up the item *****/ if (NumRsc > 0) Lay_PutContextualLinkOnlyIcon (ActUp_PrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,ItmRscCodes, + Prg_PutParamRscCod,&Item->Resource.Hierarchy.RscCod, "arrow-up.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-up.svg",Ico_BLACK,Txt_Movement_not_allowed); @@ -603,7 +592,7 @@ static void PrgRsc_PutFormsToRemEditOneResource (unsigned NumRsc, /***** Put icon to move down the item *****/ if (NumRsc < NumResources - 1) Lay_PutContextualLinkOnlyIcon (ActDwnPrgRsc,PrgRsc_RESOURCE_SECTION_ID, - Prg_PutParams,ItmRscCodes, + Prg_PutParamRscCod,&Item->Resource.Hierarchy.RscCod, "arrow-down.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-down.svg",Ico_BLACK,Txt_Movement_not_allowed); @@ -625,15 +614,6 @@ void PrgRsc_PutParamRscCod (long RscCod) Par_PutHiddenParamLong (NULL,"RscCod",RscCod); } -/*****************************************************************************/ -/***************** Get parameter with code of item resource ******************/ -/*****************************************************************************/ - -long PrgRsc_GetParamRscCod (void) - { - return Par_GetParToLong ("RscCod"); - } - /*****************************************************************************/ /******************************** Rename resource ****************************/ /*****************************************************************************/ @@ -916,20 +896,16 @@ void PrgRsc_ShowClipboardToChgLink (void) /***************** Show clipboard to change resource link ********************/ /*****************************************************************************/ -static void PrgRsc_ShowClipboard (const struct Prg_Item *Item) +static void PrgRsc_ShowClipboard (struct Prg_Item *Item) { MYSQL_RES *mysql_res; unsigned NumLink; unsigned NumLinks; struct PrgRsc_Link Link; - struct Prg_ItmRscCodes ItmRscCodes; - - ItmRscCodes.ItmCod = Item->Hierarchy.ItmCod; - ItmRscCodes.RscCod = Item->Resource.Hierarchy.RscCod; /***** Begin form *****/ Frm_BeginFormAnchor (ActChgLnkPrgRsc,PrgRsc_RESOURCE_SECTION_ID); - Prg_PutParams (&ItmRscCodes); + Prg_PutParamRscCod (&Item->Resource.Hierarchy.RscCod); /***** Begin list *****/ HTM_UL_Begin ("class=\"PRG_CLIPBOARD\""); @@ -987,16 +963,55 @@ static void PrgRsc_WriteRowClipboard (unsigned NumLink, /***** Type *****/ Ico_PutIconOn (Prg_ResourceTypesLogos[Link->Type],Ico_BLACK,Prg_ResourceTypesDB[Link->Type]); - /***** Code *****/ - if (Link->Cod > 0) - HTM_Long (Link->Cod); - else - HTM_Txt ("sin enlace"); // TODO: Need translation!!!!! + /***** Name *****/ + PrgRsc_WriteLinkName (Link); HTM_LABEL_End (); HTM_LI_End (); } +/*****************************************************************************/ +/************* Write link name (filename, assignment title...) ***************/ +/*****************************************************************************/ + +static void PrgRsc_WriteLinkName (const struct PrgRsc_Link *Link) + { + char FileName[NAME_MAX + 1]; + + /***** Trivial check: code should be > 0 *****/ + if (Link->Cod <= 0) + { + HTM_Txt ("sin enlace"); // TODO: Need translation!!!!! + return; + } + + switch (Link->Type) + { + case PrgRsc_NONE: + HTM_Txt ("sin enlace"); // TODO: Need translation!!!!! + break; + case PrgRsc_ASSIGNMENT: + case PrgRsc_CALL_FOR_EXAM: + case PrgRsc_EXAM: + case PrgRsc_GAME: + case PrgRsc_SURVEY: + Ale_ShowAlert (Ale_ERROR,"Not implemented!"); + break; + case PrgRsc_DOCUMENT: + Brw_GetFileNameFromFilCod (Link->Cod,FileName); + HTM_Txt (FileName); + break; + case PrgRsc_MARKS: + case PrgRsc_ATTENDANCE_EVENT: + case PrgRsc_FORUM_THREAD: + Ale_ShowAlert (Ale_ERROR,"Not implemented!"); + break; + default: + Err_WrongTypeExit (); + break; + } + } + /*****************************************************************************/ /***************** Show clipboard to change resource link ********************/ /*****************************************************************************/ diff --git a/swad_program_resource.h b/swad_program_resource.h index b5f591f11..cef8bf335 100644 --- a/swad_program_resource.h +++ b/swad_program_resource.h @@ -45,12 +45,11 @@ void PrgRsc_ViewResourcesAfterEdit (void); void PrgRsc_EditResources (void); void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, - struct Prg_ItmRscCodes *SelectedItmRscCodes); + long SelectedItmCod,long SelectedRscCod); void PrgRsc_GetDataOfResourceByCod (struct Prg_Item *Item); void PrgRsc_PutParamRscCod (long RscCod); -long PrgRsc_GetParamRscCod (void); void PrgRsc_CreateResource (void); diff --git a/swad_text.c b/swad_text.c index 55419f500..d5c14114b 100644 --- a/swad_text.c +++ b/swad_text.c @@ -35677,7 +35677,7 @@ const char *Txt_Resource_X_removed = // Warning: it is very important to include #elif L==2 // de "Ressource %s entfernt."; #elif L==3 // en - "Resource s removed."; + "Resource %s removed."; #elif L==4 // es "Recurso %s eliminado."; #elif L==5 // fr