diff --git a/swad_browser.h b/swad_browser.h index 6953710f..7b52f35b 100644 --- a/swad_browser.h +++ b/swad_browser.h @@ -214,7 +214,7 @@ void Brw_RecLinkFileBrowser (void); void Brw_SetDocumentAsVisible (void); void Brw_SetDocumentAsHidden (void); HidVis_HiddenOrVisible_t Brw_CheckIfFileOrFolderIsSetAsHiddenInDB (Brw_FileType_t FileType, - const char *Path); + const char *Path); void Brw_ShowFileMetadata (void); void Brw_GetLinkToDownloadFile (const char *PathInTree,const char *FileName,char *URL); diff --git a/swad_changelog.h b/swad_changelog.h index 25bcba30..a917ac6a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -633,10 +633,11 @@ Me sale este error, no s "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.39 (2023-10-27)" +#define Log_PLATFORM_VERSION "SWAD 23.40 (2023-10-28)" #define CSS_FILE "swad23.35.1.css" #define JS_FILE "swad22.49.js" /* + Version 23.40: Oct 28, 2023 Code refactoring in view/edit. (335273 lines) Version 23.39: Oct 27, 2023 Code refactoring in contracted/expanded and rubrics. (335209 lines) Version 23.38.3: Oct 27, 2023 When clicking on edition of a program item, expand it if contracted. (335155 lines) Version 23.38.2: Oct 27, 2023 Fix bug showing the question just edited. (335152 lines) diff --git a/swad_contracted_expanded.h b/swad_contracted_expanded.h index a3cd915d..3b3b9e6b 100644 --- a/swad_contracted_expanded.h +++ b/swad_contracted_expanded.h @@ -40,8 +40,4 @@ typedef enum ConExp_EXPANDED = 1, } ConExp_ContractedOrExpanded_t; -/*****************************************************************************/ -/****************************** Public prototypes ****************************/ -/*****************************************************************************/ - #endif diff --git a/swad_program.c b/swad_program.c index b348379f..d33c3db0 100644 --- a/swad_program.c +++ b/swad_program.c @@ -54,6 +54,7 @@ #include "swad_role.h" #include "swad_setting.h" #include "swad_string.h" +#include "swad_view_edit.h" /*****************************************************************************/ /************** External global variables from others modules ****************/ @@ -128,8 +129,8 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, long SelectedItmCod, long SelectedRscCod); static void Prg_PutIconToContractOrExpandItem (struct Prg_Item *Item, - ConExp_ContractedOrExpanded_t ContractedOrExpanded, - bool Editing); + ConExp_ContractedOrExpanded_t ContractedOrExpanded, + VieEdi_ViewOrEdit_t ViewingOrEditing); static void Prg_WriteItemText (long ItmCod,HidVis_HiddenOrVisible_t HiddenOrVisible); static void Prg_WriteRowToCreateItem (long ParentItmCod,unsigned FormLevel); static void Prg_SetTitleClass (char **TitleClass,unsigned Level); @@ -472,20 +473,20 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, { extern const char *HidVis_PrgClass[HidVis_NUM_HIDDEN_VISIBLE]; static unsigned UniqueId = 0; - static bool EditingProgram[Prg_NUM_LISTING_TYPES] = + static VieEdi_ViewOrEdit_t ViewingOrEditingProgram[Prg_NUM_LISTING_TYPES] = { - [Prg_PRINT ] = false, - [Prg_VIEW ] = false, - [Prg_EDIT_ITEMS ] = true, - [Prg_FORM_NEW_END_ITEM ] = true, - [Prg_FORM_NEW_CHILD_ITEM ] = true, - [Prg_FORM_EDIT_ITEM ] = true, - [Prg_END_EDIT_ITEM ] = true, - [Prg_RECEIVE_ITEM ] = true, - [Prg_EDIT_RESOURCES ] = true, - [Prg_EDIT_RESOURCE_LINK ] = true, - [Prg_CHANGE_RESOURCE_LINK] = true, - [Prg_END_EDIT_RES ] = true, + [Prg_PRINT ] = VieEdi_VIEW, + [Prg_VIEW ] = VieEdi_VIEW, + [Prg_EDIT_ITEMS ] = VieEdi_EDIT, + [Prg_FORM_NEW_END_ITEM ] = VieEdi_EDIT, + [Prg_FORM_NEW_CHILD_ITEM ] = VieEdi_EDIT, + [Prg_FORM_EDIT_ITEM ] = VieEdi_EDIT, + [Prg_END_EDIT_ITEM ] = VieEdi_EDIT, + [Prg_RECEIVE_ITEM ] = VieEdi_EDIT, + [Prg_EDIT_RESOURCES ] = VieEdi_EDIT, + [Prg_EDIT_RESOURCE_LINK ] = VieEdi_EDIT, + [Prg_CHANGE_RESOURCE_LINK] = VieEdi_EDIT, + [Prg_END_EDIT_RES ] = VieEdi_EDIT, }; static const char *RowSpan[ConExp_NUM_CONTRACTED_EXPANDED] = { @@ -512,7 +513,8 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, break; } - if (EditingProgram[ListingType] || HiddenOrVisible == HidVis_VISIBLE) + if (ViewingOrEditingProgram[ListingType] == VieEdi_EDIT || + HiddenOrVisible == HidVis_VISIBLE) { /***** Increase number in level *****/ Prg_IncreaseNumberInLevel (Item->Hierarchy.Level); @@ -541,11 +543,12 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, /* Expand/contract this program item */ HTM_TD_Begin ("class=\"LT %s\"%s", The_GetColorRows (),RowSpan[ContractedOrExpanded]); - Prg_PutIconToContractOrExpandItem (Item,ContractedOrExpanded,EditingProgram[ListingType]); + Prg_PutIconToContractOrExpandItem (Item,ContractedOrExpanded, + ViewingOrEditingProgram[ListingType]); HTM_TD_End (); /* Forms to remove/edit this program item */ - if (EditingProgram[ListingType]) + if (ViewingOrEditingProgram[ListingType] == VieEdi_EDIT) { HTM_TD_Begin ("class=\"PRG_COL1 LT %s\"%s", The_GetColorRows (),RowSpan[ContractedOrExpanded]); @@ -666,15 +669,15 @@ static void Prg_WriteRowItem (Prg_ListingType_t ListingType, /*****************************************************************************/ static void Prg_PutIconToContractOrExpandItem (struct Prg_Item *Item, - ConExp_ContractedOrExpanded_t ContractedOrExpanded, - bool Editing) + ConExp_ContractedOrExpanded_t ContractedOrExpanded, + VieEdi_ViewOrEdit_t ViewingOrEditing) { static const Act_Action_t NextAction[ConExp_NUM_CONTRACTED_EXPANDED][2] = { - [ConExp_CONTRACTED][false] = ActExpSeePrgItm, // Contracted, Not editing ==> action to expand - [ConExp_CONTRACTED][true ] = ActExpEdiPrgItm, // Contracted, Editing ==> action to expand - [ConExp_EXPANDED ][false] = ActConSeePrgItm, // Expanded , Not editing ==> action to contract - [ConExp_EXPANDED ][true ] = ActConEdiPrgItm, // Expanded , Editing ==> action to contract + [ConExp_CONTRACTED][VieEdi_VIEW] = ActExpSeePrgItm, // Contracted, Not editing ==> action to expand + [ConExp_CONTRACTED][VieEdi_EDIT] = ActExpEdiPrgItm, // Contracted, Editing ==> action to expand + [ConExp_EXPANDED ][VieEdi_VIEW] = ActConSeePrgItm, // Expanded , Not editing ==> action to contract + [ConExp_EXPANDED ][VieEdi_EDIT] = ActConEdiPrgItm, // Expanded , Editing ==> action to contract }; static void (*PutContextualIcon[ConExp_NUM_CONTRACTED_EXPANDED]) (const Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args) = @@ -684,7 +687,7 @@ static void Prg_PutIconToContractOrExpandItem (struct Prg_Item *Item, }; /***** Icon to hide/unhide program item *****/ - PutContextualIcon[ContractedOrExpanded] (NextAction[ContractedOrExpanded][Editing], + PutContextualIcon[ContractedOrExpanded] (NextAction[ContractedOrExpanded][ViewingOrEditing], Prg_HIGHLIGHTED_SECTION_ID, Prg_PutParItmCod,&Item->Hierarchy.ItmCod); } diff --git a/swad_program_resource.c b/swad_program_resource.c index ce77c4e2..ca06ea06 100644 --- a/swad_program_resource.c +++ b/swad_program_resource.c @@ -43,6 +43,7 @@ #include "swad_program.h" #include "swad_program_database.h" #include "swad_resource_database.h" +#include "swad_view_edit.h" /*****************************************************************************/ /************** External global variables from others modules ****************/ @@ -79,9 +80,11 @@ static void PrgRsc_GetResourceDataFromRow (MYSQL_RES *mysql_res, static void PrgRsc_WriteRowViewResource (unsigned NumRsc, const struct Prg_Item *Item); static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources, - struct Prg_Item *Item,bool EditLink); + struct Prg_Item *Item, + VieEdi_ViewOrEdit_t ViewOrEditLink); static void PrgRsc_WriteRowNewResource (unsigned NumResources, - struct Prg_Item *Item,bool EditLink); + struct Prg_Item *Item, + VieEdi_ViewOrEdit_t ViewOrEditLink); static void PrgRsc_PutFormsToRemEditOneResource (struct Prg_Item *Item, unsigned NumRsc, unsigned NumResources); @@ -152,37 +155,42 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, MYSQL_RES *mysql_res; unsigned NumRsc; unsigned NumResources; - bool EditingResourcesOfThisItem; + VieEdi_ViewOrEdit_t ViewingOrEditingResourcesOfThisItem; char *Title; - static bool Editing[Prg_NUM_LISTING_TYPES] = + static VieEdi_ViewOrEdit_t ViewingOrEditing[Prg_NUM_LISTING_TYPES] = { - [Prg_PRINT ] = false, - [Prg_VIEW ] = false, - [Prg_EDIT_ITEMS ] = true, - [Prg_FORM_NEW_END_ITEM ] = true, - [Prg_FORM_NEW_CHILD_ITEM ] = true, - [Prg_FORM_EDIT_ITEM ] = true, - [Prg_END_EDIT_ITEM ] = true, - [Prg_RECEIVE_ITEM ] = true, - [Prg_EDIT_RESOURCES ] = true, - [Prg_EDIT_RESOURCE_LINK ] = true, - [Prg_CHANGE_RESOURCE_LINK] = true, - [Prg_END_EDIT_RES ] = true, + [Prg_PRINT ] = VieEdi_VIEW, + [Prg_VIEW ] = VieEdi_VIEW, + [Prg_EDIT_ITEMS ] = VieEdi_EDIT, + [Prg_FORM_NEW_END_ITEM ] = VieEdi_EDIT, + [Prg_FORM_NEW_CHILD_ITEM ] = VieEdi_EDIT, + [Prg_FORM_EDIT_ITEM ] = VieEdi_EDIT, + [Prg_END_EDIT_ITEM ] = VieEdi_EDIT, + [Prg_RECEIVE_ITEM ] = VieEdi_EDIT, + [Prg_EDIT_RESOURCES ] = VieEdi_EDIT, + [Prg_EDIT_RESOURCE_LINK ] = VieEdi_EDIT, + [Prg_CHANGE_RESOURCE_LINK] = VieEdi_EDIT, + [Prg_END_EDIT_RES ] = VieEdi_EDIT, }; - static bool EditingResources[Prg_NUM_LISTING_TYPES] = + static VieEdi_ViewOrEdit_t ViewingOrEditingResources[Prg_NUM_LISTING_TYPES] = { - [Prg_PRINT ] = false, - [Prg_VIEW ] = false, - [Prg_EDIT_ITEMS ] = false, - [Prg_FORM_NEW_END_ITEM ] = false, - [Prg_FORM_NEW_CHILD_ITEM ] = false, - [Prg_FORM_EDIT_ITEM ] = false, - [Prg_END_EDIT_ITEM ] = false, - [Prg_RECEIVE_ITEM ] = false, - [Prg_EDIT_RESOURCES ] = true, - [Prg_EDIT_RESOURCE_LINK ] = true, - [Prg_CHANGE_RESOURCE_LINK] = true, - [Prg_END_EDIT_RES ] = false, + [Prg_PRINT ] = VieEdi_VIEW, + [Prg_VIEW ] = VieEdi_VIEW, + [Prg_EDIT_ITEMS ] = VieEdi_VIEW, + [Prg_FORM_NEW_END_ITEM ] = VieEdi_VIEW, + [Prg_FORM_NEW_CHILD_ITEM ] = VieEdi_VIEW, + [Prg_FORM_EDIT_ITEM ] = VieEdi_VIEW, + [Prg_END_EDIT_ITEM ] = VieEdi_VIEW, + [Prg_RECEIVE_ITEM ] = VieEdi_VIEW, + [Prg_EDIT_RESOURCES ] = VieEdi_EDIT, + [Prg_EDIT_RESOURCE_LINK ] = VieEdi_EDIT, + [Prg_CHANGE_RESOURCE_LINK] = VieEdi_EDIT, + [Prg_END_EDIT_RES ] = VieEdi_VIEW, + }; + static void (*PrgRsc_PutIconsResources[VieEdi_NUM_VIEW_EDIT]) (void *ItmCod) = + { + PrgRsc_PutIconsViewResources, + PrgRsc_PutIconsEditResources, }; /***** Trivial check *****/ @@ -191,9 +199,9 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, /***** Get list of item resources from database *****/ NumResources = Prg_DB_GetListResources (&mysql_res,Item->Hierarchy.ItmCod, - EditingResources[ListingType]); + ViewingOrEditingResources[ListingType] == VieEdi_EDIT); - if (NumResources || Editing[ListingType]) + if (NumResources || ViewingOrEditing[ListingType] == VieEdi_EDIT) { if (Item->Hierarchy.ItmCod == SelectedItmCod) { @@ -211,24 +219,27 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, } /***** Begin box *****/ - EditingResourcesOfThisItem = EditingResources[ListingType] && - (Item->Hierarchy.ItmCod == SelectedItmCod); + ViewingOrEditingResourcesOfThisItem = ViewingOrEditingResources[ListingType] == VieEdi_EDIT && + (Item->Hierarchy.ItmCod == SelectedItmCod) ? VieEdi_EDIT : + VieEdi_VIEW; - if (Editing[ListingType]) + switch (ViewingOrEditing[ListingType]) { - if (asprintf (&Title,Txt_Resources_of_X,Item->Title) < 0) - Err_NotEnoughMemoryExit (); - Box_BoxBegin ("100%",Title, - EditingResourcesOfThisItem ? PrgRsc_PutIconsViewResources : - PrgRsc_PutIconsEditResources, - &Item->Hierarchy.ItmCod, - Hlp_COURSE_Program,Box_NOT_CLOSABLE); - free (Title); + case VieEdi_VIEW: + Box_BoxBegin ("100%",NULL, + NULL,NULL, + NULL,Box_NOT_CLOSABLE); + break; + case VieEdi_EDIT: + if (asprintf (&Title,Txt_Resources_of_X,Item->Title) < 0) + Err_NotEnoughMemoryExit (); + Box_BoxBegin ("100%",Title, + PrgRsc_PutIconsResources[ViewingOrEditingResourcesOfThisItem], + &Item->Hierarchy.ItmCod, + Hlp_COURSE_Program,Box_NOT_CLOSABLE); + free (Title); + break; } - else - Box_BoxBegin ("100%",NULL, - NULL,NULL, - NULL,Box_NOT_CLOSABLE); /***** Table *****/ HTM_TABLE_BeginWidePadding (2); @@ -243,21 +254,27 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType, PrgRsc_GetResourceDataFromRow (mysql_res,Item); /* Show item */ - if (EditingResourcesOfThisItem) - PrgRsc_WriteRowEditResource (NumRsc,NumResources,Item, - (ListingType == Prg_EDIT_RESOURCE_LINK && - Item->Resource.Hierarchy.RscCod == SelectedRscCod)); // Edit this link? - else - PrgRsc_WriteRowViewResource (NumRsc,Item); + switch (ViewingOrEditingResourcesOfThisItem) + { + case VieEdi_VIEW: + PrgRsc_WriteRowViewResource (NumRsc,Item); + break; + case VieEdi_EDIT: + PrgRsc_WriteRowEditResource (NumRsc,NumResources,Item, + (ListingType == Prg_EDIT_RESOURCE_LINK && + Item->Resource.Hierarchy.RscCod == SelectedRscCod) ? VieEdi_EDIT : + VieEdi_VIEW); + } } /***** Form to create a new resource *****/ - if (EditingResourcesOfThisItem) + if (ViewingOrEditingResourcesOfThisItem == VieEdi_EDIT) { Prg_ResetResource (Item); PrgRsc_WriteRowNewResource (NumResources,Item, (ListingType == Prg_EDIT_RESOURCE_LINK && - Item->Resource.Hierarchy.RscCod == SelectedRscCod)); // Edit this link? + Item->Resource.Hierarchy.RscCod == SelectedRscCod) ? VieEdi_EDIT : + VieEdi_VIEW); } /***** End table *****/ @@ -395,7 +412,8 @@ static void PrgRsc_WriteRowViewResource (unsigned NumRsc, /*****************************************************************************/ static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources, - struct Prg_Item *Item,bool EditLink) + struct Prg_Item *Item, + VieEdi_ViewOrEdit_t ViewOrEditLink) { /***** Begin row *****/ HTM_TR_Begin (NULL); @@ -427,17 +445,20 @@ static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources, HTM_BR (); /* Edit link showing clipboard / Show current link */ - if (EditLink) - { - /* Show clipboard to change resource link */ - Frm_BeginFormAnchor (ActChgLnkPrgRsc,PrgRsc_RESOURCE_SECTION_ID); - ParCod_PutPar (ParCod_Rsc,Item->Resource.Hierarchy.RscCod); - Rsc_ShowClipboardToChangeLink (&Item->Resource.Link); - Frm_EndForm (); + switch (ViewOrEditLink) + { + case VieEdi_VIEW: + /* Show current link */ + Rsc_WriteLinkName (&Item->Resource.Link,Frm_PUT_FORM_TO_GO); + break; + case VieEdi_EDIT: + /* Show clipboard to change resource link */ + Frm_BeginFormAnchor (ActChgLnkPrgRsc,PrgRsc_RESOURCE_SECTION_ID); + ParCod_PutPar (ParCod_Rsc,Item->Resource.Hierarchy.RscCod); + Rsc_ShowClipboardToChangeLink (&Item->Resource.Link); + Frm_EndForm (); + break; } - else - /* Show current link */ - Rsc_WriteLinkName (&Item->Resource.Link,Frm_PUT_FORM_TO_GO); HTM_TD_End (); @@ -450,7 +471,8 @@ static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources, /*****************************************************************************/ static void PrgRsc_WriteRowNewResource (unsigned NumResources, - struct Prg_Item *Item,bool EditLink) + struct Prg_Item *Item, + VieEdi_ViewOrEdit_t ViewOrEditLink) { extern const char *Txt_New_resource; @@ -483,7 +505,7 @@ static void PrgRsc_WriteRowNewResource (unsigned NumResources, Frm_EndForm (); /* Edit link showing clipboard? */ - if (EditLink) + if (ViewOrEditLink == VieEdi_EDIT) { HTM_BR (); diff --git a/swad_syllabus.c b/swad_syllabus.c index bbe5f293..cf815a04 100644 --- a/swad_syllabus.c +++ b/swad_syllabus.c @@ -136,7 +136,7 @@ void Syl_ResetSyllabus (struct Syl_Syllabus *Syllabus) { Syllabus->PathDir[0] = '\0'; Syllabus->NumItem = 0; - Syllabus->EditionIsActive = false; + Syllabus->ViewingOrEditing = VieEdi_VIEW; Syllabus->WhichSyllabus = Syl_DEFAULT_WHICH_SYLLABUS; } @@ -244,14 +244,15 @@ bool Syl_CheckAndEditSyllabus (struct Syl_Syllabus *Syllabus) case ActLftIteSylLec: case ActLftIteSylPra: case ActInsIteSylLec: case ActInsIteSylPra: case ActModIteSylLec: case ActModIteSylPra: - Syllabus->EditionIsActive = true; + Syllabus->ViewingOrEditing = VieEdi_EDIT; break; default: - Syllabus->EditionIsActive = false; + Syllabus->ViewingOrEditing = VieEdi_VIEW; break; } - if (Syllabus->EditionIsActive || Syl_LstItemsSyllabus.NumItems) + if (Syllabus->ViewingOrEditing == VieEdi_EDIT || + Syl_LstItemsSyllabus.NumItems) { /***** Write the current syllabus *****/ Syl_ShowSyllabus (Syllabus); @@ -521,81 +522,84 @@ static void Syl_ShowSyllabus (struct Syl_Syllabus *Syllabus) extern const char *Hlp_COURSE_Syllabus; extern const char *Txt_Done; unsigned NumItem; - int i; - int NumButtons = Syllabus->EditionIsActive ? 5 : - 0; + int Col; + static const char **HelpLink[VieEdi_NUM_VIEW_EDIT] = + { + [VieEdi_VIEW] = &Hlp_COURSE_Syllabus, + [VieEdi_EDIT] = &Hlp_COURSE_Syllabus_edit, + }; + static int NumButtons[VieEdi_NUM_VIEW_EDIT] = + { + [VieEdi_VIEW] = 0, + [VieEdi_EDIT] = 5, + }; bool ShowRowInsertNewItem = (Gbl.Action.Act == ActInsIteSylLec || Gbl.Action.Act == ActInsIteSylPra || Gbl.Action.Act == ActModIteSylLec || Gbl.Action.Act == ActModIteSylPra || Gbl.Action.Act == ActRgtIteSylLec || Gbl.Action.Act == ActRgtIteSylPra || Gbl.Action.Act == ActLftIteSylLec || Gbl.Action.Act == ActLftIteSylPra); bool ICanEdit = Gbl.Usrs.Me.Role.Logged == Rol_TCH || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM; - bool PutIconToEdit = ICanEdit && !Syllabus->EditionIsActive; + bool PutIconToEdit = Syllabus->ViewingOrEditing == VieEdi_VIEW && ICanEdit; /***** Begin box *****/ - if (PutIconToEdit) - Box_BoxBegin (NULL,Txt_INFO_TITLE[Gbl.Crs.Info.Type], - Inf_PutIconToEditInfo,&Gbl.Crs.Info.Type, - Syllabus->EditionIsActive ? Hlp_COURSE_Syllabus_edit : - Hlp_COURSE_Syllabus, - Box_NOT_CLOSABLE); - else - Box_BoxBegin (NULL,Txt_INFO_TITLE[Gbl.Crs.Info.Type], - NULL,NULL, - Syllabus->EditionIsActive ? Hlp_COURSE_Syllabus_edit : - Hlp_COURSE_Syllabus, - Box_NOT_CLOSABLE); + Box_BoxBegin (NULL,Txt_INFO_TITLE[Gbl.Crs.Info.Type], + PutIconToEdit ? Inf_PutIconToEditInfo : + NULL, + PutIconToEdit ? &Gbl.Crs.Info.Type : + NULL, + *HelpLink[Syllabus->ViewingOrEditing],Box_NOT_CLOSABLE); - Syl_PutFormWhichSyllabus (Syllabus->WhichSyllabus); + /****** Form to select syllabus *****/ + Syl_PutFormWhichSyllabus (Syllabus->WhichSyllabus); - /***** Begin table *****/ - HTM_TABLE_BeginWide (); + /***** Begin table *****/ + HTM_TABLE_BeginWide (); - /***** Set width of columns of the table *****/ - HTM_Txt ("