Version 21.114: Jul 25, 2022 New form and action to create item resource.

This commit is contained in:
acanas 2022-07-25 01:01:20 +02:00
parent 64896a0f1d
commit 7ae0917363
12 changed files with 249 additions and 124 deletions

View File

@ -57,7 +57,7 @@ void ID_DB_InsertANewUsrID (long UsrCod,
void ID_DB_ConfirmUsrID (long UsrCod,const char ID[ID_MAX_BYTES_USR_ID + 1]) void ID_DB_ConfirmUsrID (long UsrCod,const char ID[ID_MAX_BYTES_USR_ID + 1])
{ {
DB_QueryINSERT ("can not confirm a user's ID", DB_QueryUPDATE ("can not confirm a user's ID",
"UPDATE usr_ids" "UPDATE usr_ids"
" SET Confirmed='Y'" " SET Confirmed='Y'"
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld"

View File

@ -446,6 +446,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActFrmSeePrgRsc ] = {1925,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ViewResourcesAfterEdit ,NULL}, [ActFrmSeePrgRsc ] = {1925,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ViewResourcesAfterEdit ,NULL},
[ActFrmEdiPrgRsc ] = {1918,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_EditResources ,NULL}, [ActFrmEdiPrgRsc ] = {1918,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_EditResources ,NULL},
[ActNewPrgRsc ] = {1929,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_CreateResource ,NULL},
[ActRenPrgRsc ] = {1928,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_RenameResource ,NULL}, [ActRenPrgRsc ] = {1928,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_RenameResource ,NULL},
[ActReqRemPrgRsc ] = {1919,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ReqRemResource ,NULL}, [ActReqRemPrgRsc ] = {1919,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ReqRemResource ,NULL},
[ActRemPrgRsc ] = {1920,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_RemoveResource ,NULL}, [ActRemPrgRsc ] = {1920,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_RemoveResource ,NULL},
@ -3767,6 +3768,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActEdiPrg, // #1926 ActEdiPrg, // #1926
ActSeePrgItm, // #1927 ActSeePrgItm, // #1927
ActRenPrgRsc, // #1928 ActRenPrgRsc, // #1928
ActNewPrgRsc, // #1929
}; };
/*****************************************************************************/ /*****************************************************************************/

View File

@ -65,7 +65,7 @@ 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_MAX_ACTION_COD 1928 #define Act_MAX_ACTION_COD 1929
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@ -412,114 +412,115 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActRgtPrgItm (ActChgCrsSta + 29) #define ActRgtPrgItm (ActChgCrsSta + 29)
#define ActFrmSeePrgRsc (ActChgCrsSta + 30) #define ActFrmSeePrgRsc (ActChgCrsSta + 30)
#define ActFrmEdiPrgRsc (ActChgCrsSta + 31) #define ActFrmEdiPrgRsc (ActChgCrsSta + 31)
#define ActRenPrgRsc (ActChgCrsSta + 32) #define ActNewPrgRsc (ActChgCrsSta + 32)
#define ActReqRemPrgRsc (ActChgCrsSta + 33) #define ActRenPrgRsc (ActChgCrsSta + 33)
#define ActRemPrgRsc (ActChgCrsSta + 34) #define ActReqRemPrgRsc (ActChgCrsSta + 34)
#define ActHidPrgRsc (ActChgCrsSta + 35) #define ActRemPrgRsc (ActChgCrsSta + 35)
#define ActUnhPrgRsc (ActChgCrsSta + 36) #define ActHidPrgRsc (ActChgCrsSta + 36)
#define ActUp_PrgRsc (ActChgCrsSta + 37) #define ActUnhPrgRsc (ActChgCrsSta + 37)
#define ActDwnPrgRsc (ActChgCrsSta + 38) #define ActUp_PrgRsc (ActChgCrsSta + 38)
#define ActEdiTchGui (ActChgCrsSta + 39) #define ActDwnPrgRsc (ActChgCrsSta + 39)
#define ActSeeSylLec (ActChgCrsSta + 40) #define ActEdiTchGui (ActChgCrsSta + 40)
#define ActSeeSylPra (ActChgCrsSta + 41) #define ActSeeSylLec (ActChgCrsSta + 41)
#define ActEdiSylLec (ActChgCrsSta + 42) #define ActSeeSylPra (ActChgCrsSta + 42)
#define ActEdiSylPra (ActChgCrsSta + 43) #define ActEdiSylLec (ActChgCrsSta + 43)
#define ActDelItmSylLec (ActChgCrsSta + 44) #define ActEdiSylPra (ActChgCrsSta + 44)
#define ActDelItmSylPra (ActChgCrsSta + 45) #define ActDelItmSylLec (ActChgCrsSta + 45)
#define ActUp_IteSylLec (ActChgCrsSta + 46) #define ActDelItmSylPra (ActChgCrsSta + 46)
#define ActUp_IteSylPra (ActChgCrsSta + 47) #define ActUp_IteSylLec (ActChgCrsSta + 47)
#define ActDwnIteSylLec (ActChgCrsSta + 48) #define ActUp_IteSylPra (ActChgCrsSta + 48)
#define ActDwnIteSylPra (ActChgCrsSta + 49) #define ActDwnIteSylLec (ActChgCrsSta + 49)
#define ActRgtIteSylLec (ActChgCrsSta + 50) #define ActDwnIteSylPra (ActChgCrsSta + 50)
#define ActRgtIteSylPra (ActChgCrsSta + 51) #define ActRgtIteSylLec (ActChgCrsSta + 51)
#define ActLftIteSylLec (ActChgCrsSta + 52) #define ActRgtIteSylPra (ActChgCrsSta + 52)
#define ActLftIteSylPra (ActChgCrsSta + 53) #define ActLftIteSylLec (ActChgCrsSta + 53)
#define ActInsIteSylLec (ActChgCrsSta + 54) #define ActLftIteSylPra (ActChgCrsSta + 54)
#define ActInsIteSylPra (ActChgCrsSta + 55) #define ActInsIteSylLec (ActChgCrsSta + 55)
#define ActModIteSylLec (ActChgCrsSta + 56) #define ActInsIteSylPra (ActChgCrsSta + 56)
#define ActModIteSylPra (ActChgCrsSta + 57) #define ActModIteSylLec (ActChgCrsSta + 57)
#define ActModIteSylPra (ActChgCrsSta + 58)
#define ActEdiBib (ActChgCrsSta + 58) #define ActEdiBib (ActChgCrsSta + 59)
#define ActEdiFAQ (ActChgCrsSta + 59) #define ActEdiFAQ (ActChgCrsSta + 60)
#define ActEdiCrsLnk (ActChgCrsSta + 60) #define ActEdiCrsLnk (ActChgCrsSta + 61)
#define ActChgFrcReaCrsInf (ActChgCrsSta + 61) #define ActChgFrcReaCrsInf (ActChgCrsSta + 62)
#define ActChgFrcReaTchGui (ActChgCrsSta + 62) #define ActChgFrcReaTchGui (ActChgCrsSta + 63)
#define ActChgFrcReaSylLec (ActChgCrsSta + 63) #define ActChgFrcReaSylLec (ActChgCrsSta + 64)
#define ActChgFrcReaSylPra (ActChgCrsSta + 64) #define ActChgFrcReaSylPra (ActChgCrsSta + 65)
#define ActChgFrcReaBib (ActChgCrsSta + 65) #define ActChgFrcReaBib (ActChgCrsSta + 66)
#define ActChgFrcReaFAQ (ActChgCrsSta + 66) #define ActChgFrcReaFAQ (ActChgCrsSta + 67)
#define ActChgFrcReaCrsLnk (ActChgCrsSta + 67) #define ActChgFrcReaCrsLnk (ActChgCrsSta + 68)
#define ActChgHavReaCrsInf (ActChgCrsSta + 68) #define ActChgHavReaCrsInf (ActChgCrsSta + 69)
#define ActChgHavReaTchGui (ActChgCrsSta + 69) #define ActChgHavReaTchGui (ActChgCrsSta + 70)
#define ActChgHavReaSylLec (ActChgCrsSta + 70) #define ActChgHavReaSylLec (ActChgCrsSta + 71)
#define ActChgHavReaSylPra (ActChgCrsSta + 71) #define ActChgHavReaSylPra (ActChgCrsSta + 72)
#define ActChgHavReaBib (ActChgCrsSta + 72) #define ActChgHavReaBib (ActChgCrsSta + 73)
#define ActChgHavReaFAQ (ActChgCrsSta + 73) #define ActChgHavReaFAQ (ActChgCrsSta + 74)
#define ActChgHavReaCrsLnk (ActChgCrsSta + 74) #define ActChgHavReaCrsLnk (ActChgCrsSta + 75)
#define ActSelInfSrcCrsInf (ActChgCrsSta + 75) #define ActSelInfSrcCrsInf (ActChgCrsSta + 76)
#define ActSelInfSrcTchGui (ActChgCrsSta + 76) #define ActSelInfSrcTchGui (ActChgCrsSta + 77)
#define ActSelInfSrcSylLec (ActChgCrsSta + 77) #define ActSelInfSrcSylLec (ActChgCrsSta + 78)
#define ActSelInfSrcSylPra (ActChgCrsSta + 78) #define ActSelInfSrcSylPra (ActChgCrsSta + 79)
#define ActSelInfSrcBib (ActChgCrsSta + 79) #define ActSelInfSrcBib (ActChgCrsSta + 80)
#define ActSelInfSrcFAQ (ActChgCrsSta + 80) #define ActSelInfSrcFAQ (ActChgCrsSta + 81)
#define ActSelInfSrcCrsLnk (ActChgCrsSta + 81) #define ActSelInfSrcCrsLnk (ActChgCrsSta + 82)
#define ActRcvURLCrsInf (ActChgCrsSta + 82) #define ActRcvURLCrsInf (ActChgCrsSta + 83)
#define ActRcvURLTchGui (ActChgCrsSta + 83) #define ActRcvURLTchGui (ActChgCrsSta + 84)
#define ActRcvURLSylLec (ActChgCrsSta + 84) #define ActRcvURLSylLec (ActChgCrsSta + 85)
#define ActRcvURLSylPra (ActChgCrsSta + 85) #define ActRcvURLSylPra (ActChgCrsSta + 86)
#define ActRcvURLBib (ActChgCrsSta + 86) #define ActRcvURLBib (ActChgCrsSta + 87)
#define ActRcvURLFAQ (ActChgCrsSta + 87) #define ActRcvURLFAQ (ActChgCrsSta + 88)
#define ActRcvURLCrsLnk (ActChgCrsSta + 88) #define ActRcvURLCrsLnk (ActChgCrsSta + 89)
#define ActRcvPagCrsInf (ActChgCrsSta + 89) #define ActRcvPagCrsInf (ActChgCrsSta + 90)
#define ActRcvPagTchGui (ActChgCrsSta + 90) #define ActRcvPagTchGui (ActChgCrsSta + 91)
#define ActRcvPagSylLec (ActChgCrsSta + 91) #define ActRcvPagSylLec (ActChgCrsSta + 92)
#define ActRcvPagSylPra (ActChgCrsSta + 92) #define ActRcvPagSylPra (ActChgCrsSta + 93)
#define ActRcvPagBib (ActChgCrsSta + 93) #define ActRcvPagBib (ActChgCrsSta + 94)
#define ActRcvPagFAQ (ActChgCrsSta + 94) #define ActRcvPagFAQ (ActChgCrsSta + 95)
#define ActRcvPagCrsLnk (ActChgCrsSta + 95) #define ActRcvPagCrsLnk (ActChgCrsSta + 96)
#define ActEditorCrsInf (ActChgCrsSta + 96) #define ActEditorCrsInf (ActChgCrsSta + 97)
#define ActEditorTchGui (ActChgCrsSta + 97) #define ActEditorTchGui (ActChgCrsSta + 98)
#define ActEditorSylLec (ActChgCrsSta + 98) #define ActEditorSylLec (ActChgCrsSta + 99)
#define ActEditorSylPra (ActChgCrsSta + 99) #define ActEditorSylPra (ActChgCrsSta + 100)
#define ActEditorBib (ActChgCrsSta + 100) #define ActEditorBib (ActChgCrsSta + 101)
#define ActEditorFAQ (ActChgCrsSta + 101) #define ActEditorFAQ (ActChgCrsSta + 102)
#define ActEditorCrsLnk (ActChgCrsSta + 102) #define ActEditorCrsLnk (ActChgCrsSta + 103)
#define ActPlaTxtEdiCrsInf (ActChgCrsSta + 103) #define ActPlaTxtEdiCrsInf (ActChgCrsSta + 104)
#define ActPlaTxtEdiTchGui (ActChgCrsSta + 104) #define ActPlaTxtEdiTchGui (ActChgCrsSta + 105)
#define ActPlaTxtEdiSylLec (ActChgCrsSta + 105) #define ActPlaTxtEdiSylLec (ActChgCrsSta + 106)
#define ActPlaTxtEdiSylPra (ActChgCrsSta + 106) #define ActPlaTxtEdiSylPra (ActChgCrsSta + 107)
#define ActPlaTxtEdiBib (ActChgCrsSta + 107) #define ActPlaTxtEdiBib (ActChgCrsSta + 108)
#define ActPlaTxtEdiFAQ (ActChgCrsSta + 108) #define ActPlaTxtEdiFAQ (ActChgCrsSta + 109)
#define ActPlaTxtEdiCrsLnk (ActChgCrsSta + 109) #define ActPlaTxtEdiCrsLnk (ActChgCrsSta + 110)
#define ActRchTxtEdiCrsInf (ActChgCrsSta + 110) #define ActRchTxtEdiCrsInf (ActChgCrsSta + 111)
#define ActRchTxtEdiTchGui (ActChgCrsSta + 111) #define ActRchTxtEdiTchGui (ActChgCrsSta + 112)
#define ActRchTxtEdiSylLec (ActChgCrsSta + 112) #define ActRchTxtEdiSylLec (ActChgCrsSta + 113)
#define ActRchTxtEdiSylPra (ActChgCrsSta + 113) #define ActRchTxtEdiSylPra (ActChgCrsSta + 114)
#define ActRchTxtEdiBib (ActChgCrsSta + 114) #define ActRchTxtEdiBib (ActChgCrsSta + 115)
#define ActRchTxtEdiFAQ (ActChgCrsSta + 115) #define ActRchTxtEdiFAQ (ActChgCrsSta + 116)
#define ActRchTxtEdiCrsLnk (ActChgCrsSta + 116) #define ActRchTxtEdiCrsLnk (ActChgCrsSta + 117)
#define ActRcvPlaTxtCrsInf (ActChgCrsSta + 117) #define ActRcvPlaTxtCrsInf (ActChgCrsSta + 118)
#define ActRcvPlaTxtTchGui (ActChgCrsSta + 118) #define ActRcvPlaTxtTchGui (ActChgCrsSta + 119)
#define ActRcvPlaTxtSylLec (ActChgCrsSta + 119) #define ActRcvPlaTxtSylLec (ActChgCrsSta + 120)
#define ActRcvPlaTxtSylPra (ActChgCrsSta + 120) #define ActRcvPlaTxtSylPra (ActChgCrsSta + 121)
#define ActRcvPlaTxtBib (ActChgCrsSta + 121) #define ActRcvPlaTxtBib (ActChgCrsSta + 122)
#define ActRcvPlaTxtFAQ (ActChgCrsSta + 122) #define ActRcvPlaTxtFAQ (ActChgCrsSta + 123)
#define ActRcvPlaTxtCrsLnk (ActChgCrsSta + 123) #define ActRcvPlaTxtCrsLnk (ActChgCrsSta + 124)
#define ActRcvRchTxtCrsInf (ActChgCrsSta + 124) #define ActRcvRchTxtCrsInf (ActChgCrsSta + 125)
#define ActRcvRchTxtTchGui (ActChgCrsSta + 125) #define ActRcvRchTxtTchGui (ActChgCrsSta + 126)
#define ActRcvRchTxtSylLec (ActChgCrsSta + 126) #define ActRcvRchTxtSylLec (ActChgCrsSta + 127)
#define ActRcvRchTxtSylPra (ActChgCrsSta + 127) #define ActRcvRchTxtSylPra (ActChgCrsSta + 128)
#define ActRcvRchTxtBib (ActChgCrsSta + 128) #define ActRcvRchTxtBib (ActChgCrsSta + 129)
#define ActRcvRchTxtFAQ (ActChgCrsSta + 129) #define ActRcvRchTxtFAQ (ActChgCrsSta + 130)
#define ActRcvRchTxtCrsLnk (ActChgCrsSta + 130) #define ActRcvRchTxtCrsLnk (ActChgCrsSta + 131)
#define ActPrnCrsTT (ActChgCrsSta + 131) #define ActPrnCrsTT (ActChgCrsSta + 132)
#define ActEdiCrsTT (ActChgCrsSta + 132) #define ActEdiCrsTT (ActChgCrsSta + 133)
#define ActChgCrsTT (ActChgCrsSta + 133) #define ActChgCrsTT (ActChgCrsSta + 134)
#define ActChgCrsTT1stDay (ActChgCrsSta + 134) #define ActChgCrsTT1stDay (ActChgCrsSta + 135)
/*****************************************************************************/ /*****************************************************************************/
/***************************** Assessment tab ********************************/ /***************************** Assessment tab ********************************/

View File

@ -230,7 +230,6 @@ void Agd_DB_RemoveEvent (const struct Agd_Event *AgdEvent)
long Agd_DB_CreateEvent (const struct Agd_Event *AgdEvent,const char *Txt) long Agd_DB_CreateEvent (const struct Agd_Event *AgdEvent,const char *Txt)
{ {
/***** Create a new event *****/
return return
DB_QueryINSERTandReturnCode ("can not create new event", DB_QueryINSERTandReturnCode ("can not create new event",
"INSERT INTO agd_agendas" "INSERT INTO agd_agendas"

View File

@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia. TODO: Attach pdf files in multimedia.
*/ */
#define Log_PLATFORM_VERSION "SWAD 21.113 (2022-07-22)" #define Log_PLATFORM_VERSION "SWAD 21.114 (2022-07-25)"
#define CSS_FILE "swad21.107.1.css" #define CSS_FILE "swad21.107.1.css"
#define JS_FILE "swad21.100.js" #define JS_FILE "swad21.100.js"
/* /*
Version 21.114: Jul 25, 2022 New form and action to create item resource. (329258 lines)
Version 21.113: Jul 22, 2022 New form and action to rename item resource. (329151 lines) Version 21.113: Jul 22, 2022 New form and action to rename item resource. (329151 lines)
Version 21.112.1: Jul 22, 2022 Changes in edition of program items. (329058 lines) Version 21.112.1: Jul 22, 2022 Changes in edition of program items. (329058 lines)
Version 21.112: Jul 21, 2022 Code refactoring in hide/unhide icons. Version 21.112: Jul 21, 2022 Code refactoring in hide/unhide icons.

View File

@ -148,7 +148,6 @@ static void Prg_GetDataOfItem (struct Prg_Item *Item,
MYSQL_RES **mysql_res, MYSQL_RES **mysql_res,
unsigned NumRows); unsigned NumRows);
static void Prg_ResetItem (struct Prg_Item *Item); static void Prg_ResetItem (struct Prg_Item *Item);
static void Prg_PutParamItmCod (long ItmCod);
static void Prg_HideOrUnhideItem (bool Hide); static void Prg_HideOrUnhideItem (bool Hide);
@ -1171,7 +1170,7 @@ void Prg_FreeListItems (void)
/**************** Write parameter with code of program item ******************/ /**************** Write parameter with code of program item ******************/
/*****************************************************************************/ /*****************************************************************************/
static void Prg_PutParamItmCod (long ItmCod) void Prg_PutParamItmCod (long ItmCod)
{ {
Par_PutHiddenParamLong (NULL,"ItmCod",ItmCod); Par_PutHiddenParamLong (NULL,"ItmCod",ItmCod);
} }

View File

@ -103,6 +103,7 @@ void Prg_PutParams (void *ItmCod);
void Prg_GetListItems (void); void Prg_GetListItems (void);
void Prg_FreeListItems (void); void Prg_FreeListItems (void);
void Prg_PutParamItmCod (long ItmCod);
long Prg_GetParamItmCod (void); long Prg_GetParamItmCod (void);
unsigned Prg_GetNumItemFromItmCod (long ItmCod); unsigned Prg_GetNumItemFromItmCod (long ItmCod);
unsigned Prg_GetLevelFromNumItem (unsigned NumItem); unsigned Prg_GetLevelFromNumItem (unsigned NumItem);

View File

@ -425,6 +425,24 @@ void Prg_DB_RemoveCrsItems (long CrsCod)
CrsCod); CrsCod);
} }
/*****************************************************************************/
/************************** Create a new resource ****************************/
/*****************************************************************************/
long Prg_DB_CreateResource (const struct PrgRsc_Resource *Resource)
{
return
DB_QueryINSERTandReturnCode ("can not create new resource",
"INSERT INTO prg_resources"
" (ItmCod,RscInd,Hidden,Title)"
" SELECT %ld,COALESCE(MAX(t2.RscInd),0)+1,'N','%s'"
" FROM prg_resources AS t2"
" WHERE t2.ItmCod=%ld",
Resource->ItmCod,
Resource->Title,
Resource->ItmCod);
}
/*****************************************************************************/ /*****************************************************************************/
/**************************** Update resource title **************************/ /**************************** Update resource title **************************/
/*****************************************************************************/ /*****************************************************************************/
@ -432,18 +450,6 @@ void Prg_DB_RemoveCrsItems (long CrsCod)
void Prg_DB_UpdateResourceTitle (long RscCod,long ItmCod, void Prg_DB_UpdateResourceTitle (long RscCod,long ItmCod,
const char NewTitle[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1]) const char NewTitle[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1])
{ {
Ale_ShowAlert (Ale_INFO,
"can not update the title of a resource",
"UPDATE prg_resources,prg_items"
" SET prg_resources.Title='%s'"
" WHERE prg_resources.RscCod=%ld"
" AND prg_resources.ItmCod=%ld"
" AND prg_resources.ItmCod=prg_items.ItmCod"
" AND prg_items.CrsCod=%ld",
NewTitle,
RscCod,
ItmCod,
Gbl.Hierarchy.Crs.CrsCod);
DB_QueryUPDATE ("can not update the title of a resource", DB_QueryUPDATE ("can not update the title of a resource",
"UPDATE prg_resources,prg_items" "UPDATE prg_resources,prg_items"
" SET prg_resources.Title='%s'" " SET prg_resources.Title='%s'"
@ -532,6 +538,21 @@ unsigned Prg_DB_GetDataOfResourceByInd (MYSQL_RES **mysql_res,
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
} }
/*****************************************************************************/
/******************* Get maximum resource index in an item *******************/
/*****************************************************************************/
// Resource index can be 1, 2, 3...
// Return 0 if no resources
/*
unsigned Prg_DB_GetMaxRscIndexInItem (long ItmCod)
{
return DB_QuerySELECTUnsigned ("can not get max resource index",
"SELECT MAX(RscInd)"
" FROM prg_resources"
" WHERE ItmCod=%ld",
ItmCod);
}
*/
/*****************************************************************************/ /*****************************************************************************/
/************* Get the resource index before/after a given one ***************/ /************* Get the resource index before/after a given one ***************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -56,6 +56,8 @@ void Prg_DB_RemoveItemRange (const struct Prg_ItemRange *ToRemove);
void Prg_DB_RemoveCrsItems (long CrsCod); void Prg_DB_RemoveCrsItems (long CrsCod);
//------------------------------ Resources ------------------------------------ //------------------------------ Resources ------------------------------------
long Prg_DB_CreateResource (const struct PrgRsc_Resource *Resource);
void Prg_DB_UpdateResourceTitle (long RscCod,long ItmCod, void Prg_DB_UpdateResourceTitle (long RscCod,long ItmCod,
const char NewTitle[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1]); const char NewTitle[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1]);
@ -64,6 +66,7 @@ unsigned Prg_DB_GetListResources (MYSQL_RES **mysql_res,long ItmCod,
unsigned Prg_DB_GetDataOfResourceByCod (MYSQL_RES **mysql_res,long RscCod); unsigned Prg_DB_GetDataOfResourceByCod (MYSQL_RES **mysql_res,long RscCod);
unsigned Prg_DB_GetDataOfResourceByInd (MYSQL_RES **mysql_res, unsigned Prg_DB_GetDataOfResourceByInd (MYSQL_RES **mysql_res,
long ItmCod,unsigned RscInd); long ItmCod,unsigned RscInd);
// unsigned Prg_DB_GetMaxRscIndexInItem (long ItmCod);
unsigned Prg_DB_GetRscIndBefore (long ItmCod,unsigned RscInd); unsigned Prg_DB_GetRscIndBefore (long ItmCod,unsigned RscInd);
unsigned Prg_DB_GetRscIndAfter (long ItmCod,unsigned RscInd); unsigned Prg_DB_GetRscIndAfter (long ItmCod,unsigned RscInd);
long Prg_DB_GetRscCodFromRscInd (long ItmCod,unsigned RscInd); long Prg_DB_GetRscCodFromRscInd (long ItmCod,unsigned RscInd);

View File

@ -74,6 +74,7 @@ static void PrgRsc_WriteRowViewResource (unsigned NumRsc,
struct PrgRsc_Resource *Resource); struct PrgRsc_Resource *Resource);
static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources, static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources,
struct PrgRsc_Resource *Resource); struct PrgRsc_Resource *Resource);
static void PrgRsc_WriteRowNewResource (long ItmCod,unsigned NumRsc);
static void PrgRsc_PutFormsToRemEditOneResource (unsigned NumRsc, static void PrgRsc_PutFormsToRemEditOneResource (unsigned NumRsc,
unsigned NumResources, unsigned NumResources,
struct PrgRsc_Resource *Resource); struct PrgRsc_Resource *Resource);
@ -255,6 +256,10 @@ void PrgRsc_ListItemResources (Prg_ListingType_t ListingType,long ItmCod)
The_ChangeRowColor (); The_ChangeRowColor ();
} }
/***** Form to create a new resource *****/
if (ListingType == Prg_EDIT_RESOURCES)
PrgRsc_WriteRowNewResource (ItmCod,NumResources);
/***** End table *****/ /***** End table *****/
HTM_TBODY_End (); HTM_TBODY_End ();
HTM_TABLE_End (); HTM_TABLE_End ();
@ -416,18 +421,18 @@ static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources,
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/***** Forms to remove/edit this item resource *****/ /***** Forms to remove/edit this item resource *****/
HTM_TD_Begin ("class=\"PRG_COL1 LT %s\"",The_GetColorRows ()); HTM_TD_Begin ("class=\"PRG_COL1 LM %s\"",The_GetColorRows ());
PrgRsc_PutFormsToRemEditOneResource (NumRsc,NumResources,Resource); PrgRsc_PutFormsToRemEditOneResource (NumRsc,NumResources,Resource);
HTM_TD_End (); HTM_TD_End ();
/***** Resource number *****/ /***** Resource number *****/
HTM_TD_Begin ("class=\"PRG_NUM PRG_RSC_%s RT %s\"", HTM_TD_Begin ("class=\"PRG_NUM PRG_RSC_%s RM %s\"",
The_GetSuffix (),The_GetColorRows ()); The_GetSuffix (),The_GetColorRows ());
HTM_Unsigned (NumRsc + 1); HTM_Unsigned (NumRsc + 1);
HTM_TD_End (); HTM_TD_End ();
/***** Title *****/ /***** Title *****/
HTM_TD_Begin ("class=\"PRG_MAIN %s\"",The_GetColorRows ()); HTM_TD_Begin ("class=\"PRG_MAIN LM %s\"",The_GetColorRows ());
Frm_BeginFormAnchor (ActRenPrgRsc,PrgRsc_RESOURCE_SECTION_ID); Frm_BeginFormAnchor (ActRenPrgRsc,PrgRsc_RESOURCE_SECTION_ID);
PrgRsc_PutParamRscCod (Resource->Rsc.Cod); PrgRsc_PutParamRscCod (Resource->Rsc.Cod);
HTM_INPUT_TEXT ("Title",PrgRsc_MAX_CHARS_PROGRAM_RESOURCE_TITLE,Resource->Title, HTM_INPUT_TEXT ("Title",PrgRsc_MAX_CHARS_PROGRAM_RESOURCE_TITLE,Resource->Title,
@ -441,6 +446,42 @@ static void PrgRsc_WriteRowEditResource (unsigned NumRsc,unsigned NumResources,
HTM_TR_End (); HTM_TR_End ();
} }
/*****************************************************************************/
/************************* Edit a new item resource **************************/
/*****************************************************************************/
static void PrgRsc_WriteRowNewResource (long ItmCod,unsigned NumRsc)
{
/***** Begin row *****/
HTM_TR_Begin (NULL);
/***** Forms to remove/edit this item resource *****/
HTM_TD_Begin ("class=\"PRG_COL1 LM %s\"",The_GetColorRows ());
HTM_TD_End ();
/***** Resource number *****/
HTM_TD_Begin ("class=\"PRG_NUM PRG_RSC_%s RM %s\"",
The_GetSuffix (),The_GetColorRows ());
HTM_Unsigned (NumRsc + 1);
HTM_TD_End ();
/***** Title *****/
HTM_TD_Begin ("class=\"PRG_MAIN LM %s\"",The_GetColorRows ());
Frm_BeginFormAnchor (ActNewPrgRsc,PrgRsc_RESOURCE_SECTION_ID);
Prg_PutParamItmCod (ItmCod);
HTM_INPUT_TEXT ("Title",PrgRsc_MAX_CHARS_PROGRAM_RESOURCE_TITLE,"",
HTM_SUBMIT_ON_CHANGE,
"placeholder=\"%s\""
" class=\"INPUT_FULL_NAME INPUT_%s\"",
"Nuevo recurso",
The_GetSuffix ());
Frm_EndForm ();
HTM_TD_End ();
/***** End row *****/
HTM_TR_End ();
}
/*****************************************************************************/ /*****************************************************************************/
/**************** Put a link (form) to edit one program item *****************/ /**************** Put a link (form) to edit one program item *****************/
/*****************************************************************************/ /*****************************************************************************/
@ -529,6 +570,38 @@ static long PrgRsc_GetParamRscCod (void)
{ {
return Par_GetParToLong ("RscCod"); return Par_GetParToLong ("RscCod");
} }
/*****************************************************************************/
/******************************** Rename resource ****************************/
/*****************************************************************************/
void PrgRsc_CreateResource (void)
{
struct PrgRsc_Resource Resource;
unsigned FormLevel;
/***** Get list of program items *****/
Prg_GetListItems ();
/***** Get parameters *****/
/* Get the code of the program item */
if ((Resource.ItmCod = Prg_GetParamItmCod ()) > 0)
FormLevel = Prg_GetLevelFromNumItem (Prg_GetNumItemFromItmCod (Resource.ItmCod));
else
FormLevel = 0;
/* Get the new title for the new resource */
Par_GetParToText ("Title",Resource.Title,PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE);
/***** Create resource *****/
// Resource.Rsc.Ind = Prg_DB_GetMaxRscIndexInItem (Resource.ItmCod) + 1;
Resource.Rsc.Cod = Prg_DB_CreateResource (&Resource);
/***** Show current program items, if any *****/
Prg_ShowAllItems (Prg_EDIT_RESOURCES,NULL,-1L,Resource.ItmCod,FormLevel);
/***** Free list of program items *****/
Prg_FreeListItems ();
}
/*****************************************************************************/ /*****************************************************************************/
/******************************** Rename resource ****************************/ /******************************** Rename resource ****************************/

View File

@ -57,6 +57,8 @@ void PrgRsc_EditResources (void);
void PrgRsc_ListItemResources (Prg_ListingType_t ListingType,long ItmCod); void PrgRsc_ListItemResources (Prg_ListingType_t ListingType,long ItmCod);
void PrgRsc_CreateResource (void);
void PrgRsc_RenameResource (void); void PrgRsc_RenameResource (void);
void PrgRsc_ReqRemResource (void); void PrgRsc_ReqRemResource (void);

View File

@ -6086,6 +6086,29 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"Editar recursos" "Editar recursos"
#elif L==10 // tr #elif L==10 // tr
"Kaynakları düzenle" "Kaynakları düzenle"
#endif
,
[ActNewPrgRsc] =
#if L==1 // ca
"Create resource" // Necessita traducció
#elif L==2 // de
"Create resource" // Need Übersetzung
#elif L==3 // en
"Create resource"
#elif L==4 // es
"Crear recurso"
#elif L==5 // fr
"Create resource" // Besoin de traduction
#elif L==6 // gn
"Crear recurso" // Okoteve traducción
#elif L==7 // it
"Create resource" // Bisogno di traduzione
#elif L==8 // pl
"Create resource" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"Create resource" // Precisa de tradução
#elif L==10 // tr
"Create resource" // Çeviri lazim!
#endif #endif
, ,
[ActRenPrgRsc] = [ActRenPrgRsc] =