diff --git a/swad_action_list.c b/swad_action_list.c index 3e09c76c..e3edbcff 100644 --- a/swad_action_list.c +++ b/swad_action_list.c @@ -163,12 +163,12 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActUnfNotGblTL ] = {1513,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TmlFav_UnfNoteGbl ,NULL}, [ActFavComGblTL ] = {1516,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TmlFav_FavCommGbl ,NULL}, [ActUnfComGblTL ] = {1517,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TmlFav_UnfCommGbl ,NULL}, - [ActReqRemPubGblTL ] = {1494,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TmlWho_GetParWho ,TmlNot_RequestRemNoteGbl ,NULL}, + [ActReqRemPubGblTL ] = {1494,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TmlWho_GetParWho ,TmlNot_ReqRemNoteGbl ,NULL}, [ActRemPubGblTL ] = {1493,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TmlWho_GetParWho ,TmlNot_RemoveNoteGbl ,NULL}, - [ActReqRemComGblTL ] = {1505,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TmlWho_GetParWho ,TmlCom_RequestRemComGbl ,NULL}, + [ActReqRemComGblTL ] = {1505,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TmlWho_GetParWho ,TmlCom_ReqRemComGbl ,NULL}, [ActRemComGblTL ] = {1507,-1,TabUnk,ActSeeGblTL ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,TmlWho_GetParWho ,TmlCom_RemoveComGbl ,NULL}, - [ActReqOthPubPrf ] = {1401,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_RequestUserProfile ,NULL}, + [ActReqOthPubPrf ] = {1401,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ReqUserProfile ,NULL}, [ActRefOldPubUsrTL ] = {1511,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,Tml_RefreshOldTimelineUsr ,NULL}, [ActRcvPstUsrTL ] = {1498,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TmlPst_ReceivePostUsr ,NULL}, @@ -183,9 +183,9 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActUnfNotUsrTL ] = {1515,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TmlFav_UnfNoteUsr ,NULL}, [ActFavComUsrTL ] = {1518,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TmlFav_FavCommUsr ,NULL}, [ActUnfComUsrTL ] = {1519,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_AJAX_NORMAL,NULL ,TmlFav_UnfCommUsr ,NULL}, - [ActReqRemPubUsrTL ] = {1501,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TmlNot_RequestRemNoteUsr ,NULL}, + [ActReqRemPubUsrTL ] = {1501,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TmlNot_ReqRemNoteUsr ,NULL}, [ActRemPubUsrTL ] = {1502,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TmlNot_RemoveNoteUsr ,NULL}, - [ActReqRemComUsrTL ] = {1506,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TmlCom_RequestRemComUsr ,NULL}, + [ActReqRemComUsrTL ] = {1506,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TmlCom_ReqRemComUsr ,NULL}, [ActRemComUsrTL ] = {1508,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TmlCom_RemoveComUsr ,NULL}, [ActSeeOthPubPrf ] = {1402,-1,TabUnk,ActSeeSocPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_GetUsrDatAndShowUserProfile,NULL}, @@ -292,7 +292,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActRenInsShoCfg ] = {1592,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,InsCfg_RenameInsShort ,InsCfg_ContEditAfterChgIns ,NULL}, [ActRenInsFulCfg ] = {1591,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,InsCfg_RenameInsFull ,InsCfg_ContEditAfterChgIns ,NULL}, [ActChgInsWWWCfg ] = {1593,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,InsCfg_ChangeInsWWW ,NULL}, - [ActReqInsLog ] = {1245,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,InsCfg_RequestLogo ,NULL}, + [ActReqInsLog ] = {1245,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,InsCfg_ReqLogo ,NULL}, [ActRecInsLog ] = { 699,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,InsCfg_ReceiveLogo ,InsCfg_ShowConfiguration ,NULL}, [ActRemInsLog ] = {1341,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,InsCfg_RemoveLogo ,InsCfg_ShowConfiguration ,NULL}, @@ -346,10 +346,10 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActChgCtrLgtCfg ] = {1816,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ChangeCtrLongitude ,NULL}, [ActChgCtrAltCfg ] = {1817,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ChangeCtrAltitude ,NULL}, [ActChgCtrWWWCfg ] = {1596,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ChangeCtrWWW ,NULL}, - [ActReqCtrLog ] = {1244,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_RequestLogo ,NULL}, + [ActReqCtrLog ] = {1244,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ReqLogo ,NULL}, [ActRecCtrLog ] = {1051,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,CtrCfg_ReceiveLogo ,CtrCfg_ShowConfiguration ,NULL}, [ActRemCtrLog ] = {1342,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,CtrCfg_RemoveLogo ,CtrCfg_ShowConfiguration ,NULL}, - [ActReqCtrPho ] = {1160,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_RequestPhoto ,NULL}, + [ActReqCtrPho ] = {1160,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ReqPhoto ,NULL}, [ActRecCtrPho ] = {1161,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,CtrCfg_ReceivePhoto ,NULL}, [ActChgCtrPhoAtt ] = {1159,-1,TabUnk,ActSeeCtrInf , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtrCfg_ChangeCtrPhotoAttr ,NULL}, @@ -398,9 +398,9 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActRenDegShoCfg ] = {1598,-1,TabUnk,ActSeeDegInf , 0, 0,0x380, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DegCfg_RenameDegreeShort ,DegCfg_ContEditAfterChgDeg ,NULL}, [ActRenDegFulCfg ] = {1597,-1,TabUnk,ActSeeDegInf , 0, 0,0x380, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DegCfg_RenameDegreeFull ,DegCfg_ContEditAfterChgDeg ,NULL}, [ActChgDegWWWCfg ] = {1599,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DegCfg_ChangeDegWWW ,NULL}, - [ActReqDegLog ] = {1246,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Deg_RequestLogo ,NULL}, - [ActRecDegLog ] = { 553,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,Deg_ReceiveLogo ,DegCfg_ShowConfiguration ,NULL}, - [ActRemDegLog ] = {1343,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,Deg_RemoveLogo ,DegCfg_ShowConfiguration ,NULL}, + [ActReqDegLog ] = {1246,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DegCfg_ReqLogo ,NULL}, + [ActRecDegLog ] = { 553,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,DegCfg_ReceiveLogo ,DegCfg_ShowConfiguration ,NULL}, + [ActRemDegLog ] = {1343,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,DegCfg_RemoveLogo ,DegCfg_ShowConfiguration ,NULL}, [ActEdiCrs ] = { 555,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_EditCourses ,NULL}, [ActReqCrs ] = {1053,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_ReceiveFormReqCrs ,Crs_ContEditAfterChgCrs ,NULL}, @@ -435,8 +435,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActEdiPrg ] = {1926, 1,TabCrs,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_EditCourseProgram ,NULL}, [ActSeePrgItm ] = {1927,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ViewItemAfterEdit ,NULL}, - [ActFrmChgPrgItm ] = {1823,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RequestChangeItem ,NULL}, - [ActFrmNewPrgItm ] = {1822,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RequestCreateItem ,NULL}, + [ActFrmChgPrgItm ] = {1823,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReqChangeItem ,NULL}, + [ActFrmNewPrgItm ] = {1822,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReqCreateItem ,NULL}, [ActChgPrgItm ] = {1826,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReceiveFormChgItem ,NULL}, [ActNewPrgItm ] = {1825,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReceiveFormNewItem ,NULL}, [ActReqRemPrgItm ] = {1827,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReqRemItem ,NULL}, @@ -591,15 +591,15 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActSeeAsg ] = { 801, 0,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"edit" }, [ActSeePrj ] = {1674, 1,TabAss,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"file-invoice" }, [ActSeeAllCfe ] = { 85, 2,TabAss,ActSeeAllCfe ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ListCallsForExamsSee ,"bullhorn" }, - [ActEdiTstQst ] = { 104, 3,TabAss,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToPastAndNow ,Qst_RequestEditQsts ,"clipboard-question" }, - [ActReqTst ] = { 103, 4,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" }, + [ActEdiTstQst ] = { 104, 3,TabAss,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToPastAndNow ,Qst_ReqEditQsts ,"clipboard-question" }, + [ActReqTst ] = { 103, 4,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ReqTest ,"check" }, [ActSeeAllExa ] = {1848, 5,TabAss,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" }, [ActSeeAllGam ] = {1649, 6,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" }, [ActSeeAllRub ] = {1951, 7,TabAss,ActSeeAllRub ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_SeeAllRubrics ,"tasks" }, // Actions not in menu: - [ActFrmNewAsg ] = { 812,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RequestCreatOrEditAsg ,NULL}, - [ActEdiOneAsg ] = { 814,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RequestCreatOrEditAsg ,NULL}, + [ActFrmNewAsg ] = { 812,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ReqCreatOrEditAsg ,NULL}, + [ActEdiOneAsg ] = { 814,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ReqCreatOrEditAsg ,NULL}, [ActSeeOneAsg ] = {1942,-1,TabUnk,ActSeeAsg ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeOneAssignment ,NULL}, [ActPrnOneAsg ] = {1637,-1,TabUnk,ActSeeAsg ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Asg_PrintOneAssignment ,NULL}, [ActNewAsg ] = { 803,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ReceiveFormAssignment ,NULL}, @@ -618,8 +618,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActReqUnlAllPrj ] = {1776,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqUnloSelectedPrjsEdition ,NULL}, [ActLckAllPrj ] = {1777,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_LockSelectedPrjsEdition ,NULL}, [ActUnlAllPrj ] = {1778,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_UnloSelectedPrjsEdition ,NULL}, - [ActFrmNewPrj ] = {1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatePrj ,NULL}, - [ActEdiOnePrj ] = {1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestEditPrj ,NULL}, + [ActFrmNewPrj ] = {1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqCreatePrj ,NULL}, + [ActEdiOnePrj ] = {1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqEditPrj ,NULL}, [ActSeeOnePrj ] = {1949,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, [ActPrnOnePrj ] = {1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL}, [ActNewPrj ] = {1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL}, @@ -690,7 +690,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActEdiCfe ] = { 91,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_PutFrmEditACallForExam ,NULL}, [ActRcvCfe ] = { 110,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_ReceiveCallForExam1 ,Cfe_ReceiveCallForExam2 ,NULL}, [ActPrnCfe ] = { 179,-1,TabUnk,ActSeeAllCfe ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Cfe_PrintCallForExam ,NULL}, - [ActReqRemCfe ] = {1619,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ReqRemoveCallForExam ,NULL}, + [ActReqRemCfe ] = {1619,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cfe_ReqRemCallForExam ,NULL}, [ActRemCfe ] = { 187,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_RemoveCallForExam1 ,Cfe_RemoveCallForExam2 ,NULL}, [ActHidCfe ] = {1620,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_HideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL}, [ActUnhCfe ] = {1621,-1,TabUnk,ActSeeAllCfe ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Cfe_UnhideCallForExam ,Cfe_ListCallsForExamsEdit ,NULL}, @@ -701,9 +701,9 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActImpTstQst ] = {1008,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,QstImp_ImpQstsFromXML ,NULL}, [ActLstTstQst ] = { 132,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_ListQuestionsToEdit ,NULL}, [ActRcvTstQst ] = { 126,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Qst_ReceiveQst ,NULL}, - [ActReqRemSevTstQst ] = {1835,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_RequestRemoveSelectedQsts ,NULL}, + [ActReqRemSevTstQst ] = {1835,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_ReqRemSelectedQsts ,NULL}, [ActRemSevTstQst ] = {1836,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_RemoveSelectedQsts ,NULL}, - [ActReqRemOneTstQst ] = {1523,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_RequestRemoveOneQst ,NULL}, + [ActReqRemOneTstQst ] = {1523,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_ReqRemOneQst ,NULL}, [ActRemOneTstQst ] = { 133,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_RemoveOneQst ,NULL}, [ActChgShfTstQst ] = { 455,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Qst_ChangeShuffleQst ,NULL}, @@ -728,8 +728,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActSeeExa ] = {1849,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeOneExam ,NULL}, - [ActFrmNewExa ] = {1877,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RequestCreatOrEditExam ,NULL}, - [ActEdiOneExa ] = {1878,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RequestCreatOrEditExam ,NULL}, + [ActFrmNewExa ] = {1877,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ReqCreatOrEditExam ,NULL}, + [ActEdiOneExa ] = {1878,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ReqCreatOrEditExam ,NULL}, [ActNewExa ] = {1879,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ReceiveFormExam ,NULL}, [ActChgExa ] = {1880,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ReceiveFormExam ,NULL}, [ActReqRemExa ] = {1881,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_AskRemExam ,NULL}, @@ -738,9 +738,9 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActUnhExa ] = {1884,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_UnhideExam ,NULL}, [ActReqLnkExa ] = {1936,-1,TabUnk,ActSeeAllExa ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaRsc_GetLinkToExam ,NULL}, - [ActFrmNewExaSet ] = {1892,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToPastAndNow ,ExaSet_RequestCreatOrEditSet ,NULL}, + [ActFrmNewExaSet ] = {1892,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToPastAndNow ,ExaSet_ReqCreatOrEditSet ,NULL}, [ActNewExaSet ] = {1898,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_ReceiveFormSet ,NULL}, - [ActReqRemExaSet ] = {1893,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RequestRemoveSet ,NULL}, + [ActReqRemExaSet ] = {1893,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_ReqRemSet ,NULL}, [ActRemExaSet ] = {1894,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RemoveSet ,NULL}, [ActUp_ExaSet ] = {1895,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_MoveUpSet ,NULL}, [ActDwnExaSet ] = {1896,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_MoveDownSet ,NULL}, @@ -750,16 +750,16 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActReqAddQstExaSet ] = {1885,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToPastAndNow ,ExaSet_ReqSelectQstsToAddToSet ,NULL}, [ActLstTstQstForSet ] = {1886,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_ListQstsToAddToSet ,NULL}, [ActAddQstToExa ] = {1887,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_AddQstsToSet ,NULL}, - [ActReqRemSetQst ] = {1888,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RequestRemoveQstFromSet ,NULL}, + [ActReqRemSetQst ] = {1888,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_ReqRemQstFromSet ,NULL}, [ActRemExaQst ] = {1889,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RemoveQstFromSet ,NULL}, [ActValSetQst ] = {1909,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_ValidateQst ,NULL}, [ActInvSetQst ] = {1910,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_InvalidateQst ,NULL}, - [ActReqNewExaSes ] = {1852,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_RequestCreatOrEditSes ,NULL}, - [ActEdiOneExaSes ] = {1902,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_RequestCreatOrEditSes ,NULL}, + [ActReqNewExaSes ] = {1852,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ReqCreatOrEditSes ,NULL}, + [ActEdiOneExaSes ] = {1902,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ReqCreatOrEditSes ,NULL}, [ActNewExaSes ] = {1853,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ReceiveFormSession ,NULL}, [ActChgExaSes ] = {1903,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ReceiveFormSession ,NULL}, - [ActReqRemExaSes ] = {1850,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_RequestRemoveSession ,NULL}, + [ActReqRemExaSes ] = {1850,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_ReqRemSession ,NULL}, [ActRemExaSes ] = {1851,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_RemoveSession ,NULL}, [ActHidExaSes ] = {1900,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_HideSession ,NULL}, [ActUnhExaSes ] = {1901,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSes_UnhideSession ,NULL}, @@ -783,11 +783,11 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActSeeGam ] = {1650,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeOneGame ,NULL}, - [ActReqRemMch ] = {1783,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mch_RequestRemoveMatch ,NULL}, + [ActReqRemMch ] = {1783,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mch_ReqRemMatch ,NULL}, [ActRemMch ] = {1784,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mch_RemoveMatch ,NULL}, [ActEdiMch ] = {1913,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mch_EditMatch ,NULL}, [ActChgMch ] = {1914,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mch_ChangeMatch ,NULL}, - [ActReqNewMch ] = {1670,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestNewMatch ,NULL}, + [ActReqNewMch ] = {1670,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReqNewMatch ,NULL}, [ActNewMch ] = {1671,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Mch_CreateNewMatch ,Mch_ResumeMatch ,NULL}, [ActResMch ] = {1785,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Mch_GetMatchBeingPlayed ,Mch_ResumeMatch ,NULL}, [ActBckMch ] = {1790,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_BackMatch ,NULL}, @@ -819,8 +819,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActLstOneGam ] = {1912,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ListGame ,NULL}, - [ActFrmNewGam ] = {1652,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestCreatOrEditGame ,NULL}, - [ActEdiOneGam ] = {1653,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestCreatOrEditGame ,NULL}, + [ActFrmNewGam ] = {1652,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReqCreatOrEditGame ,NULL}, + [ActEdiOneGam ] = {1653,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReqCreatOrEditGame ,NULL}, [ActNewGam ] = {1654,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReceiveFormGame ,NULL}, [ActChgGam ] = {1655,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReceiveFormGame ,NULL}, [ActReqRemGam ] = {1656,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AskRemGame ,NULL}, @@ -830,20 +830,29 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActAddOneGamQst ] = {1662,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDatesToPastAndNow ,Gam_ReqSelectQstsToAddToGame ,NULL}, [ActGamLstTstQst ] = {1666,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ListQstsToAddToGame ,NULL}, [ActAddTstQstToGam ] = {1667,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AddQstsToGame ,NULL}, - [ActReqRemGamQst ] = {1664,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestRemoveQstFromGame ,NULL}, + [ActReqRemGamQst ] = {1664,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReqRemQstFromGame ,NULL}, [ActRemGamQst ] = {1665,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RemoveQstFromGame ,NULL}, [ActUp_GamQst ] = {1668,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_MoveUpQst ,NULL}, [ActDwnGamQst ] = {1669,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_MoveDownQst ,NULL}, [ActReqLnkGam ] = {1935,-1,TabUnk,ActSeeAllGam ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,GamRsc_GetLinkToGame ,NULL}, [ActSeeRub ] = {1952,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_SeeOneRubric ,NULL}, - [ActFrmNewRub ] = {1953,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RequestCreatOrEditRubric ,NULL}, - [ActEdiOneRub ] = {1954,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RequestCreatOrEditRubric ,NULL}, + [ActFrmNewRub ] = {1953,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_ReqCreatOrEditRubric ,NULL}, + [ActEdiOneRub ] = {1954,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_ReqCreatOrEditRubric ,NULL}, [ActNewRub ] = {1955,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_ReceiveFormRubric ,NULL}, [ActChgRub ] = {1956,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_ReceiveFormRubric ,NULL}, [ActReqRemRub ] = {1957,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_AskRemRubric ,NULL}, [ActRemRub ] = {1958,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RemoveRubric ,NULL}, - [ActFrmNewRubCri ] = {1959,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_RequestCreatOrEditCri ,NULL}, + + [ActFrmNewRubCri ] = {1959,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReqCreatOrEditCriterion ,NULL}, + [ActNewRubCri ] = {1960,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReceiveFormCriterion ,NULL}, + [ActReqRemRubCri ] = {1961,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReqRemCriterion ,NULL}, + [ActRemRubCri ] = {1962,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_RemoveCriterion ,NULL}, + [ActUp_RubCri ] = {1963,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_MoveUpCriterion ,NULL}, + [ActDwnRubCri ] = {1964,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_MoveDownCriterion ,NULL}, + [ActChgTitRubCri ] = {1965,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeCriterionTitle ,NULL}, + [ActChgMinRubCri ] = {1966,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMinValueCriterion ,NULL}, + [ActChgMaxRubCri ] = {1967,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMaxValueCriterion ,NULL}, // TabFil ****************************************************************** // Actions in menu: @@ -1412,8 +1421,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActPrnLstMyAtt ] = {1474,-1,TabUnk,ActSeeAtt ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Att_PrintMyAttendanceCrs ,NULL}, [ActSeeLstUsrAtt ] = {1074,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ListUsrsAttendanceCrs ,NULL}, [ActPrnLstUsrAtt ] = {1075,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Att_PrintUsrsAttendanceCrs ,NULL}, - [ActFrmNewAtt ] = {1063,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RequestCreatOrEditAttEvent ,NULL}, - [ActEdiOneAtt ] = {1064,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RequestCreatOrEditAttEvent ,NULL}, + [ActFrmNewAtt ] = {1063,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReqCreatOrEditAttEvent ,NULL}, + [ActEdiOneAtt ] = {1064,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReqCreatOrEditAttEvent ,NULL}, [ActNewAtt ] = {1065,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReceiveFormAttEvent ,NULL}, [ActChgAtt ] = {1066,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReceiveFormAttEvent ,NULL}, [ActReqRemAtt ] = {1067,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_AskRemAttEvent ,NULL}, @@ -1451,9 +1460,9 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActUpdStdPho ] = {1439,-1,TabUnk,ActLstStd ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL}, [ActUpdTchPho ] = {1440,-1,TabUnk,ActLstTch ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_UpdateUsrPhoto1 ,Pho_UpdateUsrPhoto2 ,NULL}, - [ActReqRemOthPho ] = {1574,-1,TabUnk,ActLstOth ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemoveUsrPhoto ,NULL}, - [ActReqRemStdPho ] = {1575,-1,TabUnk,ActLstStd ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemoveUsrPhoto ,NULL}, - [ActReqRemTchPho ] = {1576,-1,TabUnk,ActLstTch ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemoveUsrPhoto ,NULL}, + [ActReqRemOthPho ] = {1574,-1,TabUnk,ActLstOth ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemUsrPhoto ,NULL}, + [ActReqRemStdPho ] = {1575,-1,TabUnk,ActLstStd ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemUsrPhoto ,NULL}, + [ActReqRemTchPho ] = {1576,-1,TabUnk,ActLstTch ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemUsrPhoto ,NULL}, [ActRemOthPho ] = {1441,-1,TabUnk,ActLstOth ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_RemoveUsrPhoto ,NULL}, [ActRemStdPho ] = {1442,-1,TabUnk,ActLstStd ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_RemoveUsrPhoto ,NULL}, [ActRemTchPho ] = {1443,-1,TabUnk,ActLstTch ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_RemoveUsrPhoto ,NULL}, @@ -1540,10 +1549,10 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActLstSimUsr ] = {1579,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Dup_GetUsrCodAndListSimilarUsrs,NULL}, [ActRemDupUsr ] = {1580,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Dup_RemoveUsrFromListDupUsrs ,NULL}, - [ActReqFolSevStd ] = {1756,-1,TabUnk,ActLstStd ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_RequestFollowStds ,NULL}, - [ActReqFolSevTch ] = {1757,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_RequestFollowTchs ,NULL}, - [ActReqUnfSevStd ] = {1758,-1,TabUnk,ActLstStd ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_RequestUnfollowStds ,NULL}, - [ActReqUnfSevTch ] = {1759,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_RequestUnfollowTchs ,NULL}, + [ActReqFolSevStd ] = {1756,-1,TabUnk,ActLstStd ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_ReqFollowStds ,NULL}, + [ActReqFolSevTch ] = {1757,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_ReqFollowTchs ,NULL}, + [ActReqUnfSevStd ] = {1758,-1,TabUnk,ActLstStd ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_ReqUnfollowStds ,NULL}, + [ActReqUnfSevTch ] = {1759,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_ReqUnfollowTchs ,NULL}, [ActFolSevStd ] = {1760,-1,TabUnk,ActLstStd ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_FollowUsrs ,NULL}, [ActFolSevTch ] = {1761,-1,TabUnk,ActLstTch ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_FollowUsrs ,NULL}, [ActUnfSevStd ] = {1762,-1,TabUnk,ActLstStd ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Fol_UnfollowUsrs ,NULL}, @@ -1571,7 +1580,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActRcvNot ] = { 60,-1,TabUnk,ActSeeAllNot ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Not_ReceiveNotice ,Not_ListFullNotices ,NULL}, [ActHidNot ] = { 763,-1,TabUnk,ActSeeAllNot ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Not_HideActiveNotice ,Not_ListFullNotices ,NULL}, [ActUnhNot ] = { 764,-1,TabUnk,ActSeeAllNot ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Not_RevealHiddenNotice ,Not_ListFullNotices ,NULL}, - [ActReqRemNot ] = {1472,-1,TabUnk,ActSeeAllNot ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Not_RequestRemNotice ,NULL}, + [ActReqRemNot ] = {1472,-1,TabUnk,ActSeeAllNot ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Not_ReqRemNotice ,NULL}, [ActRemNot ] = { 73,-1,TabUnk,ActSeeAllNot ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Not_RemoveNotice ,Not_ListNoticesAfterRemoval ,NULL}, [ActSeeForCrsUsr ] = { 345,-1,TabUnk,ActSeeFor ,0x3F8,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ShowForumTheads ,NULL}, @@ -1626,18 +1635,18 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActRcvRepForSWAUsr ] = { 603,-1,TabUnk,ActSeeFor ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,For_ReceiveForumPost ,NULL}, [ActRcvRepForSWATch ] = { 622,-1,TabUnk,ActSeeFor ,0x3F0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,For_ReceiveForumPost ,NULL}, - [ActReqDelThrCrsUsr ] = { 867,-1,TabUnk,ActSeeFor ,0x220,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrCrsTch ] = { 869,-1,TabUnk,ActSeeFor ,0x220,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrDegUsr ] = { 907,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrDegTch ] = { 908,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrCtrUsr ] = { 909,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrCtrTch ] = { 910,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrInsUsr ] = { 911,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrInsTch ] = { 912,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrGenUsr ] = { 913,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrGenTch ] = { 914,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrSWAUsr ] = { 881,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, - [ActReqDelThrSWATch ] = { 915,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RequestRemoveThread ,NULL}, + [ActReqDelThrCrsUsr ] = { 867,-1,TabUnk,ActSeeFor ,0x220,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrCrsTch ] = { 869,-1,TabUnk,ActSeeFor ,0x220,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrDegUsr ] = { 907,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrDegTch ] = { 908,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrCtrUsr ] = { 909,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrCtrTch ] = { 910,-1,TabUnk,ActSeeFor ,0x3C0,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrInsUsr ] = { 911,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrInsTch ] = { 912,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrGenUsr ] = { 913,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrGenTch ] = { 914,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrSWAUsr ] = { 881,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, + [ActReqDelThrSWATch ] = { 915,-1,TabUnk,ActSeeFor ,0x200,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ReqRemThread ,NULL}, [ActDelThrForCrsUsr ] = { 868,-1,TabUnk,ActSeeFor ,0x220,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RemoveThread ,NULL}, [ActDelThrForCrsTch ] = { 876,-1,TabUnk,ActSeeFor ,0x220,0x204,0x204,0x204,0x204,0x204,0x204,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_RemoveThread ,NULL}, @@ -1763,8 +1772,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActSeeSvy ] = { 982,-1,TabUnk,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeOneSurvey ,NULL}, [ActAnsSvy ] = { 983,-1,TabUnk,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveSurveyAnswers ,NULL}, - [ActFrmNewSvy ] = { 973,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestCreatOrEditSvy ,NULL}, - [ActEdiOneSvy ] = { 974,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestCreatOrEditSvy ,NULL}, + [ActFrmNewSvy ] = { 973,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReqCreatOrEditSvy ,NULL}, + [ActEdiOneSvy ] = { 974,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReqCreatOrEditSvy ,NULL}, [ActNewSvy ] = { 968,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveFormSurvey ,NULL}, [ActChgSvy ] = { 975,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveFormSurvey ,NULL}, [ActReqRemSvy ] = { 976,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_AskRemSurvey ,NULL}, @@ -1774,9 +1783,9 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActHidSvy ] = { 977,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_HideSurvey ,NULL}, [ActUnhSvy ] = { 978,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_UnhideSurvey ,NULL}, [ActReqLnkSvy ] = {1937,-1,TabUnk,ActSeeAllSvy ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,SvyRsc_GetLinkToSurvey ,NULL}, - [ActEdiOneSvyQst ] = { 979,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestEditQuestion ,NULL}, + [ActEdiOneSvyQst ] = { 979,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReqEditQuestion ,NULL}, [ActRcvSvyQst ] = { 980,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveQst ,NULL}, - [ActReqRemSvyQst ] = {1524,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestRemoveQst ,NULL}, + [ActReqRemSvyQst ] = {1524,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReqRemQst ,NULL}, [ActRemSvyQst ] = { 981,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RemoveQst ,NULL}, [ActSeeAccGbl ] = { 79,-1,TabUnk,ActReqAccGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Sta_SeeGblAccesses ,NULL}, @@ -1801,8 +1810,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = // Actions not in menu: [ActChgMyRol ] = { 589,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Rol_ChangeMyRole ,Usr_ShowFormsLogoutAndRole ,NULL}, - [ActFrmNewEvtMyAgd ] = {1603,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RequestCreatOrEditEvent ,NULL}, - [ActEdiOneEvtMyAgd ] = {1604,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RequestCreatOrEditEvent ,NULL}, + [ActFrmNewEvtMyAgd ] = {1603,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ReqCreatOrEditEvent ,NULL}, + [ActEdiOneEvtMyAgd ] = {1604,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ReqCreatOrEditEvent ,NULL}, [ActNewEvtMyAgd ] = {1605,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ReceiveFormEvent ,NULL}, [ActChgEvtMyAgd ] = {1606,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ReceiveFormEvent ,NULL}, [ActReqRemEvtMyAgd ] = {1607,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_AskRemEvent ,NULL}, @@ -1837,7 +1846,7 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActReqMyPho ] = { 30,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqMyPhoto ,NULL}, [ActDetMyPho ] = { 693,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Pho_RecMyPhotoDetFaces ,NULL}, [ActUpdMyPho ] = { 694,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_UpdateMyPhoto1 ,Pho_UpdateMyPhoto2 ,NULL}, - [ActReqRemMyPho ] = {1577,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemoveMyPhoto ,NULL}, + [ActReqRemMyPho ] = {1577,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ReqRemMyPhoto ,NULL}, [ActRemMyPho ] = { 428,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pho_RemoveMyPhoto1 ,Pho_RemoveMyPhoto2 ,NULL}, [ActChgCtyMyIns ] = {1166,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ChgCountryOfMyInstitution ,NULL}, @@ -3835,4 +3844,12 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re ActReqRemRub, // #1957 ActRemRub, // #1958 ActFrmNewRubCri, // #1959 + ActNewRubCri, // #1960 + ActReqRemRubCri, // #1961 + ActRemRubCri, // #1962 + ActUp_RubCri, // #1963 + ActDwnRubCri, // #1964 + ActChgTitRubCri, // #1965 + ActChgMinRubCri, // #1966 + ActChgMaxRubCri, // #1967 }; diff --git a/swad_action_list.h b/swad_action_list.h index 45ed9afc..c1989f40 100644 --- a/swad_action_list.h +++ b/swad_action_list.h @@ -768,480 +768,488 @@ #define ActRemRub (ActChgCrsTT1stDay + 226) #define ActFrmNewRubCri (ActChgCrsTT1stDay + 227) +#define ActNewRubCri (ActChgCrsTT1stDay + 228) +#define ActReqRemRubCri (ActChgCrsTT1stDay + 229) +#define ActRemRubCri (ActChgCrsTT1stDay + 230) +#define ActUp_RubCri (ActChgCrsTT1stDay + 231) +#define ActDwnRubCri (ActChgCrsTT1stDay + 232) +#define ActChgTitRubCri (ActChgCrsTT1stDay + 233) +#define ActChgMinRubCri (ActChgCrsTT1stDay + 234) +#define ActChgMaxRubCri (ActChgCrsTT1stDay + 235) /*****************************************************************************/ /******************************** Files tab **********************************/ /*****************************************************************************/ // Actions in menu -#define ActSeeAdmDocIns (ActFrmNewRubCri + 1) -#define ActAdmShaIns (ActFrmNewRubCri + 2) -#define ActSeeAdmDocCtr (ActFrmNewRubCri + 3) -#define ActAdmShaCtr (ActFrmNewRubCri + 4) -#define ActSeeAdmDocDeg (ActFrmNewRubCri + 5) -#define ActAdmShaDeg (ActFrmNewRubCri + 6) -#define ActSeeAdmDocCrsGrp (ActFrmNewRubCri + 7) -#define ActAdmTchCrsGrp (ActFrmNewRubCri + 8) -#define ActAdmShaCrsGrp (ActFrmNewRubCri + 9) -#define ActAdmAsgWrkUsr (ActFrmNewRubCri + 10) -#define ActReqAsgWrkCrs (ActFrmNewRubCri + 11) -#define ActSeeAdmMrk (ActFrmNewRubCri + 12) -#define ActAdmBrf (ActFrmNewRubCri + 13) +#define ActSeeAdmDocIns (ActChgMaxRubCri + 1) +#define ActAdmShaIns (ActChgMaxRubCri + 2) +#define ActSeeAdmDocCtr (ActChgMaxRubCri + 3) +#define ActAdmShaCtr (ActChgMaxRubCri + 4) +#define ActSeeAdmDocDeg (ActChgMaxRubCri + 5) +#define ActAdmShaDeg (ActChgMaxRubCri + 6) +#define ActSeeAdmDocCrsGrp (ActChgMaxRubCri + 7) +#define ActAdmTchCrsGrp (ActChgMaxRubCri + 8) +#define ActAdmShaCrsGrp (ActChgMaxRubCri + 9) +#define ActAdmAsgWrkUsr (ActChgMaxRubCri + 10) +#define ActReqAsgWrkCrs (ActChgMaxRubCri + 11) +#define ActSeeAdmMrk (ActChgMaxRubCri + 12) +#define ActAdmBrf (ActChgMaxRubCri + 13) // Secondary actions -#define ActChgToSeeDocIns (ActFrmNewRubCri + 14) -#define ActSeeDocIns (ActFrmNewRubCri + 15) -#define ActExpSeeDocIns (ActFrmNewRubCri + 16) -#define ActConSeeDocIns (ActFrmNewRubCri + 17) -#define ActZIPSeeDocIns (ActFrmNewRubCri + 18) -#define ActReqDatSeeDocIns (ActFrmNewRubCri + 19) -#define ActDowSeeDocIns (ActFrmNewRubCri + 20) -#define ActChgToAdmDocIns (ActFrmNewRubCri + 21) -#define ActAdmDocIns (ActFrmNewRubCri + 22) -#define ActReqRemFilDocIns (ActFrmNewRubCri + 23) -#define ActRemFilDocIns (ActFrmNewRubCri + 24) -#define ActRemFolDocIns (ActFrmNewRubCri + 25) -#define ActCopDocIns (ActFrmNewRubCri + 26) -#define ActPasDocIns (ActFrmNewRubCri + 27) -#define ActRemTreDocIns (ActFrmNewRubCri + 28) -#define ActFrmCreDocIns (ActFrmNewRubCri + 29) -#define ActCreFolDocIns (ActFrmNewRubCri + 30) -#define ActCreLnkDocIns (ActFrmNewRubCri + 31) -#define ActRenFolDocIns (ActFrmNewRubCri + 32) -#define ActRcvFilDocInsDZ (ActFrmNewRubCri + 33) -#define ActRcvFilDocInsCla (ActFrmNewRubCri + 34) -#define ActExpAdmDocIns (ActFrmNewRubCri + 35) -#define ActConAdmDocIns (ActFrmNewRubCri + 36) -#define ActZIPAdmDocIns (ActFrmNewRubCri + 37) -#define ActUnhDocIns (ActFrmNewRubCri + 38) -#define ActHidDocIns (ActFrmNewRubCri + 39) -#define ActReqDatAdmDocIns (ActFrmNewRubCri + 40) -#define ActChgDatAdmDocIns (ActFrmNewRubCri + 41) -#define ActDowAdmDocIns (ActFrmNewRubCri + 42) +#define ActChgToSeeDocIns (ActChgMaxRubCri + 14) +#define ActSeeDocIns (ActChgMaxRubCri + 15) +#define ActExpSeeDocIns (ActChgMaxRubCri + 16) +#define ActConSeeDocIns (ActChgMaxRubCri + 17) +#define ActZIPSeeDocIns (ActChgMaxRubCri + 18) +#define ActReqDatSeeDocIns (ActChgMaxRubCri + 19) +#define ActDowSeeDocIns (ActChgMaxRubCri + 20) +#define ActChgToAdmDocIns (ActChgMaxRubCri + 21) +#define ActAdmDocIns (ActChgMaxRubCri + 22) +#define ActReqRemFilDocIns (ActChgMaxRubCri + 23) +#define ActRemFilDocIns (ActChgMaxRubCri + 24) +#define ActRemFolDocIns (ActChgMaxRubCri + 25) +#define ActCopDocIns (ActChgMaxRubCri + 26) +#define ActPasDocIns (ActChgMaxRubCri + 27) +#define ActRemTreDocIns (ActChgMaxRubCri + 28) +#define ActFrmCreDocIns (ActChgMaxRubCri + 29) +#define ActCreFolDocIns (ActChgMaxRubCri + 30) +#define ActCreLnkDocIns (ActChgMaxRubCri + 31) +#define ActRenFolDocIns (ActChgMaxRubCri + 32) +#define ActRcvFilDocInsDZ (ActChgMaxRubCri + 33) +#define ActRcvFilDocInsCla (ActChgMaxRubCri + 34) +#define ActExpAdmDocIns (ActChgMaxRubCri + 35) +#define ActConAdmDocIns (ActChgMaxRubCri + 36) +#define ActZIPAdmDocIns (ActChgMaxRubCri + 37) +#define ActUnhDocIns (ActChgMaxRubCri + 38) +#define ActHidDocIns (ActChgMaxRubCri + 39) +#define ActReqDatAdmDocIns (ActChgMaxRubCri + 40) +#define ActChgDatAdmDocIns (ActChgMaxRubCri + 41) +#define ActDowAdmDocIns (ActChgMaxRubCri + 42) -#define ActReqRemFilShaIns (ActFrmNewRubCri + 43) -#define ActRemFilShaIns (ActFrmNewRubCri + 44) -#define ActRemFolShaIns (ActFrmNewRubCri + 45) -#define ActCopShaIns (ActFrmNewRubCri + 46) -#define ActPasShaIns (ActFrmNewRubCri + 47) -#define ActRemTreShaIns (ActFrmNewRubCri + 48) -#define ActFrmCreShaIns (ActFrmNewRubCri + 49) -#define ActCreFolShaIns (ActFrmNewRubCri + 50) -#define ActCreLnkShaIns (ActFrmNewRubCri + 51) -#define ActRenFolShaIns (ActFrmNewRubCri + 52) -#define ActRcvFilShaInsDZ (ActFrmNewRubCri + 53) -#define ActRcvFilShaInsCla (ActFrmNewRubCri + 54) -#define ActExpShaIns (ActFrmNewRubCri + 55) -#define ActConShaIns (ActFrmNewRubCri + 56) -#define ActZIPShaIns (ActFrmNewRubCri + 57) -#define ActReqDatShaIns (ActFrmNewRubCri + 58) -#define ActChgDatShaIns (ActFrmNewRubCri + 59) -#define ActDowShaIns (ActFrmNewRubCri + 60) +#define ActReqRemFilShaIns (ActChgMaxRubCri + 43) +#define ActRemFilShaIns (ActChgMaxRubCri + 44) +#define ActRemFolShaIns (ActChgMaxRubCri + 45) +#define ActCopShaIns (ActChgMaxRubCri + 46) +#define ActPasShaIns (ActChgMaxRubCri + 47) +#define ActRemTreShaIns (ActChgMaxRubCri + 48) +#define ActFrmCreShaIns (ActChgMaxRubCri + 49) +#define ActCreFolShaIns (ActChgMaxRubCri + 50) +#define ActCreLnkShaIns (ActChgMaxRubCri + 51) +#define ActRenFolShaIns (ActChgMaxRubCri + 52) +#define ActRcvFilShaInsDZ (ActChgMaxRubCri + 53) +#define ActRcvFilShaInsCla (ActChgMaxRubCri + 54) +#define ActExpShaIns (ActChgMaxRubCri + 55) +#define ActConShaIns (ActChgMaxRubCri + 56) +#define ActZIPShaIns (ActChgMaxRubCri + 57) +#define ActReqDatShaIns (ActChgMaxRubCri + 58) +#define ActChgDatShaIns (ActChgMaxRubCri + 59) +#define ActDowShaIns (ActChgMaxRubCri + 60) -#define ActChgToSeeDocCtr (ActFrmNewRubCri + 61) -#define ActSeeDocCtr (ActFrmNewRubCri + 62) -#define ActExpSeeDocCtr (ActFrmNewRubCri + 63) -#define ActConSeeDocCtr (ActFrmNewRubCri + 64) -#define ActZIPSeeDocCtr (ActFrmNewRubCri + 65) -#define ActReqDatSeeDocCtr (ActFrmNewRubCri + 66) -#define ActDowSeeDocCtr (ActFrmNewRubCri + 67) -#define ActChgToAdmDocCtr (ActFrmNewRubCri + 68) -#define ActAdmDocCtr (ActFrmNewRubCri + 69) -#define ActReqRemFilDocCtr (ActFrmNewRubCri + 70) -#define ActRemFilDocCtr (ActFrmNewRubCri + 71) -#define ActRemFolDocCtr (ActFrmNewRubCri + 72) -#define ActCopDocCtr (ActFrmNewRubCri + 73) -#define ActPasDocCtr (ActFrmNewRubCri + 74) -#define ActRemTreDocCtr (ActFrmNewRubCri + 75) -#define ActFrmCreDocCtr (ActFrmNewRubCri + 76) -#define ActCreFolDocCtr (ActFrmNewRubCri + 77) -#define ActCreLnkDocCtr (ActFrmNewRubCri + 78) -#define ActRenFolDocCtr (ActFrmNewRubCri + 79) -#define ActRcvFilDocCtrDZ (ActFrmNewRubCri + 80) -#define ActRcvFilDocCtrCla (ActFrmNewRubCri + 81) -#define ActExpAdmDocCtr (ActFrmNewRubCri + 82) -#define ActConAdmDocCtr (ActFrmNewRubCri + 83) -#define ActZIPAdmDocCtr (ActFrmNewRubCri + 84) -#define ActUnhDocCtr (ActFrmNewRubCri + 85) -#define ActHidDocCtr (ActFrmNewRubCri + 86) -#define ActReqDatAdmDocCtr (ActFrmNewRubCri + 87) -#define ActChgDatAdmDocCtr (ActFrmNewRubCri + 88) -#define ActDowAdmDocCtr (ActFrmNewRubCri + 89) +#define ActChgToSeeDocCtr (ActChgMaxRubCri + 61) +#define ActSeeDocCtr (ActChgMaxRubCri + 62) +#define ActExpSeeDocCtr (ActChgMaxRubCri + 63) +#define ActConSeeDocCtr (ActChgMaxRubCri + 64) +#define ActZIPSeeDocCtr (ActChgMaxRubCri + 65) +#define ActReqDatSeeDocCtr (ActChgMaxRubCri + 66) +#define ActDowSeeDocCtr (ActChgMaxRubCri + 67) +#define ActChgToAdmDocCtr (ActChgMaxRubCri + 68) +#define ActAdmDocCtr (ActChgMaxRubCri + 69) +#define ActReqRemFilDocCtr (ActChgMaxRubCri + 70) +#define ActRemFilDocCtr (ActChgMaxRubCri + 71) +#define ActRemFolDocCtr (ActChgMaxRubCri + 72) +#define ActCopDocCtr (ActChgMaxRubCri + 73) +#define ActPasDocCtr (ActChgMaxRubCri + 74) +#define ActRemTreDocCtr (ActChgMaxRubCri + 75) +#define ActFrmCreDocCtr (ActChgMaxRubCri + 76) +#define ActCreFolDocCtr (ActChgMaxRubCri + 77) +#define ActCreLnkDocCtr (ActChgMaxRubCri + 78) +#define ActRenFolDocCtr (ActChgMaxRubCri + 79) +#define ActRcvFilDocCtrDZ (ActChgMaxRubCri + 80) +#define ActRcvFilDocCtrCla (ActChgMaxRubCri + 81) +#define ActExpAdmDocCtr (ActChgMaxRubCri + 82) +#define ActConAdmDocCtr (ActChgMaxRubCri + 83) +#define ActZIPAdmDocCtr (ActChgMaxRubCri + 84) +#define ActUnhDocCtr (ActChgMaxRubCri + 85) +#define ActHidDocCtr (ActChgMaxRubCri + 86) +#define ActReqDatAdmDocCtr (ActChgMaxRubCri + 87) +#define ActChgDatAdmDocCtr (ActChgMaxRubCri + 88) +#define ActDowAdmDocCtr (ActChgMaxRubCri + 89) -#define ActReqRemFilShaCtr (ActFrmNewRubCri + 90) -#define ActRemFilShaCtr (ActFrmNewRubCri + 91) -#define ActRemFolShaCtr (ActFrmNewRubCri + 92) -#define ActCopShaCtr (ActFrmNewRubCri + 93) -#define ActPasShaCtr (ActFrmNewRubCri + 94) -#define ActRemTreShaCtr (ActFrmNewRubCri + 95) -#define ActFrmCreShaCtr (ActFrmNewRubCri + 96) -#define ActCreFolShaCtr (ActFrmNewRubCri + 97) -#define ActCreLnkShaCtr (ActFrmNewRubCri + 98) -#define ActRenFolShaCtr (ActFrmNewRubCri + 99) -#define ActRcvFilShaCtrDZ (ActFrmNewRubCri + 100) -#define ActRcvFilShaCtrCla (ActFrmNewRubCri + 101) -#define ActExpShaCtr (ActFrmNewRubCri + 102) -#define ActConShaCtr (ActFrmNewRubCri + 103) -#define ActZIPShaCtr (ActFrmNewRubCri + 104) -#define ActReqDatShaCtr (ActFrmNewRubCri + 105) -#define ActChgDatShaCtr (ActFrmNewRubCri + 106) -#define ActDowShaCtr (ActFrmNewRubCri + 107) +#define ActReqRemFilShaCtr (ActChgMaxRubCri + 90) +#define ActRemFilShaCtr (ActChgMaxRubCri + 91) +#define ActRemFolShaCtr (ActChgMaxRubCri + 92) +#define ActCopShaCtr (ActChgMaxRubCri + 93) +#define ActPasShaCtr (ActChgMaxRubCri + 94) +#define ActRemTreShaCtr (ActChgMaxRubCri + 95) +#define ActFrmCreShaCtr (ActChgMaxRubCri + 96) +#define ActCreFolShaCtr (ActChgMaxRubCri + 97) +#define ActCreLnkShaCtr (ActChgMaxRubCri + 98) +#define ActRenFolShaCtr (ActChgMaxRubCri + 99) +#define ActRcvFilShaCtrDZ (ActChgMaxRubCri + 100) +#define ActRcvFilShaCtrCla (ActChgMaxRubCri + 101) +#define ActExpShaCtr (ActChgMaxRubCri + 102) +#define ActConShaCtr (ActChgMaxRubCri + 103) +#define ActZIPShaCtr (ActChgMaxRubCri + 104) +#define ActReqDatShaCtr (ActChgMaxRubCri + 105) +#define ActChgDatShaCtr (ActChgMaxRubCri + 106) +#define ActDowShaCtr (ActChgMaxRubCri + 107) -#define ActChgToSeeDocDeg (ActFrmNewRubCri + 108) -#define ActSeeDocDeg (ActFrmNewRubCri + 109) -#define ActExpSeeDocDeg (ActFrmNewRubCri + 110) -#define ActConSeeDocDeg (ActFrmNewRubCri + 111) -#define ActZIPSeeDocDeg (ActFrmNewRubCri + 112) -#define ActReqDatSeeDocDeg (ActFrmNewRubCri + 113) -#define ActDowSeeDocDeg (ActFrmNewRubCri + 114) -#define ActChgToAdmDocDeg (ActFrmNewRubCri + 115) -#define ActAdmDocDeg (ActFrmNewRubCri + 116) -#define ActReqRemFilDocDeg (ActFrmNewRubCri + 117) -#define ActRemFilDocDeg (ActFrmNewRubCri + 118) -#define ActRemFolDocDeg (ActFrmNewRubCri + 119) -#define ActCopDocDeg (ActFrmNewRubCri + 120) -#define ActPasDocDeg (ActFrmNewRubCri + 121) -#define ActRemTreDocDeg (ActFrmNewRubCri + 122) -#define ActFrmCreDocDeg (ActFrmNewRubCri + 123) -#define ActCreFolDocDeg (ActFrmNewRubCri + 124) -#define ActCreLnkDocDeg (ActFrmNewRubCri + 125) -#define ActRenFolDocDeg (ActFrmNewRubCri + 126) -#define ActRcvFilDocDegDZ (ActFrmNewRubCri + 127) -#define ActRcvFilDocDegCla (ActFrmNewRubCri + 128) -#define ActExpAdmDocDeg (ActFrmNewRubCri + 129) -#define ActConAdmDocDeg (ActFrmNewRubCri + 130) -#define ActZIPAdmDocDeg (ActFrmNewRubCri + 131) -#define ActUnhDocDeg (ActFrmNewRubCri + 132) -#define ActHidDocDeg (ActFrmNewRubCri + 133) -#define ActReqDatAdmDocDeg (ActFrmNewRubCri + 134) -#define ActChgDatAdmDocDeg (ActFrmNewRubCri + 135) -#define ActDowAdmDocDeg (ActFrmNewRubCri + 136) +#define ActChgToSeeDocDeg (ActChgMaxRubCri + 108) +#define ActSeeDocDeg (ActChgMaxRubCri + 109) +#define ActExpSeeDocDeg (ActChgMaxRubCri + 110) +#define ActConSeeDocDeg (ActChgMaxRubCri + 111) +#define ActZIPSeeDocDeg (ActChgMaxRubCri + 112) +#define ActReqDatSeeDocDeg (ActChgMaxRubCri + 113) +#define ActDowSeeDocDeg (ActChgMaxRubCri + 114) +#define ActChgToAdmDocDeg (ActChgMaxRubCri + 115) +#define ActAdmDocDeg (ActChgMaxRubCri + 116) +#define ActReqRemFilDocDeg (ActChgMaxRubCri + 117) +#define ActRemFilDocDeg (ActChgMaxRubCri + 118) +#define ActRemFolDocDeg (ActChgMaxRubCri + 119) +#define ActCopDocDeg (ActChgMaxRubCri + 120) +#define ActPasDocDeg (ActChgMaxRubCri + 121) +#define ActRemTreDocDeg (ActChgMaxRubCri + 122) +#define ActFrmCreDocDeg (ActChgMaxRubCri + 123) +#define ActCreFolDocDeg (ActChgMaxRubCri + 124) +#define ActCreLnkDocDeg (ActChgMaxRubCri + 125) +#define ActRenFolDocDeg (ActChgMaxRubCri + 126) +#define ActRcvFilDocDegDZ (ActChgMaxRubCri + 127) +#define ActRcvFilDocDegCla (ActChgMaxRubCri + 128) +#define ActExpAdmDocDeg (ActChgMaxRubCri + 129) +#define ActConAdmDocDeg (ActChgMaxRubCri + 130) +#define ActZIPAdmDocDeg (ActChgMaxRubCri + 131) +#define ActUnhDocDeg (ActChgMaxRubCri + 132) +#define ActHidDocDeg (ActChgMaxRubCri + 133) +#define ActReqDatAdmDocDeg (ActChgMaxRubCri + 134) +#define ActChgDatAdmDocDeg (ActChgMaxRubCri + 135) +#define ActDowAdmDocDeg (ActChgMaxRubCri + 136) -#define ActReqRemFilShaDeg (ActFrmNewRubCri + 137) -#define ActRemFilShaDeg (ActFrmNewRubCri + 138) -#define ActRemFolShaDeg (ActFrmNewRubCri + 139) -#define ActCopShaDeg (ActFrmNewRubCri + 140) -#define ActPasShaDeg (ActFrmNewRubCri + 141) -#define ActRemTreShaDeg (ActFrmNewRubCri + 142) -#define ActFrmCreShaDeg (ActFrmNewRubCri + 143) -#define ActCreFolShaDeg (ActFrmNewRubCri + 144) -#define ActCreLnkShaDeg (ActFrmNewRubCri + 145) -#define ActRenFolShaDeg (ActFrmNewRubCri + 146) -#define ActRcvFilShaDegDZ (ActFrmNewRubCri + 147) -#define ActRcvFilShaDegCla (ActFrmNewRubCri + 148) -#define ActExpShaDeg (ActFrmNewRubCri + 149) -#define ActConShaDeg (ActFrmNewRubCri + 150) -#define ActZIPShaDeg (ActFrmNewRubCri + 151) -#define ActReqDatShaDeg (ActFrmNewRubCri + 152) -#define ActChgDatShaDeg (ActFrmNewRubCri + 153) -#define ActDowShaDeg (ActFrmNewRubCri + 154) +#define ActReqRemFilShaDeg (ActChgMaxRubCri + 137) +#define ActRemFilShaDeg (ActChgMaxRubCri + 138) +#define ActRemFolShaDeg (ActChgMaxRubCri + 139) +#define ActCopShaDeg (ActChgMaxRubCri + 140) +#define ActPasShaDeg (ActChgMaxRubCri + 141) +#define ActRemTreShaDeg (ActChgMaxRubCri + 142) +#define ActFrmCreShaDeg (ActChgMaxRubCri + 143) +#define ActCreFolShaDeg (ActChgMaxRubCri + 144) +#define ActCreLnkShaDeg (ActChgMaxRubCri + 145) +#define ActRenFolShaDeg (ActChgMaxRubCri + 146) +#define ActRcvFilShaDegDZ (ActChgMaxRubCri + 147) +#define ActRcvFilShaDegCla (ActChgMaxRubCri + 148) +#define ActExpShaDeg (ActChgMaxRubCri + 149) +#define ActConShaDeg (ActChgMaxRubCri + 150) +#define ActZIPShaDeg (ActChgMaxRubCri + 151) +#define ActReqDatShaDeg (ActChgMaxRubCri + 152) +#define ActChgDatShaDeg (ActChgMaxRubCri + 153) +#define ActDowShaDeg (ActChgMaxRubCri + 154) -#define ActChgToSeeDocCrs (ActFrmNewRubCri + 155) -#define ActSeeDocCrs (ActFrmNewRubCri + 156) -#define ActExpSeeDocCrs (ActFrmNewRubCri + 157) -#define ActConSeeDocCrs (ActFrmNewRubCri + 158) -#define ActZIPSeeDocCrs (ActFrmNewRubCri + 159) -#define ActReqDatSeeDocCrs (ActFrmNewRubCri + 160) -#define ActReqLnkSeeDocCrs (ActFrmNewRubCri + 161) -#define ActDowSeeDocCrs (ActFrmNewRubCri + 162) +#define ActChgToSeeDocCrs (ActChgMaxRubCri + 155) +#define ActSeeDocCrs (ActChgMaxRubCri + 156) +#define ActExpSeeDocCrs (ActChgMaxRubCri + 157) +#define ActConSeeDocCrs (ActChgMaxRubCri + 158) +#define ActZIPSeeDocCrs (ActChgMaxRubCri + 159) +#define ActReqDatSeeDocCrs (ActChgMaxRubCri + 160) +#define ActReqLnkSeeDocCrs (ActChgMaxRubCri + 161) +#define ActDowSeeDocCrs (ActChgMaxRubCri + 162) -#define ActSeeDocGrp (ActFrmNewRubCri + 163) -#define ActExpSeeDocGrp (ActFrmNewRubCri + 164) -#define ActConSeeDocGrp (ActFrmNewRubCri + 165) -#define ActZIPSeeDocGrp (ActFrmNewRubCri + 166) -#define ActReqDatSeeDocGrp (ActFrmNewRubCri + 167) -#define ActDowSeeDocGrp (ActFrmNewRubCri + 168) +#define ActSeeDocGrp (ActChgMaxRubCri + 163) +#define ActExpSeeDocGrp (ActChgMaxRubCri + 164) +#define ActConSeeDocGrp (ActChgMaxRubCri + 165) +#define ActZIPSeeDocGrp (ActChgMaxRubCri + 166) +#define ActReqDatSeeDocGrp (ActChgMaxRubCri + 167) +#define ActDowSeeDocGrp (ActChgMaxRubCri + 168) -#define ActChgToAdmDocCrs (ActFrmNewRubCri + 169) -#define ActAdmDocCrs (ActFrmNewRubCri + 170) -#define ActReqRemFilDocCrs (ActFrmNewRubCri + 171) -#define ActRemFilDocCrs (ActFrmNewRubCri + 172) -#define ActRemFolDocCrs (ActFrmNewRubCri + 173) -#define ActCopDocCrs (ActFrmNewRubCri + 174) -#define ActPasDocCrs (ActFrmNewRubCri + 175) -#define ActRemTreDocCrs (ActFrmNewRubCri + 176) -#define ActFrmCreDocCrs (ActFrmNewRubCri + 177) -#define ActCreFolDocCrs (ActFrmNewRubCri + 178) -#define ActCreLnkDocCrs (ActFrmNewRubCri + 179) -#define ActRenFolDocCrs (ActFrmNewRubCri + 180) -#define ActRcvFilDocCrsDZ (ActFrmNewRubCri + 181) -#define ActRcvFilDocCrsCla (ActFrmNewRubCri + 182) -#define ActExpAdmDocCrs (ActFrmNewRubCri + 183) -#define ActConAdmDocCrs (ActFrmNewRubCri + 184) -#define ActZIPAdmDocCrs (ActFrmNewRubCri + 185) -#define ActUnhDocCrs (ActFrmNewRubCri + 186) -#define ActHidDocCrs (ActFrmNewRubCri + 187) -#define ActReqDatAdmDocCrs (ActFrmNewRubCri + 188) -#define ActChgDatAdmDocCrs (ActFrmNewRubCri + 189) -#define ActReqLnkAdmDocCrs (ActFrmNewRubCri + 190) -#define ActDowAdmDocCrs (ActFrmNewRubCri + 191) +#define ActChgToAdmDocCrs (ActChgMaxRubCri + 169) +#define ActAdmDocCrs (ActChgMaxRubCri + 170) +#define ActReqRemFilDocCrs (ActChgMaxRubCri + 171) +#define ActRemFilDocCrs (ActChgMaxRubCri + 172) +#define ActRemFolDocCrs (ActChgMaxRubCri + 173) +#define ActCopDocCrs (ActChgMaxRubCri + 174) +#define ActPasDocCrs (ActChgMaxRubCri + 175) +#define ActRemTreDocCrs (ActChgMaxRubCri + 176) +#define ActFrmCreDocCrs (ActChgMaxRubCri + 177) +#define ActCreFolDocCrs (ActChgMaxRubCri + 178) +#define ActCreLnkDocCrs (ActChgMaxRubCri + 179) +#define ActRenFolDocCrs (ActChgMaxRubCri + 180) +#define ActRcvFilDocCrsDZ (ActChgMaxRubCri + 181) +#define ActRcvFilDocCrsCla (ActChgMaxRubCri + 182) +#define ActExpAdmDocCrs (ActChgMaxRubCri + 183) +#define ActConAdmDocCrs (ActChgMaxRubCri + 184) +#define ActZIPAdmDocCrs (ActChgMaxRubCri + 185) +#define ActUnhDocCrs (ActChgMaxRubCri + 186) +#define ActHidDocCrs (ActChgMaxRubCri + 187) +#define ActReqDatAdmDocCrs (ActChgMaxRubCri + 188) +#define ActChgDatAdmDocCrs (ActChgMaxRubCri + 189) +#define ActReqLnkAdmDocCrs (ActChgMaxRubCri + 190) +#define ActDowAdmDocCrs (ActChgMaxRubCri + 191) -#define ActAdmDocGrp (ActFrmNewRubCri + 192) -#define ActReqRemFilDocGrp (ActFrmNewRubCri + 193) -#define ActRemFilDocGrp (ActFrmNewRubCri + 194) -#define ActRemFolDocGrp (ActFrmNewRubCri + 195) -#define ActCopDocGrp (ActFrmNewRubCri + 196) -#define ActPasDocGrp (ActFrmNewRubCri + 197) -#define ActRemTreDocGrp (ActFrmNewRubCri + 198) -#define ActFrmCreDocGrp (ActFrmNewRubCri + 199) -#define ActCreFolDocGrp (ActFrmNewRubCri + 200) -#define ActCreLnkDocGrp (ActFrmNewRubCri + 201) -#define ActRenFolDocGrp (ActFrmNewRubCri + 202) -#define ActRcvFilDocGrpDZ (ActFrmNewRubCri + 203) -#define ActRcvFilDocGrpCla (ActFrmNewRubCri + 204) -#define ActExpAdmDocGrp (ActFrmNewRubCri + 205) -#define ActConAdmDocGrp (ActFrmNewRubCri + 206) -#define ActZIPAdmDocGrp (ActFrmNewRubCri + 207) -#define ActUnhDocGrp (ActFrmNewRubCri + 208) -#define ActHidDocGrp (ActFrmNewRubCri + 209) -#define ActReqDatAdmDocGrp (ActFrmNewRubCri + 210) -#define ActChgDatAdmDocGrp (ActFrmNewRubCri + 211) -#define ActDowAdmDocGrp (ActFrmNewRubCri + 212) +#define ActAdmDocGrp (ActChgMaxRubCri + 192) +#define ActReqRemFilDocGrp (ActChgMaxRubCri + 193) +#define ActRemFilDocGrp (ActChgMaxRubCri + 194) +#define ActRemFolDocGrp (ActChgMaxRubCri + 195) +#define ActCopDocGrp (ActChgMaxRubCri + 196) +#define ActPasDocGrp (ActChgMaxRubCri + 197) +#define ActRemTreDocGrp (ActChgMaxRubCri + 198) +#define ActFrmCreDocGrp (ActChgMaxRubCri + 199) +#define ActCreFolDocGrp (ActChgMaxRubCri + 200) +#define ActCreLnkDocGrp (ActChgMaxRubCri + 201) +#define ActRenFolDocGrp (ActChgMaxRubCri + 202) +#define ActRcvFilDocGrpDZ (ActChgMaxRubCri + 203) +#define ActRcvFilDocGrpCla (ActChgMaxRubCri + 204) +#define ActExpAdmDocGrp (ActChgMaxRubCri + 205) +#define ActConAdmDocGrp (ActChgMaxRubCri + 206) +#define ActZIPAdmDocGrp (ActChgMaxRubCri + 207) +#define ActUnhDocGrp (ActChgMaxRubCri + 208) +#define ActHidDocGrp (ActChgMaxRubCri + 209) +#define ActReqDatAdmDocGrp (ActChgMaxRubCri + 210) +#define ActChgDatAdmDocGrp (ActChgMaxRubCri + 211) +#define ActDowAdmDocGrp (ActChgMaxRubCri + 212) -#define ActChgToAdmTch (ActFrmNewRubCri + 213) +#define ActChgToAdmTch (ActChgMaxRubCri + 213) -#define ActAdmTchCrs (ActFrmNewRubCri + 214) -#define ActReqRemFilTchCrs (ActFrmNewRubCri + 215) -#define ActRemFilTchCrs (ActFrmNewRubCri + 216) -#define ActRemFolTchCrs (ActFrmNewRubCri + 217) -#define ActCopTchCrs (ActFrmNewRubCri + 218) -#define ActPasTchCrs (ActFrmNewRubCri + 219) -#define ActRemTreTchCrs (ActFrmNewRubCri + 220) -#define ActFrmCreTchCrs (ActFrmNewRubCri + 221) -#define ActCreFolTchCrs (ActFrmNewRubCri + 222) -#define ActCreLnkTchCrs (ActFrmNewRubCri + 223) -#define ActRenFolTchCrs (ActFrmNewRubCri + 224) -#define ActRcvFilTchCrsDZ (ActFrmNewRubCri + 225) -#define ActRcvFilTchCrsCla (ActFrmNewRubCri + 226) -#define ActExpTchCrs (ActFrmNewRubCri + 227) -#define ActConTchCrs (ActFrmNewRubCri + 228) -#define ActZIPTchCrs (ActFrmNewRubCri + 229) -#define ActReqDatTchCrs (ActFrmNewRubCri + 230) -#define ActChgDatTchCrs (ActFrmNewRubCri + 231) -#define ActDowTchCrs (ActFrmNewRubCri + 232) +#define ActAdmTchCrs (ActChgMaxRubCri + 214) +#define ActReqRemFilTchCrs (ActChgMaxRubCri + 215) +#define ActRemFilTchCrs (ActChgMaxRubCri + 216) +#define ActRemFolTchCrs (ActChgMaxRubCri + 217) +#define ActCopTchCrs (ActChgMaxRubCri + 218) +#define ActPasTchCrs (ActChgMaxRubCri + 219) +#define ActRemTreTchCrs (ActChgMaxRubCri + 220) +#define ActFrmCreTchCrs (ActChgMaxRubCri + 221) +#define ActCreFolTchCrs (ActChgMaxRubCri + 222) +#define ActCreLnkTchCrs (ActChgMaxRubCri + 223) +#define ActRenFolTchCrs (ActChgMaxRubCri + 224) +#define ActRcvFilTchCrsDZ (ActChgMaxRubCri + 225) +#define ActRcvFilTchCrsCla (ActChgMaxRubCri + 226) +#define ActExpTchCrs (ActChgMaxRubCri + 227) +#define ActConTchCrs (ActChgMaxRubCri + 228) +#define ActZIPTchCrs (ActChgMaxRubCri + 229) +#define ActReqDatTchCrs (ActChgMaxRubCri + 230) +#define ActChgDatTchCrs (ActChgMaxRubCri + 231) +#define ActDowTchCrs (ActChgMaxRubCri + 232) -#define ActAdmTchGrp (ActFrmNewRubCri + 233) -#define ActReqRemFilTchGrp (ActFrmNewRubCri + 234) -#define ActRemFilTchGrp (ActFrmNewRubCri + 235) -#define ActRemFolTchGrp (ActFrmNewRubCri + 236) -#define ActCopTchGrp (ActFrmNewRubCri + 237) -#define ActPasTchGrp (ActFrmNewRubCri + 238) -#define ActRemTreTchGrp (ActFrmNewRubCri + 239) -#define ActFrmCreTchGrp (ActFrmNewRubCri + 240) -#define ActCreFolTchGrp (ActFrmNewRubCri + 241) -#define ActCreLnkTchGrp (ActFrmNewRubCri + 242) -#define ActRenFolTchGrp (ActFrmNewRubCri + 243) -#define ActRcvFilTchGrpDZ (ActFrmNewRubCri + 244) -#define ActRcvFilTchGrpCla (ActFrmNewRubCri + 245) -#define ActExpTchGrp (ActFrmNewRubCri + 246) -#define ActConTchGrp (ActFrmNewRubCri + 247) -#define ActZIPTchGrp (ActFrmNewRubCri + 248) -#define ActReqDatTchGrp (ActFrmNewRubCri + 249) -#define ActChgDatTchGrp (ActFrmNewRubCri + 250) -#define ActDowTchGrp (ActFrmNewRubCri + 251) +#define ActAdmTchGrp (ActChgMaxRubCri + 233) +#define ActReqRemFilTchGrp (ActChgMaxRubCri + 234) +#define ActRemFilTchGrp (ActChgMaxRubCri + 235) +#define ActRemFolTchGrp (ActChgMaxRubCri + 236) +#define ActCopTchGrp (ActChgMaxRubCri + 237) +#define ActPasTchGrp (ActChgMaxRubCri + 238) +#define ActRemTreTchGrp (ActChgMaxRubCri + 239) +#define ActFrmCreTchGrp (ActChgMaxRubCri + 240) +#define ActCreFolTchGrp (ActChgMaxRubCri + 241) +#define ActCreLnkTchGrp (ActChgMaxRubCri + 242) +#define ActRenFolTchGrp (ActChgMaxRubCri + 243) +#define ActRcvFilTchGrpDZ (ActChgMaxRubCri + 244) +#define ActRcvFilTchGrpCla (ActChgMaxRubCri + 245) +#define ActExpTchGrp (ActChgMaxRubCri + 246) +#define ActConTchGrp (ActChgMaxRubCri + 247) +#define ActZIPTchGrp (ActChgMaxRubCri + 248) +#define ActReqDatTchGrp (ActChgMaxRubCri + 249) +#define ActChgDatTchGrp (ActChgMaxRubCri + 250) +#define ActDowTchGrp (ActChgMaxRubCri + 251) -#define ActChgToAdmSha (ActFrmNewRubCri + 252) +#define ActChgToAdmSha (ActChgMaxRubCri + 252) -#define ActAdmShaCrs (ActFrmNewRubCri + 253) -#define ActReqRemFilShaCrs (ActFrmNewRubCri + 254) -#define ActRemFilShaCrs (ActFrmNewRubCri + 255) -#define ActRemFolShaCrs (ActFrmNewRubCri + 256) -#define ActCopShaCrs (ActFrmNewRubCri + 257) -#define ActPasShaCrs (ActFrmNewRubCri + 258) -#define ActRemTreShaCrs (ActFrmNewRubCri + 259) -#define ActFrmCreShaCrs (ActFrmNewRubCri + 260) -#define ActCreFolShaCrs (ActFrmNewRubCri + 261) -#define ActCreLnkShaCrs (ActFrmNewRubCri + 262) -#define ActRenFolShaCrs (ActFrmNewRubCri + 263) -#define ActRcvFilShaCrsDZ (ActFrmNewRubCri + 264) -#define ActRcvFilShaCrsCla (ActFrmNewRubCri + 265) -#define ActExpShaCrs (ActFrmNewRubCri + 266) -#define ActConShaCrs (ActFrmNewRubCri + 267) -#define ActZIPShaCrs (ActFrmNewRubCri + 268) -#define ActReqDatShaCrs (ActFrmNewRubCri + 269) -#define ActChgDatShaCrs (ActFrmNewRubCri + 270) -#define ActDowShaCrs (ActFrmNewRubCri + 271) +#define ActAdmShaCrs (ActChgMaxRubCri + 253) +#define ActReqRemFilShaCrs (ActChgMaxRubCri + 254) +#define ActRemFilShaCrs (ActChgMaxRubCri + 255) +#define ActRemFolShaCrs (ActChgMaxRubCri + 256) +#define ActCopShaCrs (ActChgMaxRubCri + 257) +#define ActPasShaCrs (ActChgMaxRubCri + 258) +#define ActRemTreShaCrs (ActChgMaxRubCri + 259) +#define ActFrmCreShaCrs (ActChgMaxRubCri + 260) +#define ActCreFolShaCrs (ActChgMaxRubCri + 261) +#define ActCreLnkShaCrs (ActChgMaxRubCri + 262) +#define ActRenFolShaCrs (ActChgMaxRubCri + 263) +#define ActRcvFilShaCrsDZ (ActChgMaxRubCri + 264) +#define ActRcvFilShaCrsCla (ActChgMaxRubCri + 265) +#define ActExpShaCrs (ActChgMaxRubCri + 266) +#define ActConShaCrs (ActChgMaxRubCri + 267) +#define ActZIPShaCrs (ActChgMaxRubCri + 268) +#define ActReqDatShaCrs (ActChgMaxRubCri + 269) +#define ActChgDatShaCrs (ActChgMaxRubCri + 270) +#define ActDowShaCrs (ActChgMaxRubCri + 271) -#define ActAdmShaGrp (ActFrmNewRubCri + 272) -#define ActReqRemFilShaGrp (ActFrmNewRubCri + 273) -#define ActRemFilShaGrp (ActFrmNewRubCri + 274) -#define ActRemFolShaGrp (ActFrmNewRubCri + 275) -#define ActCopShaGrp (ActFrmNewRubCri + 276) -#define ActPasShaGrp (ActFrmNewRubCri + 277) -#define ActRemTreShaGrp (ActFrmNewRubCri + 278) -#define ActFrmCreShaGrp (ActFrmNewRubCri + 279) -#define ActCreFolShaGrp (ActFrmNewRubCri + 280) -#define ActCreLnkShaGrp (ActFrmNewRubCri + 281) -#define ActRenFolShaGrp (ActFrmNewRubCri + 282) -#define ActRcvFilShaGrpDZ (ActFrmNewRubCri + 283) -#define ActRcvFilShaGrpCla (ActFrmNewRubCri + 284) -#define ActExpShaGrp (ActFrmNewRubCri + 285) -#define ActConShaGrp (ActFrmNewRubCri + 286) -#define ActZIPShaGrp (ActFrmNewRubCri + 287) -#define ActReqDatShaGrp (ActFrmNewRubCri + 288) -#define ActChgDatShaGrp (ActFrmNewRubCri + 289) -#define ActDowShaGrp (ActFrmNewRubCri + 290) +#define ActAdmShaGrp (ActChgMaxRubCri + 272) +#define ActReqRemFilShaGrp (ActChgMaxRubCri + 273) +#define ActRemFilShaGrp (ActChgMaxRubCri + 274) +#define ActRemFolShaGrp (ActChgMaxRubCri + 275) +#define ActCopShaGrp (ActChgMaxRubCri + 276) +#define ActPasShaGrp (ActChgMaxRubCri + 277) +#define ActRemTreShaGrp (ActChgMaxRubCri + 278) +#define ActFrmCreShaGrp (ActChgMaxRubCri + 279) +#define ActCreFolShaGrp (ActChgMaxRubCri + 280) +#define ActCreLnkShaGrp (ActChgMaxRubCri + 281) +#define ActRenFolShaGrp (ActChgMaxRubCri + 282) +#define ActRcvFilShaGrpDZ (ActChgMaxRubCri + 283) +#define ActRcvFilShaGrpCla (ActChgMaxRubCri + 284) +#define ActExpShaGrp (ActChgMaxRubCri + 285) +#define ActConShaGrp (ActChgMaxRubCri + 286) +#define ActZIPShaGrp (ActChgMaxRubCri + 287) +#define ActReqDatShaGrp (ActChgMaxRubCri + 288) +#define ActChgDatShaGrp (ActChgMaxRubCri + 289) +#define ActDowShaGrp (ActChgMaxRubCri + 290) -#define ActAdmAsgWrkCrs (ActFrmNewRubCri + 291) +#define ActAdmAsgWrkCrs (ActChgMaxRubCri + 291) -#define ActReqRemFilAsgUsr (ActFrmNewRubCri + 292) -#define ActRemFilAsgUsr (ActFrmNewRubCri + 293) -#define ActRemFolAsgUsr (ActFrmNewRubCri + 294) -#define ActCopAsgUsr (ActFrmNewRubCri + 295) -#define ActPasAsgUsr (ActFrmNewRubCri + 296) -#define ActRemTreAsgUsr (ActFrmNewRubCri + 297) -#define ActFrmCreAsgUsr (ActFrmNewRubCri + 298) -#define ActCreFolAsgUsr (ActFrmNewRubCri + 299) -#define ActCreLnkAsgUsr (ActFrmNewRubCri + 300) -#define ActRenFolAsgUsr (ActFrmNewRubCri + 301) -#define ActRcvFilAsgUsrDZ (ActFrmNewRubCri + 302) -#define ActRcvFilAsgUsrCla (ActFrmNewRubCri + 303) -#define ActExpAsgUsr (ActFrmNewRubCri + 304) -#define ActConAsgUsr (ActFrmNewRubCri + 305) -#define ActZIPAsgUsr (ActFrmNewRubCri + 306) -#define ActReqDatAsgUsr (ActFrmNewRubCri + 307) -#define ActChgDatAsgUsr (ActFrmNewRubCri + 308) -#define ActDowAsgUsr (ActFrmNewRubCri + 309) +#define ActReqRemFilAsgUsr (ActChgMaxRubCri + 292) +#define ActRemFilAsgUsr (ActChgMaxRubCri + 293) +#define ActRemFolAsgUsr (ActChgMaxRubCri + 294) +#define ActCopAsgUsr (ActChgMaxRubCri + 295) +#define ActPasAsgUsr (ActChgMaxRubCri + 296) +#define ActRemTreAsgUsr (ActChgMaxRubCri + 297) +#define ActFrmCreAsgUsr (ActChgMaxRubCri + 298) +#define ActCreFolAsgUsr (ActChgMaxRubCri + 299) +#define ActCreLnkAsgUsr (ActChgMaxRubCri + 300) +#define ActRenFolAsgUsr (ActChgMaxRubCri + 301) +#define ActRcvFilAsgUsrDZ (ActChgMaxRubCri + 302) +#define ActRcvFilAsgUsrCla (ActChgMaxRubCri + 303) +#define ActExpAsgUsr (ActChgMaxRubCri + 304) +#define ActConAsgUsr (ActChgMaxRubCri + 305) +#define ActZIPAsgUsr (ActChgMaxRubCri + 306) +#define ActReqDatAsgUsr (ActChgMaxRubCri + 307) +#define ActChgDatAsgUsr (ActChgMaxRubCri + 308) +#define ActDowAsgUsr (ActChgMaxRubCri + 309) -#define ActReqRemFilWrkUsr (ActFrmNewRubCri + 310) -#define ActRemFilWrkUsr (ActFrmNewRubCri + 311) -#define ActRemFolWrkUsr (ActFrmNewRubCri + 312) -#define ActCopWrkUsr (ActFrmNewRubCri + 313) -#define ActPasWrkUsr (ActFrmNewRubCri + 314) -#define ActRemTreWrkUsr (ActFrmNewRubCri + 315) -#define ActFrmCreWrkUsr (ActFrmNewRubCri + 316) -#define ActCreFolWrkUsr (ActFrmNewRubCri + 317) -#define ActCreLnkWrkUsr (ActFrmNewRubCri + 318) -#define ActRenFolWrkUsr (ActFrmNewRubCri + 319) -#define ActRcvFilWrkUsrDZ (ActFrmNewRubCri + 320) -#define ActRcvFilWrkUsrCla (ActFrmNewRubCri + 321) -#define ActExpWrkUsr (ActFrmNewRubCri + 322) -#define ActConWrkUsr (ActFrmNewRubCri + 323) -#define ActZIPWrkUsr (ActFrmNewRubCri + 324) -#define ActReqDatWrkUsr (ActFrmNewRubCri + 325) -#define ActChgDatWrkUsr (ActFrmNewRubCri + 326) -#define ActDowWrkUsr (ActFrmNewRubCri + 327) +#define ActReqRemFilWrkUsr (ActChgMaxRubCri + 310) +#define ActRemFilWrkUsr (ActChgMaxRubCri + 311) +#define ActRemFolWrkUsr (ActChgMaxRubCri + 312) +#define ActCopWrkUsr (ActChgMaxRubCri + 313) +#define ActPasWrkUsr (ActChgMaxRubCri + 314) +#define ActRemTreWrkUsr (ActChgMaxRubCri + 315) +#define ActFrmCreWrkUsr (ActChgMaxRubCri + 316) +#define ActCreFolWrkUsr (ActChgMaxRubCri + 317) +#define ActCreLnkWrkUsr (ActChgMaxRubCri + 318) +#define ActRenFolWrkUsr (ActChgMaxRubCri + 319) +#define ActRcvFilWrkUsrDZ (ActChgMaxRubCri + 320) +#define ActRcvFilWrkUsrCla (ActChgMaxRubCri + 321) +#define ActExpWrkUsr (ActChgMaxRubCri + 322) +#define ActConWrkUsr (ActChgMaxRubCri + 323) +#define ActZIPWrkUsr (ActChgMaxRubCri + 324) +#define ActReqDatWrkUsr (ActChgMaxRubCri + 325) +#define ActChgDatWrkUsr (ActChgMaxRubCri + 326) +#define ActDowWrkUsr (ActChgMaxRubCri + 327) -#define ActReqRemFilAsgCrs (ActFrmNewRubCri + 328) -#define ActRemFilAsgCrs (ActFrmNewRubCri + 329) -#define ActRemFolAsgCrs (ActFrmNewRubCri + 330) -#define ActCopAsgCrs (ActFrmNewRubCri + 331) -#define ActPasAsgCrs (ActFrmNewRubCri + 332) -#define ActRemTreAsgCrs (ActFrmNewRubCri + 333) -#define ActFrmCreAsgCrs (ActFrmNewRubCri + 334) -#define ActCreFolAsgCrs (ActFrmNewRubCri + 335) -#define ActCreLnkAsgCrs (ActFrmNewRubCri + 336) -#define ActRenFolAsgCrs (ActFrmNewRubCri + 337) -#define ActRcvFilAsgCrsDZ (ActFrmNewRubCri + 338) -#define ActRcvFilAsgCrsCla (ActFrmNewRubCri + 339) -#define ActExpAsgCrs (ActFrmNewRubCri + 340) -#define ActConAsgCrs (ActFrmNewRubCri + 341) -#define ActZIPAsgCrs (ActFrmNewRubCri + 342) -#define ActReqDatAsgCrs (ActFrmNewRubCri + 343) -#define ActChgDatAsgCrs (ActFrmNewRubCri + 344) -#define ActDowAsgCrs (ActFrmNewRubCri + 345) +#define ActReqRemFilAsgCrs (ActChgMaxRubCri + 328) +#define ActRemFilAsgCrs (ActChgMaxRubCri + 329) +#define ActRemFolAsgCrs (ActChgMaxRubCri + 330) +#define ActCopAsgCrs (ActChgMaxRubCri + 331) +#define ActPasAsgCrs (ActChgMaxRubCri + 332) +#define ActRemTreAsgCrs (ActChgMaxRubCri + 333) +#define ActFrmCreAsgCrs (ActChgMaxRubCri + 334) +#define ActCreFolAsgCrs (ActChgMaxRubCri + 335) +#define ActCreLnkAsgCrs (ActChgMaxRubCri + 336) +#define ActRenFolAsgCrs (ActChgMaxRubCri + 337) +#define ActRcvFilAsgCrsDZ (ActChgMaxRubCri + 338) +#define ActRcvFilAsgCrsCla (ActChgMaxRubCri + 339) +#define ActExpAsgCrs (ActChgMaxRubCri + 340) +#define ActConAsgCrs (ActChgMaxRubCri + 341) +#define ActZIPAsgCrs (ActChgMaxRubCri + 342) +#define ActReqDatAsgCrs (ActChgMaxRubCri + 343) +#define ActChgDatAsgCrs (ActChgMaxRubCri + 344) +#define ActDowAsgCrs (ActChgMaxRubCri + 345) -#define ActReqRemFilWrkCrs (ActFrmNewRubCri + 346) -#define ActRemFilWrkCrs (ActFrmNewRubCri + 347) -#define ActRemFolWrkCrs (ActFrmNewRubCri + 348) -#define ActCopWrkCrs (ActFrmNewRubCri + 349) -#define ActPasWrkCrs (ActFrmNewRubCri + 350) -#define ActRemTreWrkCrs (ActFrmNewRubCri + 351) -#define ActFrmCreWrkCrs (ActFrmNewRubCri + 352) -#define ActCreFolWrkCrs (ActFrmNewRubCri + 353) -#define ActCreLnkWrkCrs (ActFrmNewRubCri + 354) -#define ActRenFolWrkCrs (ActFrmNewRubCri + 355) -#define ActRcvFilWrkCrsDZ (ActFrmNewRubCri + 356) -#define ActRcvFilWrkCrsCla (ActFrmNewRubCri + 357) -#define ActExpWrkCrs (ActFrmNewRubCri + 358) -#define ActConWrkCrs (ActFrmNewRubCri + 359) -#define ActZIPWrkCrs (ActFrmNewRubCri + 360) -#define ActReqDatWrkCrs (ActFrmNewRubCri + 361) -#define ActChgDatWrkCrs (ActFrmNewRubCri + 362) -#define ActDowWrkCrs (ActFrmNewRubCri + 363) +#define ActReqRemFilWrkCrs (ActChgMaxRubCri + 346) +#define ActRemFilWrkCrs (ActChgMaxRubCri + 347) +#define ActRemFolWrkCrs (ActChgMaxRubCri + 348) +#define ActCopWrkCrs (ActChgMaxRubCri + 349) +#define ActPasWrkCrs (ActChgMaxRubCri + 350) +#define ActRemTreWrkCrs (ActChgMaxRubCri + 351) +#define ActFrmCreWrkCrs (ActChgMaxRubCri + 352) +#define ActCreFolWrkCrs (ActChgMaxRubCri + 353) +#define ActCreLnkWrkCrs (ActChgMaxRubCri + 354) +#define ActRenFolWrkCrs (ActChgMaxRubCri + 355) +#define ActRcvFilWrkCrsDZ (ActChgMaxRubCri + 356) +#define ActRcvFilWrkCrsCla (ActChgMaxRubCri + 357) +#define ActExpWrkCrs (ActChgMaxRubCri + 358) +#define ActConWrkCrs (ActChgMaxRubCri + 359) +#define ActZIPWrkCrs (ActChgMaxRubCri + 360) +#define ActReqDatWrkCrs (ActChgMaxRubCri + 361) +#define ActChgDatWrkCrs (ActChgMaxRubCri + 362) +#define ActDowWrkCrs (ActChgMaxRubCri + 363) -#define ActChgToSeeMrk (ActFrmNewRubCri + 364) +#define ActChgToSeeMrk (ActChgMaxRubCri + 364) -#define ActSeeMrkCrs (ActFrmNewRubCri + 365) -#define ActExpSeeMrkCrs (ActFrmNewRubCri + 366) -#define ActConSeeMrkCrs (ActFrmNewRubCri + 367) -#define ActReqDatSeeMrkCrs (ActFrmNewRubCri + 368) -#define ActReqLnkSeeMrkCrs (ActFrmNewRubCri + 369) -#define ActSeeMyMrkCrs (ActFrmNewRubCri + 370) +#define ActSeeMrkCrs (ActChgMaxRubCri + 365) +#define ActExpSeeMrkCrs (ActChgMaxRubCri + 366) +#define ActConSeeMrkCrs (ActChgMaxRubCri + 367) +#define ActReqDatSeeMrkCrs (ActChgMaxRubCri + 368) +#define ActReqLnkSeeMrkCrs (ActChgMaxRubCri + 369) +#define ActSeeMyMrkCrs (ActChgMaxRubCri + 370) -#define ActSeeMrkGrp (ActFrmNewRubCri + 371) -#define ActExpSeeMrkGrp (ActFrmNewRubCri + 372) -#define ActConSeeMrkGrp (ActFrmNewRubCri + 373) -#define ActReqDatSeeMrkGrp (ActFrmNewRubCri + 374) -#define ActSeeMyMrkGrp (ActFrmNewRubCri + 375) +#define ActSeeMrkGrp (ActChgMaxRubCri + 371) +#define ActExpSeeMrkGrp (ActChgMaxRubCri + 372) +#define ActConSeeMrkGrp (ActChgMaxRubCri + 373) +#define ActReqDatSeeMrkGrp (ActChgMaxRubCri + 374) +#define ActSeeMyMrkGrp (ActChgMaxRubCri + 375) -#define ActChgToAdmMrk (ActFrmNewRubCri + 376) +#define ActChgToAdmMrk (ActChgMaxRubCri + 376) -#define ActAdmMrkCrs (ActFrmNewRubCri + 377) -#define ActReqRemFilMrkCrs (ActFrmNewRubCri + 378) -#define ActRemFilMrkCrs (ActFrmNewRubCri + 379) -#define ActRemFolMrkCrs (ActFrmNewRubCri + 380) -#define ActCopMrkCrs (ActFrmNewRubCri + 381) -#define ActPasMrkCrs (ActFrmNewRubCri + 382) -#define ActRemTreMrkCrs (ActFrmNewRubCri + 383) -#define ActFrmCreMrkCrs (ActFrmNewRubCri + 384) -#define ActCreFolMrkCrs (ActFrmNewRubCri + 385) -#define ActRenFolMrkCrs (ActFrmNewRubCri + 386) -#define ActRcvFilMrkCrsDZ (ActFrmNewRubCri + 387) -#define ActRcvFilMrkCrsCla (ActFrmNewRubCri + 388) -#define ActExpAdmMrkCrs (ActFrmNewRubCri + 389) -#define ActConAdmMrkCrs (ActFrmNewRubCri + 390) -#define ActZIPAdmMrkCrs (ActFrmNewRubCri + 391) -#define ActUnhMrkCrs (ActFrmNewRubCri + 392) -#define ActHidMrkCrs (ActFrmNewRubCri + 393) -#define ActReqDatAdmMrkCrs (ActFrmNewRubCri + 394) -#define ActChgDatAdmMrkCrs (ActFrmNewRubCri + 395) -#define ActReqLnkAdmMrkCrs (ActFrmNewRubCri + 396) -#define ActDowAdmMrkCrs (ActFrmNewRubCri + 397) -#define ActChgNumRowHeaCrs (ActFrmNewRubCri + 398) -#define ActChgNumRowFooCrs (ActFrmNewRubCri + 399) +#define ActAdmMrkCrs (ActChgMaxRubCri + 377) +#define ActReqRemFilMrkCrs (ActChgMaxRubCri + 378) +#define ActRemFilMrkCrs (ActChgMaxRubCri + 379) +#define ActRemFolMrkCrs (ActChgMaxRubCri + 380) +#define ActCopMrkCrs (ActChgMaxRubCri + 381) +#define ActPasMrkCrs (ActChgMaxRubCri + 382) +#define ActRemTreMrkCrs (ActChgMaxRubCri + 383) +#define ActFrmCreMrkCrs (ActChgMaxRubCri + 384) +#define ActCreFolMrkCrs (ActChgMaxRubCri + 385) +#define ActRenFolMrkCrs (ActChgMaxRubCri + 386) +#define ActRcvFilMrkCrsDZ (ActChgMaxRubCri + 387) +#define ActRcvFilMrkCrsCla (ActChgMaxRubCri + 388) +#define ActExpAdmMrkCrs (ActChgMaxRubCri + 389) +#define ActConAdmMrkCrs (ActChgMaxRubCri + 390) +#define ActZIPAdmMrkCrs (ActChgMaxRubCri + 391) +#define ActUnhMrkCrs (ActChgMaxRubCri + 392) +#define ActHidMrkCrs (ActChgMaxRubCri + 393) +#define ActReqDatAdmMrkCrs (ActChgMaxRubCri + 394) +#define ActChgDatAdmMrkCrs (ActChgMaxRubCri + 395) +#define ActReqLnkAdmMrkCrs (ActChgMaxRubCri + 396) +#define ActDowAdmMrkCrs (ActChgMaxRubCri + 397) +#define ActChgNumRowHeaCrs (ActChgMaxRubCri + 398) +#define ActChgNumRowFooCrs (ActChgMaxRubCri + 399) -#define ActAdmMrkGrp (ActFrmNewRubCri + 400) -#define ActReqRemFilMrkGrp (ActFrmNewRubCri + 401) -#define ActRemFilMrkGrp (ActFrmNewRubCri + 402) -#define ActRemFolMrkGrp (ActFrmNewRubCri + 403) -#define ActCopMrkGrp (ActFrmNewRubCri + 404) -#define ActPasMrkGrp (ActFrmNewRubCri + 405) -#define ActRemTreMrkGrp (ActFrmNewRubCri + 406) -#define ActFrmCreMrkGrp (ActFrmNewRubCri + 407) -#define ActCreFolMrkGrp (ActFrmNewRubCri + 408) -#define ActRenFolMrkGrp (ActFrmNewRubCri + 409) -#define ActRcvFilMrkGrpDZ (ActFrmNewRubCri + 410) -#define ActRcvFilMrkGrpCla (ActFrmNewRubCri + 411) -#define ActExpAdmMrkGrp (ActFrmNewRubCri + 412) -#define ActConAdmMrkGrp (ActFrmNewRubCri + 413) -#define ActZIPAdmMrkGrp (ActFrmNewRubCri + 414) -#define ActUnhMrkGrp (ActFrmNewRubCri + 415) -#define ActHidMrkGrp (ActFrmNewRubCri + 416) -#define ActReqDatAdmMrkGrp (ActFrmNewRubCri + 417) -#define ActChgDatAdmMrkGrp (ActFrmNewRubCri + 418) -#define ActDowAdmMrkGrp (ActFrmNewRubCri + 419) -#define ActChgNumRowHeaGrp (ActFrmNewRubCri + 420) -#define ActChgNumRowFooGrp (ActFrmNewRubCri + 421) +#define ActAdmMrkGrp (ActChgMaxRubCri + 400) +#define ActReqRemFilMrkGrp (ActChgMaxRubCri + 401) +#define ActRemFilMrkGrp (ActChgMaxRubCri + 402) +#define ActRemFolMrkGrp (ActChgMaxRubCri + 403) +#define ActCopMrkGrp (ActChgMaxRubCri + 404) +#define ActPasMrkGrp (ActChgMaxRubCri + 405) +#define ActRemTreMrkGrp (ActChgMaxRubCri + 406) +#define ActFrmCreMrkGrp (ActChgMaxRubCri + 407) +#define ActCreFolMrkGrp (ActChgMaxRubCri + 408) +#define ActRenFolMrkGrp (ActChgMaxRubCri + 409) +#define ActRcvFilMrkGrpDZ (ActChgMaxRubCri + 410) +#define ActRcvFilMrkGrpCla (ActChgMaxRubCri + 411) +#define ActExpAdmMrkGrp (ActChgMaxRubCri + 412) +#define ActConAdmMrkGrp (ActChgMaxRubCri + 413) +#define ActZIPAdmMrkGrp (ActChgMaxRubCri + 414) +#define ActUnhMrkGrp (ActChgMaxRubCri + 415) +#define ActHidMrkGrp (ActChgMaxRubCri + 416) +#define ActReqDatAdmMrkGrp (ActChgMaxRubCri + 417) +#define ActChgDatAdmMrkGrp (ActChgMaxRubCri + 418) +#define ActDowAdmMrkGrp (ActChgMaxRubCri + 419) +#define ActChgNumRowHeaGrp (ActChgMaxRubCri + 420) +#define ActChgNumRowFooGrp (ActChgMaxRubCri + 421) -#define ActReqRemFilBrf (ActFrmNewRubCri + 422) -#define ActRemFilBrf (ActFrmNewRubCri + 423) -#define ActRemFolBrf (ActFrmNewRubCri + 424) -#define ActCopBrf (ActFrmNewRubCri + 425) -#define ActPasBrf (ActFrmNewRubCri + 426) -#define ActRemTreBrf (ActFrmNewRubCri + 427) -#define ActFrmCreBrf (ActFrmNewRubCri + 428) -#define ActCreFolBrf (ActFrmNewRubCri + 429) -#define ActCreLnkBrf (ActFrmNewRubCri + 430) -#define ActRenFolBrf (ActFrmNewRubCri + 431) -#define ActRcvFilBrfDZ (ActFrmNewRubCri + 432) -#define ActRcvFilBrfCla (ActFrmNewRubCri + 433) -#define ActExpBrf (ActFrmNewRubCri + 434) -#define ActConBrf (ActFrmNewRubCri + 435) -#define ActZIPBrf (ActFrmNewRubCri + 436) -#define ActReqDatBrf (ActFrmNewRubCri + 437) -#define ActChgDatBrf (ActFrmNewRubCri + 438) -#define ActDowBrf (ActFrmNewRubCri + 439) -#define ActReqRemOldBrf (ActFrmNewRubCri + 440) -#define ActRemOldBrf (ActFrmNewRubCri + 441) +#define ActReqRemFilBrf (ActChgMaxRubCri + 422) +#define ActRemFilBrf (ActChgMaxRubCri + 423) +#define ActRemFolBrf (ActChgMaxRubCri + 424) +#define ActCopBrf (ActChgMaxRubCri + 425) +#define ActPasBrf (ActChgMaxRubCri + 426) +#define ActRemTreBrf (ActChgMaxRubCri + 427) +#define ActFrmCreBrf (ActChgMaxRubCri + 428) +#define ActCreFolBrf (ActChgMaxRubCri + 429) +#define ActCreLnkBrf (ActChgMaxRubCri + 430) +#define ActRenFolBrf (ActChgMaxRubCri + 431) +#define ActRcvFilBrfDZ (ActChgMaxRubCri + 432) +#define ActRcvFilBrfCla (ActChgMaxRubCri + 433) +#define ActExpBrf (ActChgMaxRubCri + 434) +#define ActConBrf (ActChgMaxRubCri + 435) +#define ActZIPBrf (ActChgMaxRubCri + 436) +#define ActReqDatBrf (ActChgMaxRubCri + 437) +#define ActChgDatBrf (ActChgMaxRubCri + 438) +#define ActDowBrf (ActChgMaxRubCri + 439) +#define ActReqRemOldBrf (ActChgMaxRubCri + 440) +#define ActRemOldBrf (ActChgMaxRubCri + 441) /*****************************************************************************/ /******************************* Users tab ***********************************/ @@ -1760,7 +1768,7 @@ #define ActLst_NUM_ACTIONS (ActChgMyTT1stDay + 1) -#define ActLst_MAX_ACTION_COD 1959 +#define ActLst_MAX_ACTION_COD 1967 #define ActLst_DEFAULT_ACTION_AFTER_LOGIN ActSeeGblTL diff --git a/swad_agenda.c b/swad_agenda.c index 34ea1c5b..f9e7b90c 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -1354,7 +1354,7 @@ void Agd_MakeEventPublic (void) /******************** Put a form to create a new event ***********************/ /*****************************************************************************/ -void Agd_RequestCreatOrEditEvent (void) +void Agd_ReqCreatOrEditEvent (void) { extern const char *Hlp_PROFILE_Agenda_new_event; extern const char *Hlp_PROFILE_Agenda_edit_event; @@ -1590,7 +1590,7 @@ void Agd_ReceiveFormEvent (void) } else // TODO: The form should be filled with partial data, now is always empty - Agd_RequestCreatOrEditEvent (); + Agd_ReqCreatOrEditEvent (); } /*****************************************************************************/ diff --git a/swad_agenda.h b/swad_agenda.h index 0b3086a9..ea9ae5dc 100644 --- a/swad_agenda.h +++ b/swad_agenda.h @@ -111,7 +111,7 @@ void Agd_GetParsAndShowMyAgenda (void); void Agd_ShowUsrAgenda (void); void Agd_ShowOtherAgendaAfterLogIn (void); -void Agd_RequestCreatOrEditEvent (void); +void Agd_ReqCreatOrEditEvent (void); void Agd_PutParsMyAgenda (unsigned Past__FutureEvents, unsigned PrivatPublicEvents, diff --git a/swad_assignment.c b/swad_assignment.c index 7505e524..78e0efe0 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -1144,7 +1144,7 @@ void Asg_UnhideAssignment (void) /****************** Put a form to create a new assignment ********************/ /*****************************************************************************/ -void Asg_RequestCreatOrEditAsg (void) +void Asg_ReqCreatOrEditAsg (void) { extern const char *Hlp_ASSESSMENT_Assignments_new_assignment; extern const char *Hlp_ASSESSMENT_Assignments_edit_assignment; @@ -1527,7 +1527,7 @@ void Asg_ReceiveFormAssignment (void) } else // TODO: The form should be filled with partial data, now is always empty - Asg_RequestCreatOrEditAsg (); + Asg_ReqCreatOrEditAsg (); } /*****************************************************************************/ diff --git a/swad_assignment.h b/swad_assignment.h index f813fae3..59dbfb6e 100644 --- a/swad_assignment.h +++ b/swad_assignment.h @@ -90,7 +90,7 @@ void Asg_ShowOneAssignmentInBox (struct Asg_Assignments *Assignments); Dat_StartEndTime_t Asg_GetParAsgOrder (void); -void Asg_RequestCreatOrEditAsg (void); +void Asg_ReqCreatOrEditAsg (void); void Asg_GetDataOfAssignmentByCod (struct Asg_Assignment *Asg); void Asg_GetDataOfAssignmentByFolder (struct Asg_Assignment *Asg); diff --git a/swad_attendance.c b/swad_attendance.c index fcb08402..4d0ca963 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -937,7 +937,7 @@ void Att_UnhideAttEvent (void) /*************** Put a form to create a new attendance event *****************/ /*****************************************************************************/ -void Att_RequestCreatOrEditAttEvent (void) +void Att_ReqCreatOrEditAttEvent (void) { extern const char *Hlp_USERS_Attendance_new_event; extern const char *Hlp_USERS_Attendance_edit_event; @@ -1252,7 +1252,7 @@ void Att_ReceiveFormAttEvent (void) Grp_FreeListCodSelectedGrps (); } else - Att_RequestCreatOrEditAttEvent (); + Att_ReqCreatOrEditAttEvent (); /***** Show attendance events again *****/ Att_SeeAttEvents (); diff --git a/swad_attendance.h b/swad_attendance.h index 235d73b4..932972a8 100644 --- a/swad_attendance.h +++ b/swad_attendance.h @@ -87,7 +87,7 @@ void Att_SeeAttEvents (void); bool Att_CheckIfICanEditAttEvents (void); -void Att_RequestCreatOrEditAttEvent (void); +void Att_ReqCreatOrEditAttEvent (void); bool Att_GetDataOfAttEventByCod (struct Att_Event *Event); void Att_AskRemAttEvent (void); diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c index 2919cf25..318774b3 100644 --- a/swad_call_for_exam.c +++ b/swad_call_for_exam.c @@ -396,7 +396,7 @@ void Cfe_PrintCallForExam (void) /************************** Remove a call for exam ***************************/ /*****************************************************************************/ -void Cfe_ReqRemoveCallForExam (void) +void Cfe_ReqRemCallForExam (void) { extern const char *Txt_Do_you_really_want_to_remove_the_following_call_for_exam; struct Cfe_CallsForExams CallsForExams; diff --git a/swad_call_for_exam.h b/swad_call_for_exam.h index c7958847..ef178a64 100644 --- a/swad_call_for_exam.h +++ b/swad_call_for_exam.h @@ -112,7 +112,7 @@ void Cfe_FreeMemCallForExam (struct Cfe_CallsForExams *CallsForExams); void Cfe_ReceiveCallForExam1 (void); void Cfe_ReceiveCallForExam2 (void); void Cfe_PrintCallForExam (void); -void Cfe_ReqRemoveCallForExam (void); +void Cfe_ReqRemCallForExam (void); void Cfe_RemoveCallForExam1 (void); void Cfe_RemoveCallForExam2 (void); void Cfe_HideCallForExam (void); diff --git a/swad_center_config.c b/swad_center_config.c index 2d0fb30c..5444c0c9 100644 --- a/swad_center_config.c +++ b/swad_center_config.c @@ -796,7 +796,7 @@ static void CtrCfg_NumCrss (void) /*********** Show a form for sending a logo of the current center ************/ /*****************************************************************************/ -void CtrCfg_RequestLogo (void) +void CtrCfg_ReqLogo (void) { Lgo_RequestLogo (HieLvl_CTR); } @@ -823,7 +823,7 @@ void CtrCfg_RemoveLogo (void) /*********** Show a form for sending a photo of the current center ***********/ /*****************************************************************************/ -void CtrCfg_RequestPhoto (void) +void CtrCfg_ReqPhoto (void) { extern const char *Txt_Photo; extern const char *Txt_Recommended_aspect_ratio; diff --git a/swad_center_config.h b/swad_center_config.h index c09899b7..fc7529e8 100644 --- a/swad_center_config.h +++ b/swad_center_config.h @@ -30,10 +30,10 @@ void CtrCfg_ShowConfiguration (void); void CtrCfg_PrintConfiguration (void); -void CtrCfg_RequestLogo (void); +void CtrCfg_ReqLogo (void); void CtrCfg_ReceiveLogo (void); void CtrCfg_RemoveLogo (void); -void CtrCfg_RequestPhoto (void); +void CtrCfg_ReqPhoto (void); void CtrCfg_ReceivePhoto (void); void CtrCfg_ChangeCtrPhotoAttr (void); void CtrCfg_ChangeCtrIns (void); diff --git a/swad_changelog.h b/swad_changelog.h index 540a63e5..88b24d9a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -629,10 +629,19 @@ TODO: Emilce Barrera Mesa: Podr TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen. */ -#define Log_PLATFORM_VERSION "SWAD 22.74.2 (2023-03-10)" +#define Log_PLATFORM_VERSION "SWAD 22.75 (2023-03-17)" #define CSS_FILE "swad22.57.1.css" #define JS_FILE "swad22.49.js" /* + Version 22.75.1: Mar 17, 2023 Fixed up and down criteria. (? lines) + Version 22.75: Mar 17, 2023 New module swad_rubric_criteria. (337631 lines) + Code refactoring in exams. + 2 changes necessary in database: +DROP TABLE IF EXISTS rub_criteria; +CREATE TABLE IF NOT EXISTS rub_criteria (CriCod INT NOT NULL AUTO_INCREMENT,RubCod INT NOT NULL,CriInd INT NOT NULL,MinVal DOUBLE PRECISION NOT NULL DEFAULT 0,MaxVal DOUBLE PRECISION NOT NULL DEFAULT 1,Title VARCHAR(2047) NOT NULL,UNIQUE INDEX(CriCod),UNIQUE INDEX(RubCod,CriInd)); + If you want to use MyISAM: +ALTER TABLE rub_criteria ENGINE=MyISAM; + Version 22.74.2: Mar 10, 2023 Fixed bugs in exam sets. (336744 lines) Version 22.74.1: Mar 10, 2023 Fixed links to help. (336741 lines) Version 22.74: Mar 10, 2023 New module swad_parameter_code. (336740 lines) diff --git a/swad_database.c b/swad_database.c index 330dc9ac..4ea4a0de 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2799,21 +2799,27 @@ mysql> DESCRIBE roo_check_in; /***** Table rub_criteria *****/ /* mysql> DESCRIBE rub_criteria; -+--------+------+------+-----+---------+-------+ -| Field | Type | Null | Key | Default | Extra | -+--------+------+------+-----+---------+-------+ -| RubCod | int | NO | PRI | NULL | | -| CriInd | int | NO | PRI | NULL | | -| CriCod | int | NO | | NULL | | -+--------+------+------+-----+---------+-------+ -3 rows in set (0,00 sec) ++--------+---------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++--------+---------------+------+-----+---------+----------------+ +| CriCod | int | NO | PRI | NULL | auto_increment | +| RubCod | int | NO | MUL | NULL | | +| CriInd | int | NO | | NULL | | +| MinVal | double | NO | | 0 | | +| MaxVal | double | NO | | 1 | | +| Title | varchar(2047) | NO | | NULL | | ++--------+---------------+------+-----+---------+----------------+ +6 rows in set (0,00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS rub_criteria (" + "CriCod INT NOT NULL AUTO_INCREMENT," "RubCod INT NOT NULL," "CriInd INT NOT NULL," - "CriCod INT NOT NULL," - "UNIQUE INDEX(RubCod,CriInd)," - "UNIQUE INDEX(RubCod,CriCod))"); + "MinVal DOUBLE PRECISION NOT NULL DEFAULT 0," + "MaxVal DOUBLE PRECISION NOT NULL DEFAULT 1," + "Title VARCHAR(2047) NOT NULL," + "UNIQUE INDEX(CriCod)," + "UNIQUE INDEX(RubCod,CriInd))"); /***** Table rub_rubrics *****/ /* diff --git a/swad_degree.c b/swad_degree.c index 025c4ee8..e5bc34ba 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -1535,33 +1535,6 @@ static void Deg_ShowAlertAndButtonToGoToDeg (void) Ale_ShowAlerts (NULL); } -/*****************************************************************************/ -/*********** Show a form for sending a logo of the current degree ************/ -/*****************************************************************************/ - -void Deg_RequestLogo (void) - { - Lgo_RequestLogo (HieLvl_DEG); - } - -/*****************************************************************************/ -/***************** Receive the logo of the current degree ********************/ -/*****************************************************************************/ - -void Deg_ReceiveLogo (void) - { - Lgo_ReceiveLogo (HieLvl_DEG); - } - -/*****************************************************************************/ -/****************** Remove the logo of the current degree ********************/ -/*****************************************************************************/ - -void Deg_RemoveLogo (void) - { - Lgo_RemoveLogo (HieLvl_DEG); - } - /*****************************************************************************/ /*********************** Get total number of degrees *************************/ /*****************************************************************************/ diff --git a/swad_degree.h b/swad_degree.h index 280e870d..ed960cf0 100644 --- a/swad_degree.h +++ b/swad_degree.h @@ -102,10 +102,6 @@ void Deg_ChangeDegWWW (void); void Deg_ChangeDegStatus (void); void Deg_ContEditAfterChgDeg (void); -void Deg_RequestLogo (void); -void Deg_ReceiveLogo (void); -void Deg_RemoveLogo (void); - unsigned Deg_GetCachedNumDegsInSys (void); void Deg_FlushCacheNumDegsInCty (void); diff --git a/swad_degree_config.c b/swad_degree_config.c index 1d69cfe3..67ce21ea 100644 --- a/swad_degree_config.c +++ b/swad_degree_config.c @@ -442,6 +442,33 @@ void DegCfg_ChangeDegWWW (void) DegCfg_ShowConfiguration (); } +/*****************************************************************************/ +/*********** Show a form for sending a logo of the current degree ************/ +/*****************************************************************************/ + +void DegCfg_ReqLogo (void) + { + Lgo_RequestLogo (HieLvl_DEG); + } + +/*****************************************************************************/ +/***************** Receive the logo of the current degree ********************/ +/*****************************************************************************/ + +void DegCfg_ReceiveLogo (void) + { + Lgo_ReceiveLogo (HieLvl_DEG); + } + +/*****************************************************************************/ +/****************** Remove the logo of the current degree ********************/ +/*****************************************************************************/ + +void DegCfg_RemoveLogo (void) + { + Lgo_RemoveLogo (HieLvl_DEG); + } + /*****************************************************************************/ /** Show message of success after changing a degree in degree configuration **/ /*****************************************************************************/ diff --git a/swad_degree_config.h b/swad_degree_config.h index a13103ab..8d8d6421 100644 --- a/swad_degree_config.h +++ b/swad_degree_config.h @@ -34,6 +34,9 @@ void DegCfg_ChangeDegCtr (void); void DegCfg_RenameDegreeShort (void); void DegCfg_RenameDegreeFull (void); void DegCfg_ChangeDegWWW (void); +void DegCfg_ReqLogo (void); +void DegCfg_ReceiveLogo (void); +void DegCfg_RemoveLogo (void); void DegCfg_ContEditAfterChgDeg (void); #endif diff --git a/swad_exam.c b/swad_exam.c index ebae315c..fe00f8a0 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -1226,10 +1226,10 @@ static void Exa_HideUnhideExam (bool Hide) } /*****************************************************************************/ -/**************** Request the creation or edition of an exam ******************/ +/*************** Request the creation or edition of an exam ******************/ /*****************************************************************************/ -void Exa_RequestCreatOrEditExam (void) +void Exa_ReqCreatOrEditExam (void) { struct Exa_Exams Exams; struct ExaSet_Set Set; @@ -1427,8 +1427,7 @@ void Exa_ReceiveFormExam (void) if (!ItsANewExam) Exa_GetDataOfExamByCod (&Exams.Exam); - /***** If I can edit exams ==> - overwrite some exam data with the data received from form *****/ + /***** Overwrite some exam data with the data received from form *****/ Exa_ReceiveExamFieldsFromForm (&Exams.Exam,Txt); if (Exa_CheckExamFieldsReceivedFromForm (&Exams.Exam)) { @@ -1444,7 +1443,7 @@ void Exa_ReceiveFormExam (void) /***** Show current exam and its sets *****/ Exa_PutFormsOneExam (&Exams,&Set, - ItsANewExam); // It's not a new exam + ItsANewExam); } static void Exa_ReceiveExamFieldsFromForm (struct Exa_Exam *Exam, diff --git a/swad_exam.h b/swad_exam.h index ca1d9295..9edbe3e6 100644 --- a/swad_exam.h +++ b/swad_exam.h @@ -67,7 +67,7 @@ void Exa_RemoveCrsExams (long CrsCod); void Exa_HideExam (void); void Exa_UnhideExam (void); -void Exa_RequestCreatOrEditExam (void); +void Exa_ReqCreatOrEditExam (void); void Exa_PutFormsOneExam (struct Exa_Exams *Exams, struct ExaSet_Set *Set, bool ItsANewExam); diff --git a/swad_exam_database.c b/swad_exam_database.c index 05c210d0..2cb3949c 100644 --- a/swad_exam_database.c +++ b/swad_exam_database.c @@ -1,5 +1,4 @@ // swad_exam_database.c: exams operations with database - /* SWAD (Shared Workspace At a Distance), is a web platform developed at the University of Granada (Spain), @@ -524,7 +523,7 @@ void Exa_DB_RemoveAllExamsFromCrs (long CrsCod) /********************** Create a new set of questions ************************/ /*****************************************************************************/ -long Exa_DB_CreateSet (const struct ExaSet_Set *Set,unsigned SetInd) +long Exa_DB_CreateSet (const struct ExaSet_Set *Set) { return DB_QueryINSERTandReturnCode ("can not create new set of questions", @@ -533,31 +532,11 @@ long Exa_DB_CreateSet (const struct ExaSet_Set *Set,unsigned SetInd) " VALUES" " (%ld,%u,%u,'%s')", Set->ExaCod, - SetInd, + Set->SetInd, Set->NumQstsToPrint, Set->Title); } -/*****************************************************************************/ -/******************** Update an existing set of questions ********************/ -/*****************************************************************************/ - -void Exa_DB_UpdateSet (const struct ExaSet_Set *Set) - { - DB_QueryUPDATE ("can not update set of questions", - "UPDATE exa_sets" - " SET ExaCod=%ld," - "SetInd=%u," - "NumQstsToPrint=%u," - "Title='%s'" - " WHERE SetCod=%ld", - Set->ExaCod, - Set->SetInd, - Set->NumQstsToPrint, - Set->Title, - Set->SetCod); - } - /*****************************************************************************/ /************************ Update set title in database ***********************/ /*****************************************************************************/ @@ -565,7 +544,6 @@ void Exa_DB_UpdateSet (const struct ExaSet_Set *Set) void Exa_DB_UpdateSetTitle (long SetCod,long ExaCod, const char NewTitle[ExaSet_MAX_BYTES_TITLE + 1]) { - /***** Update set of questions changing old title by new title *****/ DB_QueryUPDATE ("can not update the title of a set of questions", "UPDATE exa_sets" " SET Title='%s'" @@ -597,7 +575,7 @@ void Exa_DB_UpdateNumQstsToExam (long SetCod,long ExaCod,unsigned NumQstsToPrint /************ Change indexes of sets greater than a given index **************/ /*****************************************************************************/ -void Exa_DB_UpdateSetIndexesInExamGreaterThan (long ExaCod,long SetInd) +void Exa_DB_UpdateSetIndexesInExamGreaterThan (long ExaCod,unsigned SetInd) { DB_QueryUPDATE ("can not update indexes of sets", "UPDATE exa_sets" diff --git a/swad_exam_database.h b/swad_exam_database.h index 78ef019e..5ba2a08e 100644 --- a/swad_exam_database.h +++ b/swad_exam_database.h @@ -54,12 +54,11 @@ void Exa_DB_RemoveExam (long ExaCod); void Exa_DB_RemoveAllExamsFromCrs (long CrsCod); //--------------------------------- Sets -------------------------------------- -long Exa_DB_CreateSet (const struct ExaSet_Set *Set,unsigned SetInd); -void Exa_DB_UpdateSet (const struct ExaSet_Set *Set); +long Exa_DB_CreateSet (const struct ExaSet_Set *Set); void Exa_DB_UpdateSetTitle (long SetCod,long ExaCod, const char NewTitle[ExaSet_MAX_BYTES_TITLE + 1]); void Exa_DB_UpdateNumQstsToExam (long SetCod,long ExaCod,unsigned NumQstsToPrint); -void Exa_DB_UpdateSetIndexesInExamGreaterThan (long ExaCod,long SetInd); +void Exa_DB_UpdateSetIndexesInExamGreaterThan (long ExaCod,unsigned SetInd); void Exa_DB_UpdateSetIndex (long SetInd,long SetCod,long ExaCod); void Exa_DB_LockTables (void); unsigned Exa_DB_GetNumSetsExam (long ExaCod); diff --git a/swad_exam_print.c b/swad_exam_print.c index 7e4db614..77be8b2a 100644 --- a/swad_exam_print.c +++ b/swad_exam_print.c @@ -722,7 +722,7 @@ static void ExaPrn_WriteQstAndAnsToFill (const struct ExaPrn_Print *Print, /***** Number of question and answer type *****/ HTM_TD_Begin ("class=\"RT\""); - Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); + Lay_WriteIndex (QstInd + 1,"BIG_INDEX"); Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); HTM_TD_End (); diff --git a/swad_exam_result.c b/swad_exam_result.c index 9b2f2de9..ce05d452 100644 --- a/swad_exam_result.c +++ b/swad_exam_result.c @@ -1885,7 +1885,7 @@ static void ExaRes_WriteQstAndAnsExam (struct Usr_Data *UsrDat, /***** Number of question and answer type *****/ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - Qst_WriteNumQst (QstInd + 1,ClassNumQst[Question->Validity]); + Lay_WriteIndex (QstInd + 1,ClassNumQst[Question->Validity]); Qst_WriteAnswerType (Question->Answer.Type, ClassAnswerType[Question->Validity]); HTM_TD_End (); diff --git a/swad_exam_session.c b/swad_exam_session.c index 6d52cc24..3383ed32 100644 --- a/swad_exam_session.c +++ b/swad_exam_session.c @@ -784,7 +784,7 @@ static void ExaSes_GetSessionDataFromRow (MYSQL_RES *mysql_res, /********** Request the removal of an exam session (exam instance) ***********/ /*****************************************************************************/ -void ExaSes_RequestRemoveSession (void) +void ExaSes_ReqRemSession (void) { extern const char *Txt_Do_you_really_want_to_remove_the_session_X; extern const char *Txt_Remove_session; @@ -1108,7 +1108,7 @@ void ExaSes_PutButtonNewSession (struct Exa_Exams *Exams) /****************** Request the creation of a new session ********************/ /*****************************************************************************/ -void ExaSes_RequestCreatOrEditSes (void) +void ExaSes_ReqCreatOrEditSes (void) { struct Exa_Exams Exams; struct ExaSes_Session Session; diff --git a/swad_exam_session.h b/swad_exam_session.h index b68bcf5d..49cce744 100644 --- a/swad_exam_session.h +++ b/swad_exam_session.h @@ -57,7 +57,7 @@ void ExaSes_GetDataOfSessionByCod (struct ExaSes_Session *Session); void ExaSes_ToggleVisResultsSesUsr (void); -void ExaSes_RequestRemoveSession (void); +void ExaSes_ReqRemSession (void); void ExaSes_RemoveSession (void); void ExaSes_HideSession (void); @@ -68,7 +68,7 @@ void ExaSes_GetAndCheckPars (struct Exa_Exams *Exams, struct ExaSes_Session *Session); void ExaSes_PutButtonNewSession (struct Exa_Exams *Exams); -void ExaSes_RequestCreatOrEditSes (void); +void ExaSes_ReqCreatOrEditSes (void); void ExaSes_ReceiveFormSession (void); bool ExaSes_CheckIfICanAnswerThisSession (const struct Exa_Exam *Exam, diff --git a/swad_exam_set.c b/swad_exam_set.c index 5eddd848..13b6cbf0 100644 --- a/swad_exam_set.c +++ b/swad_exam_set.c @@ -84,9 +84,6 @@ static bool ExaSet_CheckSetTitleReceivedFromForm (const struct ExaSet_Set *Set, const char NewTitle[ExaSet_MAX_BYTES_TITLE + 1]); static void ExaSet_CreateSet (struct ExaSet_Set *Set); -static void ExaSet_UpdateSet (const struct ExaSet_Set *Set); - -static void ExaSet_PutParSetCod (long SetCod); static void ExaSet_ListSetQuestions (struct Exa_Exams *Exams, const struct ExaSet_Set *Set); @@ -132,7 +129,7 @@ void ExaSet_PutParsOneSet (void *Exams) if (Exams) { Exa_PutPars (Exams); - ExaSet_PutParSetCod (((struct Exa_Exams *) Exams)->SetCod); + ParCod_PutPar (ParCod_Set,((struct Exa_Exams *) Exams)->SetCod); } } @@ -204,7 +201,7 @@ void ExaSet_GetDataOfSetByCod (struct ExaSet_Set *Set) } /*****************************************************************************/ -/********************* Put a form to create/edit an exam **********************/ +/********************* Put a form to create/edit an exam *********************/ /*****************************************************************************/ static void ExaSet_PutFormNewSet (struct Exa_Exams *Exams, @@ -235,7 +232,7 @@ static void ExaSet_PutFormNewSet (struct Exa_Exams *Exams, /***** Index *****/ HTM_TD_Begin ("class=\"RM\""); - Qst_WriteNumQst (MaxSetInd + 1,"BIG_INDEX"); + Lay_WriteIndex (MaxSetInd + 1,"BIG_INDEX"); HTM_TD_End (); /***** Title *****/ @@ -278,7 +275,6 @@ void ExaSet_ReceiveFormSet (void) { struct Exa_Exams Exams; struct ExaSet_Set Set; - bool ItsANewSet; /***** Reset exams context *****/ Exa_ResetExams (&Exams); @@ -288,8 +284,6 @@ void ExaSet_ReceiveFormSet (void) /***** Get parameters *****/ Exa_GetPars (&Exams,true); Set.ExaCod = Exams.Exam.ExaCod; - Exams.SetCod = Set.SetCod = ParCod_GetPar (ParCod_Set); - ItsANewSet = (Set.SetCod <= 0); /***** Get exam data from database *****/ Exa_GetDataOfExamByCod (&Exams.Exam); @@ -301,13 +295,7 @@ void ExaSet_ReceiveFormSet (void) /***** If I can edit exams ==> receive set from form *****/ ExaSet_ReceiveSetFieldsFromForm (&Set); if (ExaSet_CheckSetTitleReceivedFromForm (&Set,Set.Title)) - { - /***** Create a new exam or update an existing one *****/ - if (ItsANewSet) - ExaSet_CreateSet (&Set); // Add new set to database - else - ExaSet_UpdateSet (&Set); // Update set data in database - } + ExaSet_CreateSet (&Set); // Add new set to database /***** Show current exam and its sets *****/ Exa_PutFormsOneExam (&Exams,&Set, @@ -462,33 +450,19 @@ static void ExaSet_CreateSet (struct ExaSet_Set *Set) MaxSetInd = Exa_DB_GetMaxSetIndexInExam (Set->ExaCod); /***** Create a new exam *****/ - Set->SetCod = Exa_DB_CreateSet (Set,MaxSetInd + 1); + Set->SetInd = MaxSetInd + 1; + Set->SetCod = Exa_DB_CreateSet (Set); /***** Write success message *****/ Ale_ShowAlert (Ale_SUCCESS,Txt_Created_new_set_of_questions_X, Set->Title); } -/*****************************************************************************/ -/******************** Update an existing set of questions ********************/ -/*****************************************************************************/ - -static void ExaSet_UpdateSet (const struct ExaSet_Set *Set) - { - extern const char *Txt_The_set_of_questions_has_been_modified; - - /***** Update the data of the set of questions *****/ - Exa_DB_UpdateSet (Set); - - /***** Write success message *****/ - Ale_ShowAlert (Ale_SUCCESS,Txt_The_set_of_questions_has_been_modified); - } - /*****************************************************************************/ /********** Request the creation or edition of an set of questions ***********/ /*****************************************************************************/ -void ExaSet_RequestCreatOrEditSet (void) +void ExaSet_ReqCreatOrEditSet (void) { struct Exa_Exams Exams; struct ExaSet_Set Set; @@ -583,15 +557,6 @@ void ExaSet_ListQstsToAddToSet (void) false); // It's not a new exam } -/*****************************************************************************/ -/**************** Write parameter with index of set of questions *****************/ -/*****************************************************************************/ - -static void ExaSet_PutParSetCod (long SetCod) - { - Par_PutParUnsigned (NULL,"SetCod",SetCod); - } - /*****************************************************************************/ /************************* List the sets of an exam **************************/ /*****************************************************************************/ @@ -707,6 +672,7 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams, { /***** Create set of questions *****/ ExaSet_ResetSet (&Set); + Set.ExaCod = Exams->Exam.ExaCod; /***** Get set data *****/ row = mysql_fetch_row (mysql_res); @@ -773,7 +739,7 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams, /***** Index *****/ HTM_TD_Begin ("rowspan=\"2\" class=\"RT %s\"", The_GetColorRows ()); - Qst_WriteNumQst (Set.SetInd,"BIG_INDEX"); + Lay_WriteIndex (Set.SetInd,"BIG_INDEX"); HTM_TD_End (); /***** Title *****/ @@ -1158,7 +1124,7 @@ static void ExaSet_ListQuestionForEdition (struct Qst_Question *Question, /***** Number of question and answer type (row[1]) *****/ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - Qst_WriteNumQst (QstInd,ClassNumQst[Question->Validity]); + Lay_WriteIndex (QstInd,ClassNumQst[Question->Validity]); Qst_WriteAnswerType (Question->Answer.Type, ClassAnswerType[Question->Validity]); HTM_TD_End (); @@ -1348,7 +1314,7 @@ static void ExaSet_CopyQstFromBankToExamSet (const struct ExaSet_Set *Set,long Q /***************** Request the removal of a set of questions *****************/ /*****************************************************************************/ -void ExaSet_RequestRemoveSet (void) +void ExaSet_ReqRemSet (void) { extern const char *Txt_Do_you_really_want_to_remove_the_set_of_questions_X; extern const char *Txt_Remove_set_of_questions; @@ -1519,7 +1485,7 @@ void ExaSet_MoveDownSet (void) /********************** Request the removal of a question ********************/ /*****************************************************************************/ -void ExaSet_RequestRemoveQstFromSet (void) +void ExaSet_ReqRemQstFromSet (void) { extern const char *Txt_Do_you_really_want_to_remove_the_question_X; extern const char *Txt_Remove_question; diff --git a/swad_exam_set.h b/swad_exam_set.h index aba5c55b..2a2802a9 100644 --- a/swad_exam_set.h +++ b/swad_exam_set.h @@ -43,7 +43,8 @@ void ExaSet_ReceiveFormSet (void); void ExaSet_ChangeSetTitle (void); void ExaSet_ChangeNumQstsToExam (void); -void ExaSet_RequestCreatOrEditSet (void); +void ExaSet_ReqCreatOrEditSet (void); + void ExaSet_ReqSelectQstsToAddToSet (void); void ExaSet_ListQstsToAddToSet (void); @@ -57,13 +58,13 @@ void ExaSet_GetQstDataFromDB (struct Qst_Question *Question); void ExaSet_AddQstsToSet (void); -void ExaSet_RequestRemoveSet (void); +void ExaSet_ReqRemSet (void); void ExaSet_RemoveSet (void); void ExaSet_MoveUpSet (void); void ExaSet_MoveDownSet (void); -void ExaSet_RequestRemoveQstFromSet (void); +void ExaSet_ReqRemQstFromSet (void); void ExaSet_RemoveQstFromSet (void); void ExaSet_ValidateQst (void); diff --git a/swad_follow.c b/swad_follow.c index ecb8bbac..d4cd68a5 100644 --- a/swad_follow.c +++ b/swad_follow.c @@ -837,12 +837,12 @@ void Fol_UnfollowUsr2 (void) /***************** Request follow/unfollow several users *********************/ /*****************************************************************************/ -void Fol_RequestFollowStds (void) +void Fol_ReqFollowStds (void) { Fol_RequestFollowUsrs (ActFolSevStd); } -void Fol_RequestFollowTchs (void) +void Fol_ReqFollowTchs (void) { Fol_RequestFollowUsrs (ActFolSevTch); } @@ -881,12 +881,12 @@ static void Fol_RequestFollowUsrs (Act_Action_t NextAction) Usr_FreeListsSelectedEncryptedUsrsCods (&Gbl.Usrs.Selected); } -void Fol_RequestUnfollowStds (void) +void Fol_ReqUnfollowStds (void) { Fol_RequestUnfollowUsrs (ActUnfSevStd); } -void Fol_RequestUnfollowTchs (void) +void Fol_ReqUnfollowTchs (void) { Fol_RequestUnfollowUsrs (ActUnfSevTch); } diff --git a/swad_follow.h b/swad_follow.h index da025ed8..ec591eaf 100644 --- a/swad_follow.h +++ b/swad_follow.h @@ -62,10 +62,10 @@ void Fol_FollowUsr2 (void); void Fol_UnfollowUsr1 (void); void Fol_UnfollowUsr2 (void); -void Fol_RequestFollowStds (void); -void Fol_RequestFollowTchs (void); -void Fol_RequestUnfollowStds (void); -void Fol_RequestUnfollowTchs (void); +void Fol_ReqFollowStds (void); +void Fol_ReqFollowTchs (void); +void Fol_ReqUnfollowStds (void); +void Fol_ReqUnfollowTchs (void); void Fol_FollowUsrs (void); void Fol_UnfollowUsrs (void); diff --git a/swad_forum.c b/swad_forum.c index f5bf6239..4b39e21b 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -2962,7 +2962,7 @@ void For_RemovePost (void) /***************** Request the removing of an existing thread ****************/ /*****************************************************************************/ -void For_RequestRemoveThread (void) +void For_ReqRemThread (void) { extern const char *Txt_Do_you_really_want_to_remove_the_entire_thread_X; extern const char *Txt_Do_you_really_want_to_remove_the_entire_thread; diff --git a/swad_forum.h b/swad_forum.h index b437b19e..be31ca48 100644 --- a/swad_forum.h +++ b/swad_forum.h @@ -162,7 +162,7 @@ void For_GetParsForums (struct For_Forums *Forums); void For_ReceiveForumPost (void); void For_RemovePost (void); -void For_RequestRemoveThread (void); +void For_ReqRemThread (void); void For_RemoveThread (void); void For_CutThread (void); void For_PasteThread (void); diff --git a/swad_game.c b/swad_game.c index 2f288479..59f00566 100644 --- a/swad_game.c +++ b/swad_game.c @@ -1233,7 +1233,7 @@ void Gam_ListGame (void) /**************** Request the creation or edition of a game ******************/ /*****************************************************************************/ -void Gam_RequestCreatOrEditGame (void) +void Gam_ReqCreatOrEditGame (void) { struct Gam_Games Games; bool ItsANewGame; @@ -1912,7 +1912,7 @@ static void Gam_FreeListsSelectedQuestions (struct Gam_Games *Games) /********************** Request the removal of a question ********************/ /*****************************************************************************/ -void Gam_RequestRemoveQstFromGame (void) +void Gam_ReqRemQstFromGame (void) { extern const char *Txt_Do_you_really_want_to_remove_the_question_X; extern const char *Txt_Remove_question; @@ -2180,7 +2180,7 @@ void Gam_PutButtonNewMatch (struct Gam_Games *Games) /************* Request the creation of a new match as a teacher **************/ /*****************************************************************************/ -void Gam_RequestNewMatch (void) +void Gam_ReqNewMatch (void) { struct Gam_Games Games; diff --git a/swad_game.h b/swad_game.h index 594e0fb3..f64edc00 100644 --- a/swad_game.h +++ b/swad_game.h @@ -136,7 +136,7 @@ void Gam_UnhideGame (void); void Gam_ListGame (void); -void Gam_RequestCreatOrEditGame (void); +void Gam_ReqCreatOrEditGame (void); void Gam_ReceiveFormGame (void); @@ -148,14 +148,14 @@ unsigned Gam_GetParQstInd (void); void Gam_AddQstsToGame (void); -void Gam_RequestRemoveQstFromGame (void); +void Gam_ReqRemQstFromGame (void); void Gam_RemoveQstFromGame (void); void Gam_MoveUpQst (void); void Gam_MoveDownQst (void); void Gam_PutButtonNewMatch (struct Gam_Games *Games); -void Gam_RequestNewMatch (void); +void Gam_ReqNewMatch (void); void Gam_ShowTstTagsPresentInAGame (long GamCod); diff --git a/swad_institution_config.c b/swad_institution_config.c index f4e79d60..9d473cf7 100644 --- a/swad_institution_config.c +++ b/swad_institution_config.c @@ -506,7 +506,7 @@ static void InsCfg_NumDpts (void) /******** Show a form for sending a logo of the current institution **********/ /*****************************************************************************/ -void InsCfg_RequestLogo (void) +void InsCfg_ReqLogo (void) { Lgo_RequestLogo (HieLvl_INS); } diff --git a/swad_institution_config.h b/swad_institution_config.h index e6e69a28..bf0a362f 100644 --- a/swad_institution_config.h +++ b/swad_institution_config.h @@ -30,7 +30,7 @@ void InsCfg_ShowConfiguration (void); void InsCfg_PrintConfiguration (void); -void InsCfg_RequestLogo (void); +void InsCfg_ReqLogo (void); void InsCfg_ReceiveLogo (void); void InsCfg_RemoveLogo (void); void InsCfg_ChangeInsCty (void); diff --git a/swad_layout.c b/swad_layout.c index 867160f0..51df9251 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -1686,6 +1686,18 @@ void Lay_BeginHTMLFile (FILE *File,const char *Title) Title); // Page title } +/*****************************************************************************/ +/************************** Write a div with an index ************************/ +/*****************************************************************************/ +// Index should be 1, 2, 3... + +void Lay_WriteIndex (unsigned Index,const char *Class) + { + HTM_DIV_Begin ("class=\"%s_%s\"",Class,The_GetSuffix ()); + HTM_Unsigned (Index); + HTM_DIV_End (); + } + /*****************************************************************************/ /***** Get and show number of users who have chosen a layout of columns ******/ /*****************************************************************************/ diff --git a/swad_layout.h b/swad_layout.h index 06b097b5..1ddcb8e4 100644 --- a/swad_layout.h +++ b/swad_layout.h @@ -79,6 +79,8 @@ void Lay_HelpRichEditor (void); void Lay_BeginHTMLFile (FILE *File,const char *Title); +void Lay_WriteIndex (unsigned Index,const char *Class); + //-------------------------------- Figures ------------------------------------ void Lay_GetAndShowNumUsrsPerSideColumns (void); diff --git a/swad_match.c b/swad_match.c index 3b1a3141..d979907c 100644 --- a/swad_match.c +++ b/swad_match.c @@ -963,7 +963,7 @@ static void Mch_GetMatchDataFromRow (MYSQL_RES *mysql_res, /************** Request the removal of a match (game instance) ***************/ /*****************************************************************************/ -void Mch_RequestRemoveMatch (void) +void Mch_ReqRemMatch (void) { extern const char *Txt_Do_you_really_want_to_remove_the_match_X; extern const char *Txt_Remove_match; diff --git a/swad_match.h b/swad_match.h index c8981784..8b2b1a25 100644 --- a/swad_match.h +++ b/swad_match.h @@ -103,7 +103,7 @@ void Mch_ListOneOrMoreMatchesNumPlayers (const struct Mch_Match *Match); void Mch_ToggleVisResultsMchUsr (void); -void Mch_RequestRemoveMatch (void); +void Mch_ReqRemMatch (void); void Mch_RemoveMatch (void); void Mch_RemoveMatchesInGameFromAllTables (long GamCod); diff --git a/swad_notice.c b/swad_notice.c index f3d36e5b..803448aa 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -252,7 +252,7 @@ void Not_RevealHiddenNotice (void) /********************* Request the removal of a notice ***********************/ /*****************************************************************************/ -void Not_RequestRemNotice (void) +void Not_ReqRemNotice (void) { extern const char *Txt_Do_you_really_want_to_remove_the_following_notice; long NotCod; diff --git a/swad_notice.h b/swad_notice.h index 1ec9e26b..acd1d947 100644 --- a/swad_notice.h +++ b/swad_notice.h @@ -60,7 +60,7 @@ void Not_GetHighLightedNotCod (void); void Not_HideActiveNotice (void); void Not_RevealHiddenNotice (void); -void Not_RequestRemNotice (void); +void Not_ReqRemNotice (void); void Not_RemoveNotice (void); void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod); diff --git a/swad_parameter_code.c b/swad_parameter_code.c index e84674bc..51d9c9f7 100644 --- a/swad_parameter_code.c +++ b/swad_parameter_code.c @@ -44,6 +44,7 @@ const char *Par_CodeStr[] = [ParCod_Att ] = "AttCod", // Attendance event code [ParCod_Ban ] = "BanCod", // Banner code [ParCod_Bld ] = "BldCod", // Building code + [ParCod_Cri ] = "CriCod", // Criterion code in rubric [ParCod_Crs ] = "crs", // Course code [ParCod_Ctr ] = "ctr", // Center code [ParCod_Cty ] = "cty", // Country code diff --git a/swad_parameter_code.h b/swad_parameter_code.h index 86417368..ecd0689e 100644 --- a/swad_parameter_code.h +++ b/swad_parameter_code.h @@ -36,6 +36,7 @@ typedef enum ParCod_Att, // Attendance event code ParCod_Ban, // Banner code ParCod_Bld, // Building code + ParCod_Cri, // Criterion code in rubric ParCod_Crs, // Course code ParCod_Ctr, // Center code ParCod_Cty, // Country code diff --git a/swad_photo.c b/swad_photo.c index 5d8668c9..64debd0e 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -88,8 +88,8 @@ static const char *Pho_StrAvgPhotoPrograms[Pho_NUM_AVERAGE_PHOTO_TYPES] = /***************************** Private prototypes ****************************/ /*****************************************************************************/ -static void Pho_PutIconToRequestRemoveMyPhoto (__attribute__((unused)) void *Args); -static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) void *Args); +static void Pho_PutIconToReqRemMyPhoto (__attribute__((unused)) void *Args); +static void Pho_PutIconToReqRemOtherUsrPhoto (__attribute__((unused)) void *Args); static void Pho_ReqOtherUsrPhoto (void); static void Pho_ReqPhoto (const struct Usr_Data *UsrDat); @@ -203,7 +203,7 @@ void Pho_PutIconToChangeUsrPhoto (struct Usr_Data *UsrDat) /************** Put a link to request the removal of my photo ****************/ /*****************************************************************************/ -static void Pho_PutIconToRequestRemoveMyPhoto (__attribute__((unused)) void *Args) +static void Pho_PutIconToReqRemMyPhoto (__attribute__((unused)) void *Args) { if (Gbl.Usrs.Me.MyPhotoExists) Lay_PutContextualLinkOnlyIcon (ActReqRemMyPho,NULL, @@ -215,7 +215,7 @@ static void Pho_PutIconToRequestRemoveMyPhoto (__attribute__((unused)) void *Arg /********** Put a link to request the removal of a user's photo **************/ /*****************************************************************************/ -static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) void *Args) +static void Pho_PutIconToReqRemOtherUsrPhoto (__attribute__((unused)) void *Args) { char PhotoURL[Cns_MAX_BYTES_WWW + 1]; bool PhotoExists; @@ -294,8 +294,8 @@ static void Pho_ReqPhoto (const struct Usr_Data *UsrDat) /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Photo, - ItsMe ? Pho_PutIconToRequestRemoveMyPhoto : - Pho_PutIconToRequestRemoveOtherUsrPhoto,NULL, + ItsMe ? Pho_PutIconToReqRemMyPhoto : + Pho_PutIconToReqRemOtherUsrPhoto,NULL, Hlp_PROFILE_Photo,Box_NOT_CLOSABLE); /***** Begin form *****/ @@ -395,7 +395,7 @@ void Pho_RecOtherUsrPhotoDetFaces (void) /********************** Request the removal of my photo **********************/ /*****************************************************************************/ -void Pho_ReqRemoveMyPhoto (void) +void Pho_ReqRemMyPhoto (void) { extern const char *Txt_Do_you_really_want_to_remove_your_photo; extern const char *Txt_Remove_photo; @@ -457,7 +457,7 @@ void Pho_RemoveMyPhoto2 (void) /**************** Request the removal of another user's photo ****************/ /*****************************************************************************/ -void Pho_ReqRemoveUsrPhoto (void) +void Pho_ReqRemUsrPhoto (void) { extern const char *Txt_Photo; extern const char *Txt_Do_you_really_want_to_remove_the_photo_of_X; diff --git a/swad_photo.h b/swad_photo.h index 4f9f59d5..5ae80ff2 100644 --- a/swad_photo.h +++ b/swad_photo.h @@ -102,10 +102,10 @@ void Pho_SendPhotoUsr (void); void Pho_RecMyPhotoDetFaces (void); void Pho_RecOtherUsrPhotoDetFaces (void); -void Pho_ReqRemoveMyPhoto (void); +void Pho_ReqRemMyPhoto (void); void Pho_RemoveMyPhoto1 (void); void Pho_RemoveMyPhoto2 (void); -void Pho_ReqRemoveUsrPhoto (void); +void Pho_ReqRemUsrPhoto (void); void Pho_RemoveUsrPhoto (void); void Pho_UpdateMyPhoto1 (void); diff --git a/swad_profile.c b/swad_profile.c index 214ab1ac..82dad914 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -120,7 +120,7 @@ void Prf_SeeSocialProfiles (void) if (Gbl.Usrs.Me.Logged) Fol_SuggestUsrsToFollowMainZone (); else - Prf_RequestUserProfile (); + Prf_ReqUserProfile (); } /*****************************************************************************/ @@ -172,7 +172,7 @@ void Prf_PutLinkRequestAnotherUserProfile (void) /************************** Request a user's profile *************************/ /*****************************************************************************/ -void Prf_RequestUserProfile (void) +void Prf_ReqUserProfile (void) { extern const char *Hlp_START_Profiles_view_public_profile; extern const char *Txt_Another_user_s_profile; @@ -261,7 +261,7 @@ void Prf_GetUsrDatAndShowUserProfile (void) Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission (); /* Request a user's profile */ - Prf_RequestUserProfile (); + Prf_ReqUserProfile (); } /***** If it's not me, mark possible notification as seen *****/ diff --git a/swad_profile.h b/swad_profile.h index 4c957670..a14f9766 100644 --- a/swad_profile.h +++ b/swad_profile.h @@ -56,7 +56,7 @@ char *Prf_GetURLPublicProfile (char URL[Cns_MAX_BYTES_WWW + 1], const char *NickWithoutArr); void Prf_PutLinkMyPublicProfile (void); void Prf_PutLinkRequestAnotherUserProfile (void); -void Prf_RequestUserProfile (void); +void Prf_ReqUserProfile (void); void Prf_GetUsrDatAndShowUserProfile (void); bool Prf_ShowUserProfile (struct Usr_Data *UsrDat); diff --git a/swad_program.c b/swad_program.c index 5533b5f7..c86c6a40 100644 --- a/swad_program.c +++ b/swad_program.c @@ -1892,7 +1892,7 @@ void Prg_ViewItemAfterEdit (void) /*********** List program items with a form to change a given item ***********/ /*****************************************************************************/ -void Prg_RequestChangeItem (void) +void Prg_ReqChangeItem (void) { struct Prg_Item Item; @@ -1913,7 +1913,7 @@ void Prg_RequestChangeItem (void) /************ List program items with a form to create a new item ************/ /*****************************************************************************/ -void Prg_RequestCreateItem (void) +void Prg_ReqCreateItem (void) { struct Prg_Item Item; diff --git a/swad_program.h b/swad_program.h index 2baf9486..03e09218 100644 --- a/swad_program.h +++ b/swad_program.h @@ -169,8 +169,8 @@ unsigned Prg_GetItmIndFromNumItem (unsigned NumItem); unsigned Prg_GetLevelFromNumItem (unsigned NumItem); void Prg_ViewItemAfterEdit (void); -void Prg_RequestChangeItem (void); -void Prg_RequestCreateItem (void); +void Prg_ReqChangeItem (void); +void Prg_ReqCreateItem (void); void Prg_ReceiveFormChgItem (void); void Prg_ReceiveFormNewItem (void); diff --git a/swad_project.c b/swad_project.c index 1eb11456..f3d9a3e9 100644 --- a/swad_project.c +++ b/swad_project.c @@ -286,7 +286,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects); static void Prj_ResetProject (struct Prj_Project *Prj); -static void Prj_RequestCreatOrEditPrj (struct Prj_Projects *Projects); +static void Prj_ReqCreatOrEditPrj (struct Prj_Projects *Projects); static void Prj_PutFormProject (struct Prj_Projects *Projects,bool ItsANewProject); static void Prj_EditOneProjectTxtArea (const char *Id, const char *Label,char *TxtField, @@ -2881,7 +2881,7 @@ static void Prj_FormToSelectUsrs (struct Prj_Projects *Projects, free (TxtButton); /***** Put a form to create/edit project *****/ - Prj_RequestCreatOrEditPrj (Projects); + Prj_ReqCreatOrEditPrj (Projects); } /*****************************************************************************/ @@ -2974,7 +2974,7 @@ static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInPrj) Usr_FreeListsSelectedEncryptedUsrsCods (&Prj_MembersToAdd); /***** Put form to edit project again *****/ - Prj_RequestCreatOrEditPrj (&Projects); + Prj_ReqCreatOrEditPrj (&Projects); } /*****************************************************************************/ @@ -3075,7 +3075,7 @@ static void Prj_ReqRemUsrFromPrj (struct Prj_Projects *Projects, Prj_FreeMemProject (&Projects->Prj); /***** Put form to edit project again *****/ - Prj_RequestCreatOrEditPrj (Projects); + Prj_ReqCreatOrEditPrj (Projects); } /*****************************************************************************/ @@ -3144,7 +3144,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInPrj) Prj_FreeMemProject (&Projects.Prj); /***** Put form to edit project again *****/ - Prj_RequestCreatOrEditPrj (&Projects); + Prj_ReqCreatOrEditPrj (&Projects); } /*****************************************************************************/ @@ -3646,7 +3646,7 @@ void Prj_UnhideProject (void) /********************* Put a form to create/edit project *********************/ /*****************************************************************************/ -void Prj_RequestCreatePrj (void) +void Prj_ReqCreatePrj (void) { struct Prj_Projects Projects; @@ -3658,10 +3658,10 @@ void Prj_RequestCreatePrj (void) Projects.Prj.PrjCod = -1L; // It's a new, non existing, project /***** Form to create project *****/ - Prj_RequestCreatOrEditPrj (&Projects); + Prj_ReqCreatOrEditPrj (&Projects); } -void Prj_RequestEditPrj (void) +void Prj_ReqEditPrj (void) { struct Prj_Projects Projects; @@ -3673,10 +3673,10 @@ void Prj_RequestEditPrj (void) Projects.Prj.PrjCod = ParCod_GetAndCheckPar (ParCod_Prj); /***** Form to edit project *****/ - Prj_RequestCreatOrEditPrj (&Projects); + Prj_ReqCreatOrEditPrj (&Projects); } -static void Prj_RequestCreatOrEditPrj (struct Prj_Projects *Projects) +static void Prj_ReqCreatOrEditPrj (struct Prj_Projects *Projects) { bool ItsANewProject = (Projects->Prj.PrjCod < 0); @@ -4101,7 +4101,7 @@ void Prj_ReceiveFormProject (void) Prj_PutFormProject (&Projects,ItsANewProject); /***** Show again form to edit project *****/ - Prj_RequestCreatOrEditPrj (&Projects); + Prj_ReqCreatOrEditPrj (&Projects); } else Err_NoPermissionExit (); diff --git a/swad_project.h b/swad_project.h index c5a58d81..421911ce 100644 --- a/swad_project.h +++ b/swad_project.h @@ -246,8 +246,8 @@ void Prj_RemStd (void); void Prj_RemTut (void); void Prj_RemEvl (void); -void Prj_RequestCreatePrj (void); -void Prj_RequestEditPrj (void); +void Prj_ReqCreatePrj (void); +void Prj_ReqEditPrj (void); void Prj_AllocMemProject (struct Prj_Project *Prj); void Prj_FreeMemProject (struct Prj_Project *Prj); diff --git a/swad_question.c b/swad_question.c index cbb9ccd7..af5c3cd7 100644 --- a/swad_question.c +++ b/swad_question.c @@ -117,7 +117,7 @@ void Qst_Destructor (struct Qst_Questions *Questions) /*********************** Request the edition of tests ************************/ /*****************************************************************************/ -void Qst_RequestEditQsts (void) +void Qst_ReqEditQsts (void) { struct Qst_Questions Questions; @@ -519,7 +519,7 @@ void Qst_ListQuestionForEdition (struct Qst_Question *Question, /***** Number of question and answer type (row[1]) *****/ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - Qst_WriteNumQst (QstInd,"BIG_INDEX"); + Lay_WriteIndex (QstInd,"BIG_INDEX"); if (QuestionExists) Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); HTM_TD_End (); @@ -567,18 +567,6 @@ void Qst_ListQuestionForEdition (struct Qst_Question *Question, HTM_TD_End (); } -/*****************************************************************************/ -/********************* Write the number of a test question *******************/ -/*****************************************************************************/ -// Number of question should be 1, 2, 3... - -void Qst_WriteNumQst (unsigned NumQst,const char *Class) - { - HTM_DIV_Begin ("class=\"%s_%s\"",Class,The_GetSuffix ()); - HTM_Unsigned (NumQst); - HTM_DIV_End (); - } - /*****************************************************************************/ /************************** Write the type of answer *************************/ /*****************************************************************************/ @@ -984,7 +972,7 @@ void Qst_WriteQuestionListing (struct Qst_Questions *Questions,unsigned QstInd) /* Number of question and answer type */ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); + Lay_WriteIndex (QstInd + 1,"BIG_INDEX"); Qst_WriteAnswerType (Questions->Question.Answer.Type,"DAT_SMALL"); HTM_TD_End (); @@ -3230,7 +3218,7 @@ long Qst_GetIntAnsFromStr (char *Str) /***************** Request the removal of selected questions *****************/ /*****************************************************************************/ -void Qst_RequestRemoveSelectedQsts (void) +void Qst_ReqRemSelectedQsts (void) { extern const char *Txt_Do_you_really_want_to_remove_the_selected_questions; extern const char *Txt_Remove_questions; @@ -3319,7 +3307,7 @@ void Qst_PutIconToRemoveOneQst (void *QstCod) /******************** Request the removal of a question **********************/ /*****************************************************************************/ -void Qst_RequestRemoveOneQst (void) +void Qst_ReqRemOneQst (void) { extern const char *Txt_Do_you_really_want_to_remove_the_question_X; extern const char *Txt_Remove_question; diff --git a/swad_question.h b/swad_question.h index 627d816f..4e1d4cc1 100644 --- a/swad_question.h +++ b/swad_question.h @@ -131,7 +131,7 @@ struct Qst_Stats void Qst_Constructor (struct Qst_Questions *Questions); void Qst_Destructor (struct Qst_Questions *Questions); -void Qst_RequestEditQsts (void); +void Qst_ReqEditQsts (void); void Qst_ShowFormRequestEditQsts (struct Qst_Questions *Questions); void Qst_ShowFormAnswerTypes (const struct Qst_AnswerTypes *AnswerTypes); void Qst_RequestSelectQstsForExamSet (struct Exa_Exams *Exams); @@ -149,7 +149,6 @@ void Qst_PutButtonToAddQuestion (void); void Qst_ListQuestionForEdition (struct Qst_Question *Question, unsigned QstInd,bool QuestionExists, const char *Anchor); -void Qst_WriteNumQst (unsigned NumQst,const char *Class); void Qst_WriteAnswerType (Qst_AnswerType_t AnswerType,const char *Class); void Qst_WriteQstStem (const char *Stem,const char *ClassStem,bool Visible); void Qst_PutFormToEditQstMedia (const struct Med_Media *Media,int NumMedia, @@ -251,10 +250,10 @@ void Qst_MoveMediaToDefinitiveDirectories (struct Qst_Question *Question); long Qst_GetIntAnsFromStr (char *Str); -void Qst_RequestRemoveSelectedQsts (void); +void Qst_ReqRemSelectedQsts (void); void Qst_RemoveSelectedQsts (void); void Qst_PutIconToRemoveOneQst (void *QstCod); -void Qst_RequestRemoveOneQst (void); +void Qst_ReqRemOneQst (void); void Qst_PutParsRemoveOnlyThisQst (void *QstCod); void Qst_RemoveOneQst (void); void Qst_RemoveOneQstFromDB (long CrsCod,long QstCod); diff --git a/swad_rubric.c b/swad_rubric.c index 814bdacc..4e8c0d25 100644 --- a/swad_rubric.c +++ b/swad_rubric.c @@ -73,9 +73,6 @@ static void Rub_PutIconsToRemEditOneRubric (struct Rub_Rubrics *Rubrics); static void Rub_RemoveRubricFromAllTables (long RubCod); -static void Rub_PutFormsEditionRubric (struct Rub_Rubrics *Rubrics, - char Txt[Cns_MAX_BYTES_TEXT + 1], - bool ItsANewRubric); static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric, char Txt[Cns_MAX_BYTES_TEXT + 1]); static bool Rub_CheckRubricFieldsReceivedFromForm (const struct Rub_Rubric *Rubric); @@ -122,7 +119,7 @@ void Rub_SeeAllRubrics (void) Rub_ResetRubrics (&Rubrics); /***** Get parameters *****/ - Rub_GetPars (&Rubrics); // Return value ignored + Rub_GetPars (&Rubrics,false); /***** Show all rubrics *****/ Rub_ListAllRubrics (&Rubrics); @@ -236,6 +233,21 @@ bool Rub_CheckIfICanEditRubrics (void) return ICanEditRubrics[Gbl.Usrs.Me.Role.Logged]; } +/*****************************************************************************/ +/*********************** Check if edition is possible ************************/ +/*****************************************************************************/ + +bool Rub_CheckIfEditable (const struct Rub_Rubric *Rubric) + { + if (Rub_CheckIfICanEditRubrics ()) + /***** Rubric is editable only if ... *****/ + // TODO: Change to control that a rubric is not edited in some circunstances? + return Rubric->NumCriteria == 0 || + Rubric->NumCriteria != 0; + else + return false; // Questions are not editable + } + /*****************************************************************************/ /****************** Put contextual icons in list of rubrics ******************/ /*****************************************************************************/ @@ -304,8 +316,7 @@ void Rub_SeeOneRubric (void) Rub_ResetRubric (&Rubrics.Rubric); /***** Get parameters *****/ - if ((Rubrics.Rubric.RubCod = Rub_GetPars (&Rubrics)) <= 0) - Err_WrongRubricExit (); + Rub_GetPars (&Rubrics,true); Rub_GetDataOfRubricByCod (&Rubrics.Rubric); /***** Show rubric *****/ @@ -492,13 +503,19 @@ void Rub_PutPars (void *Rubrics) /****************** Get parameters used to edit a rubric *********************/ /*****************************************************************************/ -long Rub_GetPars (struct Rub_Rubrics *Rubrics) +void Rub_GetPars (struct Rub_Rubrics *Rubrics,bool CheckRubCod) { + long (*GetExaCo[2]) (ParCod_Param_t ParCode) = + { + [false] = ParCod_GetPar, + [true ] = ParCod_GetAndCheckPar, + }; + /***** Get other parameters *****/ Rubrics->CurrentPage = Pag_GetParPagNum (Pag_RUBRICS); /***** Get rubric code *****/ - return ParCod_GetPar (ParCod_Rub); + Rubrics->Rubric.RubCod = GetExaCo[CheckRubCod] (ParCod_Rub); } /*****************************************************************************/ @@ -612,8 +629,7 @@ void Rub_AskRemRubric (void) Rub_ResetRubric (&Rubrics.Rubric); /***** Get parameters *****/ - if ((Rubrics.Rubric.RubCod = Rub_GetPars (&Rubrics)) <= 0) - Err_WrongRubricExit (); + Rub_GetPars (&Rubrics,true); /***** Get data of the rubric from database *****/ Rub_GetDataOfRubricByCod (&Rubrics.Rubric); @@ -707,8 +723,7 @@ void Rub_ListRubric (void) Rub_ResetRubric (&Rubrics.Rubric); /***** Get parameters *****/ - if ((Rubrics.Rubric.RubCod = Rub_GetPars (&Rubrics)) <= 0) - Err_WrongRubricExit (); + Rub_GetPars (&Rubrics,true); /***** Get rubric data *****/ Rub_GetDataOfRubricByCod (&Rubrics.Rubric); @@ -723,58 +738,72 @@ void Rub_ListRubric (void) /*************** Request the creation or edition of a rubric *****************/ /*****************************************************************************/ -void Rub_RequestCreatOrEditRubric (void) +void Rub_ReqCreatOrEditRubric (void) { struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; bool ItsANewRubric; - char Txt[Cns_MAX_BYTES_TEXT + 1]; - - /***** Reset rubrics context *****/ - Rub_ResetRubrics (&Rubrics); - - /***** Reset rubric *****/ - Rub_ResetRubric (&Rubrics.Rubric); /***** Check if I can edit rubrics *****/ if (!Rub_CheckIfICanEditRubrics ()) Err_NoPermissionExit (); + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + /***** Get parameters *****/ - ItsANewRubric = ((Rubrics.Rubric.RubCod = Rub_GetPars (&Rubrics)) <= 0); + Rub_GetPars (&Rubrics,false); // Don't check rubric code + ItsANewRubric = (Rubrics.Rubric.RubCod <= 0); /***** Get rubric data *****/ if (ItsANewRubric) - { /* Initialize to empty rubric */ Rub_ResetRubric (&Rubrics.Rubric); - Txt[0] = '\0'; - } else - { /* Get rubric data from database */ Rub_GetDataOfRubricByCod (&Rubrics.Rubric); - Rub_DB_GetRubricTxt (Rubrics.Rubric.RubCod,Txt); - } - /***** Put forms to create/edit a rubric *****/ - Rub_PutFormsEditionRubric (&Rubrics,Txt,ItsANewRubric); + /***** Put form to create/edit a rubric and show criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion,ItsANewRubric); + } - /***** Show rubrics or criteria *****/ +/*****************************************************************************/ +/******************** Put forms to create/edit a rubric **********************/ +/*****************************************************************************/ + +void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion, + bool ItsANewRubric) + { + char Txt[Cns_MAX_BYTES_TEXT + 1]; + + /***** Initialize text / get text from database *****/ + if (ItsANewRubric) + Txt[0] = '\0'; + else + Rub_DB_GetRubricTxt (Rubrics->Rubric.RubCod,Txt); + + /***** Put form to create/edit an exam *****/ + Rub_PutFormEditionRubric (Rubrics,Txt,ItsANewRubric); + + /***** Show other lists *****/ if (ItsANewRubric) /* Show rubrics again */ - Rub_ListAllRubrics (&Rubrics); + Rub_ListAllRubrics (Rubrics); else - /* Show criteria of the rubric ready to be edited */ - RubCri_ListRubricCriteria (&Rubrics); + /* Show list of criteria */ + RubCri_ListCriteria (Rubrics,Criterion); } /*****************************************************************************/ /******************** Put a form to create/edit a rubric *********************/ /*****************************************************************************/ -static void Rub_PutFormsEditionRubric (struct Rub_Rubrics *Rubrics, - char Txt[Cns_MAX_BYTES_TEXT + 1], - bool ItsANewRubric) +void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics, + char Txt[Cns_MAX_BYTES_TEXT + 1], + bool ItsANewRubric) { extern const char *Hlp_ASSESSMENT_Rubrics_new_rubric; extern const char *Hlp_ASSESSMENT_Rubrics_edit_rubric; @@ -854,57 +883,46 @@ static void Rub_PutFormsEditionRubric (struct Rub_Rubrics *Rubrics, void Rub_ReceiveFormRubric (void) { struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; bool ItsANewRubric; char Txt[Cns_MAX_BYTES_TEXT + 1]; - /***** Reset rubrics context *****/ - Rub_ResetRubrics (&Rubrics); - - /***** Reset rubric *****/ - Rub_ResetRubric (&Rubrics.Rubric); - /***** Check if I can edit rubrics *****/ if (!Rub_CheckIfICanEditRubrics ()) Err_NoPermissionExit (); + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + /***** Get parameters *****/ - ItsANewRubric = ((Rubrics.Rubric.RubCod = Rub_GetPars (&Rubrics)) <= 0); + Rub_GetPars (&Rubrics,false); + ItsANewRubric = (Rubrics.Rubric.RubCod <= 0); - /***** If I can edit rubrics ==> receive rubric from form *****/ - if (Rub_CheckIfICanEditRubrics ()) + /***** Get all current rubric data from database *****/ + // Some data, not received from form, + // are necessary to show rubric and criteria again + if (!ItsANewRubric) + Rub_GetDataOfRubricByCod (&Rubrics.Rubric); + + /***** Overwrite some rubric data with the data received from form *****/ + Rub_ReceiveRubricFieldsFromForm (&Rubrics.Rubric,Txt); + if (Rub_CheckRubricFieldsReceivedFromForm (&Rubrics.Rubric)) { - Rub_ReceiveRubricFieldsFromForm (&Rubrics.Rubric,Txt); - if (Rub_CheckRubricFieldsReceivedFromForm (&Rubrics.Rubric)) + /***** Create a new rubric or update an existing one *****/ + if (ItsANewRubric) { - /***** Create a new rubric or update an existing one *****/ - if (ItsANewRubric) - Rub_CreateRubric (&Rubrics.Rubric,Txt); // Add new rubric to database - else - Rub_UpdateRubric (&Rubrics.Rubric,Txt); // Update rubric data in database - - /***** Put forms to edit the rubric created or updated *****/ - Rub_PutFormsEditionRubric (&Rubrics,Txt, - false); // No new rubric - - /***** Show criteria of the rubric ready to be edited ******/ - RubCri_ListRubricCriteria (&Rubrics); + Rub_CreateRubric (&Rubrics.Rubric,Txt); // Add new rubric to database + ItsANewRubric = false; } else - { - /***** Put forms to create/edit the rubric *****/ - Rub_PutFormsEditionRubric (&Rubrics,Txt,ItsANewRubric); - - /***** Show rubrics or criteria *****/ - if (ItsANewRubric) - /* Show rubrics again */ - Rub_ListAllRubrics (&Rubrics); - else - /* Show criteria of the rubric ready to be edited */ - RubCri_ListRubricCriteria (&Rubrics); - } + Rub_UpdateRubric (&Rubrics.Rubric,Txt); // Update rubric data in database } - else - Err_NoPermissionExit (); + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + ItsANewRubric); } static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric, diff --git a/swad_rubric.h b/swad_rubric.h index 00e1b984..70384f19 100644 --- a/swad_rubric.h +++ b/swad_rubric.h @@ -27,35 +27,14 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ +#include "swad_rubric_type.h" #include "swad_string.h" /*****************************************************************************/ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Rub_MAX_CHARS_TITLE (128 - 1) // 127 -#define Rub_MAX_BYTES_TITLE ((Rub_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - -#define Rub_AFTER_LAST_CRITERION ((unsigned)((1UL << 31) - 1)) // 2^31 - 1, don't change this number because it is used in database - -struct Rub_Rubric - { - long RubCod; // Rubric code - long CrsCod; // Course code - long UsrCod; // Author code - char Title[Rub_MAX_BYTES_TITLE + 1]; - unsigned NumCriteria; // Number of criteria in the rubric - }; - -struct Rub_Rubrics - { - bool LstIsRead; // Is the list already read from database... - // ...or it needs to be read? - unsigned Num; // Total number of rubrics - long *Lst; // List of rubric codes - unsigned CurrentPage; - struct Rub_Rubric Rubric; // Selected/current rubric - }; +#define RubCri_AFTER_LAST_CRITERION ((unsigned)((1UL << 31) - 1)) // 2^31 - 1, don't change this number because it is used in database /*****************************************************************************/ /***************************** Public prototypes *****************************/ @@ -67,6 +46,7 @@ void Rub_ResetRubric (struct Rub_Rubric *Rubric); void Rub_SeeAllRubrics (void); void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics); bool Rub_CheckIfICanEditRubrics (void); +bool Rub_CheckIfEditable (const struct Rub_Rubric *Rubric); void Rub_SeeOneRubric (void); void Rub_ShowOnlyOneRubric (struct Rub_Rubrics *Rubrics, bool ListRubricDims); @@ -76,7 +56,7 @@ void Rub_ShowOnlyOneRubricEnd (void); void Rub_SetCurrentRubCod (long GamCod); void Rub_PutPars (void *Rubrics); -long Rub_GetPars (struct Rub_Rubrics *Rubrics); +void Rub_GetPars (struct Rub_Rubrics *Rubrics,bool CheckRubCod); void Rub_GetListRubrics (struct Rub_Rubrics *Rubrics); void Rub_GetDataOfRubricByCod (struct Rub_Rubric *Rubric); @@ -89,7 +69,13 @@ void Rub_RemoveCrsRubrics (long CrsCod); void Rub_ListRubric (void); -void Rub_RequestCreatOrEditRubric (void); +void Rub_ReqCreatOrEditRubric (void); +void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion, + bool ItsANewRubric); +void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics, + char Txt[Cns_MAX_BYTES_TEXT + 1], + bool ItsANewRubric); void Rub_ReceiveFormRubric (void); diff --git a/swad_rubric_criteria.c b/swad_rubric_criteria.c index 415bec1f..62fea47c 100644 --- a/swad_rubric_criteria.c +++ b/swad_rubric_criteria.c @@ -20,6 +20,90 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ + +#define _GNU_SOURCE // For asprintf +#include // For DBL_MAX +#include // For PATH_MAX +#include // For NULL +#include // For asprintf +#include // For free +#include // For string functions + +#include "swad_action_list.h" +#include "swad_box.h" +#include "swad_database.h" +#include "swad_error.h" +#include "swad_figure.h" +#include "swad_form.h" +#include "swad_global.h" +#include "swad_HTML.h" +#include "swad_match.h" +#include "swad_match_result.h" +#include "swad_pagination.h" +#include "swad_parameter.h" +#include "swad_parameter_code.h" +#include "swad_question_database.h" +#include "swad_role.h" +#include "swad_rubric.h" +#include "swad_rubric_criteria.h" +#include "swad_rubric_database.h" +#include "swad_test.h" +#include "swad_test_visibility.h" + +/*****************************************************************************/ +/************** External global variables from others modules ****************/ +/*****************************************************************************/ + +extern struct Globals Gbl; + +/*****************************************************************************/ +/***************************** Private constants *****************************/ +/*****************************************************************************/ + +#define RubCri_MAX_SELECTED_QUESTIONS 10000 +#define RubCri_MAX_BYTES_LIST_SELECTED_QUESTIONS (RubCri_MAX_SELECTED_QUESTIONS * (Cns_MAX_DECIMAL_DIGITS_LONG + 1)) + +// Form parameters for minimum/maximum criterion values +static const char *RubCri_ParValues[RubCri_NUM_VALUES] = + { + [RubCri_MIN] = "MinVal", + [RubCri_MAX] = "MaxVal", + }; + +/*****************************************************************************/ +/************************** Public types and constants ***********************/ +/*****************************************************************************/ + +/*****************************************************************************/ +/***************************** Private prototypes ****************************/ +/*****************************************************************************/ + +static void RubCri_PutParsOneCriterion (void *Rubrics); + +static void RubCri_PutFormNewCriterion (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion, + unsigned MaxCriInd); +static void RubCri_ReceiveCriterionFieldsFromForm (struct RubCri_Criterion *Criterion); +static bool RubCri_CheckCriterionTitleReceivedFromForm (const struct RubCri_Criterion *Criterion, + const char NewTitle[RubCri_MAX_BYTES_TITLE + 1]); + +static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange); + +static void RubCri_CreateCriterion (struct RubCri_Criterion *Criterion); + +static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics, + unsigned MaxCriInd, + unsigned NumCriteria, + MYSQL_RES *mysql_res, + bool ICanEditCriteria); +static void RubCri_PutTableHeadingForCriteria (void); + +static void RubCri_GetAndCheckPars (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion); + +static void RubCri_ExchangeCriteria (long RubCod, + unsigned CriIndTop,unsigned CriIndBottom); + /*****************************************************************************/ /********************************* Headers ***********************************/ /*****************************************************************************/ @@ -49,17 +133,12 @@ extern struct Globals Gbl; /***************************** Private prototypes ****************************/ /*****************************************************************************/ -static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics, - unsigned NumCriteria, - MYSQL_RES *mysql_res, - bool ICanEditCriteria); -static void RubCri_PutParsOneCriterion (void *Rubrics); /*****************************************************************************/ /********************** Initialize a new citerion to zero ********************/ /*****************************************************************************/ -void RubCri_CriterionConstructor (struct Rub_Criterion *Criterion) +void RubCri_CriterionConstructor (struct RubCri_Criterion *Criterion) { Criterion->CriCod = -1L; } @@ -68,55 +147,16 @@ void RubCri_CriterionConstructor (struct Rub_Criterion *Criterion) /*************** Free memory allocated for rubric criterion ******************/ /*****************************************************************************/ -void RubCri_CriterionDestructor (struct Rub_Criterion *Criterion) +void RubCri_CriterionDestructor (struct RubCri_Criterion *Criterion) { Criterion->CriCod = -1L; } -/*****************************************************************************/ -/*********** Put parameter with criterion code to edit, remove... ************/ -/*****************************************************************************/ - -void RubCri_PutParCriCod (void *CriCod) // Should be a pointer to long - { - if (CriCod) - if (*((long *) CriCod) > 0) // If criterion exists - Par_PutParLong (NULL,"CriCod",*((long *) CriCod)); - } - -/*****************************************************************************/ -/*************** Get data of a rubric criterion from database ****************/ -/*****************************************************************************/ - -bool RubCri_GetCriterionDataFromDB (struct Rub_Criterion *Criterion) - { - MYSQL_RES *mysql_res; - MYSQL_ROW row; - bool CriterionExists; - - /***** Get question data from database *****/ - if ((CriterionExists = (Rub_DB_GetCriterionData (&mysql_res,Criterion->CriCod) != 0))) - { - row = mysql_fetch_row (mysql_res); - - /* Get the title (row[0]) */ - Criterion->Title[0] = '\0'; - if (row[0]) - if (row[0][0]) - Str_Copy (Criterion->Title,row[0],Cns_MAX_BYTES_TEXT); - } - - /* Free structure that stores the query result */ - DB_FreeMySQLResult (&mysql_res); - - return CriterionExists; - } - /*****************************************************************************/ /******************* List a rubric criterion for edition *********************/ /*****************************************************************************/ -void RubCri_ListCriterionForEdition (struct Rub_Criterion *Criterion, +void RubCri_ListCriterionForEdition (struct RubCri_Criterion *Criterion, unsigned CriInd,bool CriterionExists, const char *Anchor) { @@ -124,7 +164,7 @@ void RubCri_ListCriterionForEdition (struct Rub_Criterion *Criterion, /***** Number of criterion *****/ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - RubCri_WriteNumCriterion (CriInd,"BIG_INDEX"); + Lay_WriteIndex (CriInd,"BIG_INDEX"); HTM_TD_End (); /***** Write criterion code *****/ @@ -138,8 +178,7 @@ void RubCri_ListCriterionForEdition (struct Rub_Criterion *Criterion, HTM_ARTICLE_Begin (Anchor); if (CriterionExists) /* Write title */ - RubCri_WriteCriterionTitle (Criterion->Title,"Qst_TXT", - true); // Visible + RubCri_WriteCriterionTitle (Criterion); // Visible else { HTM_SPAN_Begin ("class=\"DAT_LIGHT_%s\"", @@ -151,58 +190,6 @@ void RubCri_ListCriterionForEdition (struct Rub_Criterion *Criterion, HTM_TD_End (); } -/*****************************************************************************/ -/******************* Write the number of a rubric criterion ******************/ -/*****************************************************************************/ -// Number of criterion should be 1, 2, 3... - -void RubCri_WriteNumCriterion (unsigned NumCri,const char *Class) - { - HTM_DIV_Begin ("class=\"%s_%s\"",Class,The_GetSuffix ()); - HTM_Unsigned (NumCri); - HTM_DIV_End (); - } - -/*****************************************************************************/ -/******************* Write the title of a rubric criterion *******************/ -/*****************************************************************************/ - -void RubCri_WriteCriterionTitle (const char *Title,const char *ClassTitle,bool Visible) - { - unsigned long TitleLength; - char *TitleRigorousHTML; - - /***** DIV begin *****/ - HTM_DIV_Begin ("class=\"%s_%s\"",ClassTitle,The_GetSuffix ()); - - /***** Write title *****/ - if (Title && Visible) - { - if (Title[0]) - { - /* Convert the title, that is in HTML, to rigorous HTML */ - TitleLength = strlen (Title) * Str_MAX_BYTES_PER_CHAR; - if ((TitleRigorousHTML = malloc (TitleLength + 1)) == NULL) - Err_NotEnoughMemoryExit (); - Str_Copy (TitleRigorousHTML,Title,TitleLength); - - Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, - TitleRigorousHTML,TitleLength,false); - - /* Write title text */ - HTM_Txt (TitleRigorousHTML); - - /* Free memory allocated for the title */ - free (TitleRigorousHTML); - } - } - else - Ico_PutIconNotVisible (); - - /***** DIV end *****/ - HTM_DIV_End (); - } - /*****************************************************************************/ /***************** Put icon to add a new criterion to rubric *****************/ /*****************************************************************************/ @@ -252,128 +239,537 @@ unsigned RubCri_GetParCriInd (void) } /*****************************************************************************/ -/*********************** List the criteria of a rubric ***********************/ +/************ Request the creation or edition of a rubric criterion **********/ /*****************************************************************************/ -void RubCri_ListRubricCriteria (struct Rub_Rubrics *Rubrics) +void RubCri_ReqCreatOrEditCriterion (void) + { + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + bool ItsANewCriterion; + char Txt[Cns_MAX_BYTES_TEXT + 1]; + + /***** Check if I can edit rubrics *****/ + if (!Rub_CheckIfICanEditRubrics ()) + Err_NoPermissionExit (); + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get parameters *****/ + Rub_GetPars (&Rubrics,true); + Rubrics.CriCod = Criterion.CriCod = ParCod_GetPar (ParCod_Cri); + ItsANewCriterion = (Criterion.CriCod <= 0); + + /***** Get exam data from database *****/ + Rub_GetDataOfRubricByCod (&Rubrics.Rubric); + Rub_DB_GetRubricTxt (Rubrics.Rubric.RubCod,Txt); + + /***** Get rubric data *****/ + if (ItsANewCriterion) + /* Initialize to empty rubric */ + Rub_ResetRubric (&Rubrics.Rubric); + else + { + /* Get rubric data from database */ + RubCri_GetDataOfCriterionByCod (&Criterion); + Rubrics.CriCod = Criterion.CriCod; + } + + /***** Put form to edit the rubric created or updated *****/ + Rub_PutFormEditionRubric (&Rubrics,Txt, + false); // No new rubric + } + +/****************************************************************************************************************************/ +/******************************************************* Headers ************************************************************/ +/****************************************************************************************************************************/ + +/*****************************************************************************/ +/*************** Put parameter to edit one rubric criterion ******************/ +/*****************************************************************************/ + +static void RubCri_PutParsOneCriterion (void *Rubrics) + { + if (Rubrics) + { + Rub_PutPars (Rubrics); + ParCod_PutPar (ParCod_Cri,((struct Rub_Rubrics *) Rubrics)->CriCod); + } + } + +/*****************************************************************************/ +/******************** Get criterion data using its code **********************/ +/*****************************************************************************/ + +void RubCri_GetDataOfCriterionByCod (struct RubCri_Criterion *Criterion) + { + MYSQL_RES *mysql_res; + MYSQL_ROW row; + char StrCriInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; + RubCri_ValueRange_t ValueRange; + + /***** Trivial check *****/ + if (Criterion->CriCod <= 0) + { + /* Initialize to empty criterion */ + RubCri_ResetCriterion (Criterion); + return; + } + + /***** Get data of rubric criterion from database *****/ + if (Rub_DB_GetDataOfCriterionByCod (&mysql_res,Criterion->CriCod)) // Criterion found... + { + /* Get row */ + row = mysql_fetch_row (mysql_res); + /* + row[0] CriCod + row[1] RubCod + row[2] CriInd + row[3] MinVal + row[4] MaxVal + row[5] Title + */ + /* Get criterion code (row[0]) */ + Criterion->CriCod = Str_ConvertStrCodToLongCod (row[0]); + + /* Get rubric code (row[0]) */ + Criterion->RubCod = Str_ConvertStrCodToLongCod (row[1]); + + /* Get criterion index (row[2]) */ + Criterion->CriInd = Str_ConvertStrToUnsigned (row[2]); + snprintf (StrCriInd,sizeof (Criterion->CriInd),"%u",Criterion->CriInd); + + /* Get criterion minimum and maximum values (row[3], row[4]) */ + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + Criterion->Values[ValueRange] = Str_GetDoubleFromStr (row[3 + ValueRange]); + + /* Get the title of the criterion (row[5]) */ + Str_Copy (Criterion->Title,row[3 + RubCri_NUM_VALUES],sizeof (Criterion->Title) - 1); + } + else + /* Initialize to empty criterion */ + RubCri_ResetCriterion (Criterion); + + /* Free structure that stores the query result */ + DB_FreeMySQLResult (&mysql_res); + } + +/*****************************************************************************/ +/*************** Put a form to create/edit a rubric criterion ****************/ +/*****************************************************************************/ + +static void RubCri_PutFormNewCriterion (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion, + unsigned MaxCriInd) + { + extern const char *Txt_New_criterion; + extern const char *Txt_Create_criterion; + RubCri_ValueRange_t ValueRange; + + /***** Begin form *****/ + Frm_BeginForm (ActNewRubCri); + Rub_PutPars (Rubrics); + + /***** Begin box and table *****/ + Box_BoxTableBegin (NULL,Txt_New_criterion, + NULL,NULL, + NULL,Box_NOT_CLOSABLE,2); + + /***** Table heading *****/ + RubCri_PutTableHeadingForCriteria (); + + /***** Begin row *****/ + HTM_TR_Begin (NULL); + + /***** Empty column for buttons *****/ + HTM_TD_Begin ("class=\"BM\""); + HTM_TD_End (); + + /***** Index *****/ + HTM_TD_Begin ("class=\"RM\""); + Lay_WriteIndex (MaxCriInd + 1,"BIG_INDEX"); + HTM_TD_End (); + + /***** Title *****/ + HTM_TD_Begin ("class=\"LM\""); + HTM_INPUT_TEXT ("Title",RubCri_MAX_CHARS_TITLE,Criterion->Title, + HTM_DONT_SUBMIT_ON_CHANGE, + "id=\"Title\"" + " class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\"" + " required=\"required\"", + The_GetSuffix ()); + HTM_TD_End (); + + /***** Minimum and maximum values of the criterion *****/ + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + { + HTM_TD_Begin ("class=\"RM\""); + HTM_INPUT_FLOAT (RubCri_ParValues[ValueRange],0.0,DBL_MAX,0.1, + Criterion->Values[ValueRange],false, + " class=\"INPUT_%s\" required=\"required\"", + The_GetSuffix ()); + HTM_TD_End (); + } + + /***** End row *****/ + HTM_TR_End (); + + /***** End table, send button and end box *****/ + Box_BoxTableWithButtonEnd (Btn_CREATE_BUTTON,Txt_Create_criterion); + + /***** End form *****/ + Frm_EndForm (); + } + +/*****************************************************************************/ +/**************** Receive form to create a new rubric criterion **************/ +/*****************************************************************************/ + +void RubCri_ReceiveFormCriterion (void) + { + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get parameters *****/ + Rub_GetPars (&Rubrics,true); + Criterion.RubCod = Rubrics.Rubric.RubCod; + + /***** Get rubric data from database *****/ + Rub_GetDataOfRubricByCod (&Rubrics.Rubric); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) + Err_NoPermissionExit (); + + /***** If I can edit rubrics ==> receive criterion from form *****/ + RubCri_ReceiveCriterionFieldsFromForm (&Criterion); + + if (RubCri_CheckCriterionTitleReceivedFromForm (&Criterion,Criterion.Title)) + RubCri_CreateCriterion (&Criterion); // Add new criterion to database + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new rubric + } + +static void RubCri_ReceiveCriterionFieldsFromForm (struct RubCri_Criterion *Criterion) + { + RubCri_ValueRange_t ValueRange; + char ValueStr[64]; + + /***** Get criterion title *****/ + Par_GetParText ("Title",Criterion->Title,RubCri_MAX_BYTES_TITLE); + + /***** Get minimum and maximum values of criterion *****/ + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + { + Par_GetParText (RubCri_ParValues[ValueRange],ValueStr,sizeof (ValueStr) - 1); + Criterion->Values[ValueRange] = Str_GetDoubleFromStr (ValueStr); + } + } + +static bool RubCri_CheckCriterionTitleReceivedFromForm (const struct RubCri_Criterion *Criterion, + const char NewTitle[RubCri_MAX_BYTES_TITLE + 1]) + { + extern const char *Txt_Already_existed_a_criterion_in_this_rubric_with_the_title_X; + bool NewTitleIsCorrect; + + /***** Check if title is correct *****/ + NewTitleIsCorrect = true; + if (NewTitle[0]) // If there's an criterion title + { + /***** Check if old and new titles are the same + (this happens when return is pressed without changes) *****/ + if (strcmp (Criterion->Title,NewTitle)) // Different titles + { + /* If title of criterion was in database... */ + if (Rub_DB_CheckIfSimilarCriterionExists (Criterion,NewTitle)) + { + NewTitleIsCorrect = false; + Ale_ShowAlert (Ale_WARNING,Txt_Already_existed_a_criterion_in_this_rubric_with_the_title_X, + Criterion->Title); + } + } + } + else // If there is not a criterion title + { + NewTitleIsCorrect = false; + Ale_ShowAlertYouMustSpecifyTheTitle (); + } + + return NewTitleIsCorrect; + } + +/*****************************************************************************/ +/************* Receive form to change title of rubric criterion **************/ +/*****************************************************************************/ + +void RubCri_ChangeCriterionTitle (void) + { + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + char NewTitle[RubCri_MAX_BYTES_TITLE + 1]; + + /***** Check if I can edit rubrics *****/ + if (!Rub_CheckIfICanEditRubrics ()) + Err_NoPermissionExit (); + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get and check parameters *****/ + RubCri_GetAndCheckPars (&Rubrics,&Criterion); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) + Err_NoPermissionExit (); + + /***** Receive new title from form *****/ + Par_GetParText ("Title",NewTitle,RubCri_MAX_BYTES_TITLE); + + /***** Check if title should be changed *****/ + if (RubCri_CheckCriterionTitleReceivedFromForm (&Criterion,NewTitle)) + { + /* Update the table changing old title by new title */ + Rub_DB_UpdateCriterionTitle (Criterion.CriCod,Criterion.RubCod,NewTitle); + + /* Update title */ + Str_Copy (Criterion.Title,NewTitle,sizeof (Criterion.Title) - 1); + } + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new rubric + } + +/*****************************************************************************/ +/********* Receive form to change minimum/maximum value of criterion *********/ +/*****************************************************************************/ + +void RubCri_ChangeMinValueCriterion (void) + { + RubCri_ChangeValueCriterion (RubCri_MIN); + } + +void RubCri_ChangeMaxValueCriterion (void) + { + RubCri_ChangeValueCriterion (RubCri_MAX); + } + +static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange) + { + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + char ValueStr[64]; + + /***** Check if I can edit rubrics *****/ + if (!Rub_CheckIfICanEditRubrics ()) + Err_NoPermissionExit (); + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get parameters *****/ + Rub_GetPars (&Rubrics,true); + Criterion.RubCod = Rubrics.Rubric.RubCod; + Rubrics.CriCod = Criterion.CriCod = ParCod_GetAndCheckPar (ParCod_Cri); + + /***** Get and check parameters *****/ + RubCri_GetAndCheckPars (&Rubrics,&Criterion); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) + Err_NoPermissionExit (); + + /***** Receive new value from form *****/ + Par_GetParText (RubCri_ParValues[ValueRange],ValueStr,sizeof (ValueStr) - 1); + Criterion.Values[ValueRange] = Str_GetDoubleFromStr (ValueStr); + + /***** Change value *****/ + /* Update the table changing old value by new value */ + Rub_DB_UpdateCriterionValue (Criterion.CriCod,Criterion.RubCod, + ValueRange,Criterion.Values[ValueRange]); + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new rubric + } + +/*****************************************************************************/ +/************************ Create a new rubric criterion **********************/ +/*****************************************************************************/ + +static void RubCri_CreateCriterion (struct RubCri_Criterion *Criterion) + { + extern const char *Txt_Created_new_criterion_X; + unsigned MaxCriInd; + + /***** Get maximum criterion index *****/ + MaxCriInd = Rub_DB_GetMaxCriterionIndexInRubric (Criterion->RubCod); + + /***** Create a new criterion *****/ + Criterion->CriInd = MaxCriInd + 1; + Criterion->CriCod = Rub_DB_CreateCriterion (Criterion); + + /***** Write success message *****/ + Ale_ShowAlert (Ale_SUCCESS,Txt_Created_new_criterion_X, + Criterion->Title); + } + +/*****************************************************************************/ +/********************** List the criteria of a rubric ************************/ +/*****************************************************************************/ + +void RubCri_ListCriteria (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion) { extern const char *Hlp_ASSESSMENT_Rubrics_criteria; extern const char *Txt_Criteria; MYSQL_RES *mysql_res; + unsigned MaxCriInd; unsigned NumCriteria; - bool ICanEditCriteria = Rub_CheckIfICanEditRubrics (); + bool ICanEditCriteria = Rub_CheckIfEditable (&Rubrics->Rubric); - /***** Get data of criteria from database *****/ - NumCriteria = Rub_DB_GetRubricCriteriaBasic (&mysql_res,Rubrics->Rubric.RubCod); + /***** Get maximum criterion index *****/ + MaxCriInd = Rub_DB_GetMaxCriterionIndexInRubric (Rubrics->Rubric.RubCod); + + /***** Get data of rubric criteria from database *****/ + NumCriteria = Rub_DB_GetCriteria (&mysql_res,Rubrics->Rubric.RubCod); /***** Begin box *****/ - if (ICanEditCriteria) - Box_BoxBegin (NULL,Txt_Criteria, - RubCri_PutIconToAddNewCriterion,Rubrics, - Hlp_ASSESSMENT_Rubrics_criteria,Box_NOT_CLOSABLE); - else - Box_BoxBegin (NULL,Txt_Criteria, - NULL,NULL, - Hlp_ASSESSMENT_Rubrics_criteria,Box_NOT_CLOSABLE); + Box_BoxBegin (NULL,Txt_Criteria, + NULL,NULL, + Hlp_ASSESSMENT_Rubrics_criteria,Box_NOT_CLOSABLE); - /***** Show table with criteria *****/ - if (NumCriteria) - RubCri_ListOneOrMoreCriteriaForEdition (Rubrics,NumCriteria,mysql_res, - ICanEditCriteria); + /***** Show table with rubric criteria *****/ + if (NumCriteria) + RubCri_ListOneOrMoreCriteriaForEdition (Rubrics, + MaxCriInd, + NumCriteria,mysql_res, + ICanEditCriteria); - /***** Put button to add a new criterion in this rubric *****/ - if (ICanEditCriteria) // I can edit criteria - RubCri_PutButtonToAddNewCriterion (Rubrics); + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); - /***** Free structure that stores the query result *****/ - DB_FreeMySQLResult (&mysql_res); + /***** Put forms to create/edit a criterion *****/ + if (ICanEditCriteria) + RubCri_PutFormNewCriterion (Rubrics,Criterion,MaxCriInd); /***** End box *****/ Box_BoxEnd (); } /*****************************************************************************/ -/********************* List rubric criteria for edition **********************/ +/********************** List rubric criteria for edition **********************/ /*****************************************************************************/ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics, - unsigned NumCriteria, + unsigned MaxCriInd, + unsigned NumCriteria, MYSQL_RES *mysql_res, - bool ICanEditCriteria) + bool ICanEditCriteria) { extern const char *Txt_Criteria; - extern const char *Txt_No_INDEX; - extern const char *Txt_Code; - extern const char *Txt_Tags; - extern const char *Txt_Criterion; extern const char *Txt_Movement_not_allowed; - unsigned NumCri; - unsigned CriInd; - unsigned MaxCriInd; + // Actions to change minimum/maximum criterion values + static Act_Action_t RubCri_ActionsValues[RubCri_NUM_VALUES] = + { + [RubCri_MIN] = ActChgMinRubCri, + [RubCri_MAX] = ActChgMaxRubCri, + }; + unsigned NumCriterion; + struct RubCri_Criterion Criterion; MYSQL_ROW row; - struct Rub_Criterion Criterion; + char *Anchor; char StrCriInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; - bool CriterionExists; - char *Anchor = NULL; + RubCri_ValueRange_t ValueRange; /***** Trivial check *****/ if (!NumCriteria) return; - /***** Get maximum criterion index *****/ - MaxCriInd = Rub_DB_GetMaxCriterionIndexInRubric (Rubrics->Rubric.RubCod); // 0 is no criteria in rubric - - /***** Write the heading *****/ + /***** Begin table *****/ HTM_TABLE_BeginWideMarginPadding (5); - HTM_TR_Begin (NULL); - HTM_TH_Empty (1); - HTM_TH (Txt_No_INDEX ,HTM_HEAD_CENTER); - HTM_TH (Txt_Code ,HTM_HEAD_CENTER); - HTM_TH (Txt_Tags ,HTM_HEAD_CENTER); - HTM_TH (Txt_Criterion,HTM_HEAD_CENTER); - HTM_TR_End (); + /***** Write the heading *****/ + RubCri_PutTableHeadingForCriteria (); /***** Write rows *****/ - for (NumCri = 0, The_ResetRowColor (); - NumCri < NumCriteria; - NumCri++, The_ChangeRowColor ()) + for (NumCriterion = 0, The_ResetRowColor (); + NumCriterion < NumCriteria; + NumCriterion++, The_ChangeRowColor ()) { - /***** Create rubric criterion *****/ - RubCri_CriterionConstructor (&Criterion); + /***** Create criterion of questions *****/ + RubCri_ResetCriterion (&Criterion); + Criterion.RubCod = Rubrics->Rubric.RubCod; /***** Get criterion data *****/ row = mysql_fetch_row (mysql_res); /* - row[0] QstCod - row[1] QstInd + row[0] CriCod + row[1] CriInd + row[2] MinVal + row[3] MaxVal + row[4] Title */ /* Get criterion code (row[0]) */ Criterion.CriCod = Str_ConvertStrCodToLongCod (row[0]); /* Get criterion index (row[1]) */ - CriInd = Str_ConvertStrToUnsigned (row[1]); - snprintf (StrCriInd,sizeof (StrCriInd),"%u",CriInd); + Criterion.CriInd = Str_ConvertStrToUnsigned (row[1]); + snprintf (StrCriInd,sizeof (Criterion.CriInd),"%u",Criterion.CriInd); + + /* Get minimum value (row[2]) and maximum value (row[3]) */ + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + Criterion.Values[ValueRange] = Str_GetDoubleFromStr (row[2 + ValueRange]); + + /* Get the title of the criterion (row[4]) */ + Str_Copy (Criterion.Title,row[2 + RubCri_NUM_VALUES],sizeof (Criterion.Title) - 1); + + /* Initialize context */ + Rubrics->CriCod = Criterion.CriCod; + Rubrics->CriInd = Criterion.CriInd; /***** Build anchor string *****/ Frm_SetAnchorStr (Criterion.CriCod,&Anchor); - /***** Begin row *****/ + /***** Begin first row *****/ HTM_TR_Begin (NULL); /***** Icons *****/ - HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ()); + HTM_TD_Begin ("rowspan=\"2\" class=\"BT %s\"", + The_GetColorRows ()); /* Put icon to remove the criterion */ if (ICanEditCriteria) - Ico_PutContextualIconToRemove (ActReqRemGamQst,NULL, + Ico_PutContextualIconToRemove (ActReqRemRubCri,NULL, RubCri_PutParsOneCriterion,Rubrics); else Ico_PutIconRemovalNotAllowed (); - /* Put icon to move up the criterion */ - if (ICanEditCriteria && CriInd > 1) - Lay_PutContextualLinkOnlyIcon (ActUp_GamQst,Anchor, + /* Put icon to move up the question */ + if (ICanEditCriteria && Criterion.CriInd > 1) + Lay_PutContextualLinkOnlyIcon (ActUp_RubCri,Anchor, RubCri_PutParsOneCriterion,Rubrics, "arrow-up.svg",Ico_BLACK); else @@ -381,33 +777,88 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics, Txt_Movement_not_allowed); /* Put icon to move down the criterion */ - if (ICanEditCriteria && CriInd < MaxCriInd) - Lay_PutContextualLinkOnlyIcon (ActDwnGamQst,Anchor, + if (ICanEditCriteria && Criterion.CriInd < MaxCriInd) + Lay_PutContextualLinkOnlyIcon (ActDwnRubCri,Anchor, RubCri_PutParsOneCriterion,Rubrics, "arrow-down.svg",Ico_BLACK); else Ico_PutIconOff ("arrow-down.svg",Ico_BLACK, Txt_Movement_not_allowed); - /* Put icon to edit the criterion */ - if (ICanEditCriteria) - Ico_PutContextualIconToEdit (ActEdiOneTstQst,NULL, - RubCri_PutParCriCod,&Criterion.CriCod); + HTM_TD_End (); + + /***** Index *****/ + HTM_TD_Begin ("rowspan=\"2\" class=\"RT %s\"", + The_GetColorRows ()); + Lay_WriteIndex (Criterion.CriInd,"BIG_INDEX"); + HTM_TD_End (); + + /***** Title *****/ + HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ()); + HTM_ARTICLE_Begin (Anchor); + if (ICanEditCriteria) + { + Frm_BeginFormAnchor (ActChgTitRubCri,Anchor); + RubCri_PutParsOneCriterion (Rubrics); + HTM_INPUT_TEXT ("Title",RubCri_MAX_CHARS_TITLE,Criterion.Title, + HTM_SUBMIT_ON_CHANGE, + "id=\"Title\"" + " class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\"" + " required=\"required\"", + The_GetSuffix ()); + Frm_EndForm (); + } + else + { + HTM_SPAN_Begin ("class=\"EXA_SET_TITLE\""); + HTM_Txt (Criterion.Title); + HTM_SPAN_End (); + } + HTM_ARTICLE_End (); + HTM_TD_End (); + + /***** Minimum and maximum values of criterion *****/ + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + { + HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); + if (ICanEditCriteria) + { + Frm_BeginFormAnchor (RubCri_ActionsValues[ValueRange],Anchor); + RubCri_PutParsOneCriterion (Rubrics); + HTM_INPUT_FLOAT (RubCri_ParValues[ValueRange],0.0,DBL_MAX,0.1, + Criterion.Values[ValueRange],false, + " class=\"INPUT_%s\" required=\"required\"", + The_GetSuffix ()); + Frm_EndForm (); + } + else + { + HTM_SPAN_Begin ("class=\"CRI_VALUE\""); + HTM_Unsigned (Criterion.Values[ValueRange]); + HTM_SPAN_End (); + } + HTM_TD_End (); + } + + /***** End first row *****/ + HTM_TR_End (); + + /***** Begin second row *****/ + HTM_TR_Begin (NULL); + + /***** Questions *****/ + HTM_TD_Begin ("colspan=\"3\" class=\"LT %s\"", + The_GetColorRows ()); HTM_TD_End (); - /***** Criterion *****/ - CriterionExists = RubCri_GetCriterionDataFromDB (&Criterion); - RubCri_ListCriterionForEdition (&Criterion,CriInd,CriterionExists,Anchor); - - /***** End row *****/ + /***** End second row *****/ HTM_TR_End (); /***** Free anchor string *****/ Frm_FreeAnchorStr (Anchor); - - /***** Destroy rubric criterion *****/ - RubCri_CriterionDestructor (&Criterion); } /***** End table *****/ @@ -415,62 +866,319 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics, } /*****************************************************************************/ -/**************** Put parameter to move/remove one criterion *****************/ +/****************** Put table heading for rubric criteria ********************/ /*****************************************************************************/ -static void RubCri_PutParsOneCriterion (void *Rubrics) +static void RubCri_PutTableHeadingForCriteria (void) { - if (Rubrics) - Rub_PutPars (Rubrics); + extern const char *Txt_No_INDEX; + extern const char *Txt_Criterion; + extern const char *Txt_Minimum; + extern const char *Txt_Maximum; + + /***** Begin row *****/ + HTM_TR_Begin (NULL); + + /***** Header cells *****/ + HTM_TH_Empty (1); + HTM_TH (Txt_No_INDEX ,HTM_HEAD_RIGHT); + HTM_TH (Txt_Criterion,HTM_HEAD_LEFT ); + HTM_TH (Txt_Minimum ,HTM_HEAD_RIGHT); + HTM_TH (Txt_Maximum ,HTM_HEAD_RIGHT); + + /***** End row *****/ + HTM_TR_End (); } /*****************************************************************************/ -/************ Request the creation or edition of a rubric criterion **********/ +/*************************** Reset rubric criterion **************************/ /*****************************************************************************/ -void RubCri_RequestCreatOrEditCri (void) +void RubCri_ResetCriterion (struct RubCri_Criterion *Criterion) { - struct Rub_Rubrics Rubrics; - bool ItsANewCriterion; - char Txt[Cns_MAX_BYTES_TEXT + 1]; + // Default values minimum/maximum criterion values + static double RubCri_DefaultValues[RubCri_NUM_VALUES] = + { + [RubCri_MIN] = 0.0, + [RubCri_MAX] = 0.1, + }; + RubCri_ValueRange_t ValueRange; - Err_ShowErrorAndExit ("Not implemented."); + Criterion->RubCod = -1L; + Criterion->CriCod = -1L; + Criterion->CriInd = 0; + Criterion->Title[0] = '\0'; + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + Criterion->Values[ValueRange] = RubCri_DefaultValues[ValueRange]; + } + +/*****************************************************************************/ +/***************** Request the removal of a rubric criterion *****************/ +/*****************************************************************************/ + +void RubCri_ReqRemCriterion (void) + { + extern const char *Txt_Do_you_really_want_to_remove_the_criterion_X; + extern const char *Txt_Remove_criterion; + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; /***** Reset rubrics context *****/ Rub_ResetRubrics (&Rubrics); - - /***** Reset rubric *****/ Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); - /***** Check if I can edit rubrics *****/ - if (!Rub_CheckIfICanEditRubrics ()) + /***** Get and check parameters *****/ + RubCri_GetAndCheckPars (&Rubrics,&Criterion); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) Err_NoPermissionExit (); - /***** Get parameters *****/ - ItsANewCriterion = ((Rubrics.Rubric.RubCod = Rub_GetPars (&Rubrics)) <= 0); + /***** Show question and button to remove question *****/ + Ale_ShowAlertAndButton (ActRemRubCri,NULL,NULL, + RubCri_PutParsOneCriterion,&Rubrics, + Btn_REMOVE_BUTTON,Txt_Remove_criterion, + Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_criterion_X, + Criterion.Title); - /***** Get rubric data *****/ - if (ItsANewCriterion) - { - /* Initialize to empty rubric */ - Rub_ResetRubric (&Rubrics.Rubric); - Txt[0] = '\0'; - } - else - { - /* Get rubric data from database */ - Rub_GetDataOfRubricByCod (&Rubrics.Rubric); - Rub_DB_GetRubricTxt (Rubrics.Rubric.RubCod,Txt); - } - - /***** Put forms to create/edit a rubric *****/ - // Rub_PutFormsEditionRubric (&Rubrics,Txt,ItsANewCriterion); - - /***** Show rubrics or criteria *****/ - if (ItsANewCriterion) - /* Show rubrics again */ - Rub_ListAllRubrics (&Rubrics); - else - /* Show criteria of the rubric ready to be edited */ - RubCri_ListRubricCriteria (&Rubrics); + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new rubric + } + +/*****************************************************************************/ +/************************* Remove a rubric criterion *************************/ +/*****************************************************************************/ + +void RubCri_RemoveCriterion (void) + { + extern const char *Txt_Criterion_removed; + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get and check parameters *****/ + RubCri_GetAndCheckPars (&Rubrics,&Criterion); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) + Err_NoPermissionExit (); + + /***** Remove the criterion from all tables *****/ + /* Remove questions associated to criterion */ + // Exa_DB_RemoveAllSetQuestionsFromSet (Criterion.CriCod,Criterion.RubCod); + + /* Remove the criterion itself */ + Rub_DB_RemoveCriterionFromRubric (Criterion.CriCod,Criterion.RubCod); + + /* Change indexes of criteria greater than this */ + Rub_DB_UpdateCriteriaIndexesInRubricGreaterThan (Criterion.RubCod,Criterion.CriInd); + + /***** Write message *****/ + Ale_ShowAlert (Ale_SUCCESS,Txt_Criterion_removed); + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new rubric + } + +/*****************************************************************************/ +/*************** Move up position of a criterion in a rubric *****************/ +/*****************************************************************************/ + +void RubCri_MoveUpCriterion (void) + { + extern const char *Txt_Movement_not_allowed; + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + unsigned CriIndTop; + unsigned CriIndBottom; + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get and check parameters *****/ + RubCri_GetAndCheckPars (&Rubrics,&Criterion); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) + Err_NoPermissionExit (); + + /***** Get criterion index *****/ + CriIndBottom = Rub_DB_GetCriIndFromCriCod (Rubrics.Rubric.RubCod,Criterion.CriCod); + + /***** Move up criterion *****/ + if (CriIndBottom > 1) + { + /* Indexes of criteria to be exchanged */ + CriIndTop = Rub_DB_GetPrevCriterionIndexInRubric (Rubrics.Rubric.RubCod,CriIndBottom); + if (CriIndTop == 0) + Err_ShowErrorAndExit ("Wrong criterion index."); + + /* Exchange criteria */ + RubCri_ExchangeCriteria (Rubrics.Rubric.RubCod,CriIndTop,CriIndBottom); + } + else + Ale_ShowAlert (Ale_WARNING,Txt_Movement_not_allowed); + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new rubric + } + +/*****************************************************************************/ +/************** Move down position of a criterion in a rubric ****************/ +/*****************************************************************************/ + +void RubCri_MoveDownCriterion (void) + { + extern const char *Txt_Movement_not_allowed; + struct Rub_Rubrics Rubrics; + struct RubCri_Criterion Criterion; + unsigned CriIndTop; + unsigned CriIndBottom; + unsigned MaxCriInd; // 0 if no criteria + + /***** Reset rubrics context *****/ + Rub_ResetRubrics (&Rubrics); + Rub_ResetRubric (&Rubrics.Rubric); + RubCri_ResetCriterion (&Criterion); + + /***** Get and check parameters *****/ + RubCri_GetAndCheckPars (&Rubrics,&Criterion); + + /***** Check if rubric is editable *****/ + if (!Rub_CheckIfEditable (&Rubrics.Rubric)) + Err_NoPermissionExit (); + + /***** Get criterion index *****/ + CriIndTop = Rub_DB_GetCriIndFromCriCod (Rubrics.Rubric.RubCod,Criterion.CriCod); + + /***** Get maximum criterion index *****/ + MaxCriInd = Rub_DB_GetMaxCriterionIndexInRubric (Rubrics.Rubric.RubCod); + + /***** Move down criterion *****/ + if (CriIndTop < MaxCriInd) + { + /* Indexes of criteria to be exchanged */ + CriIndBottom = Rub_DB_GetNextCriterionIndexInRubric (Rubrics.Rubric.RubCod,CriIndTop); + if (CriIndBottom == 0) + Err_ShowErrorAndExit ("Wrong criterion index."); + + /* Exchange criteria */ + RubCri_ExchangeCriteria (Rubrics.Rubric.RubCod,CriIndTop,CriIndBottom); + } + else + Ale_ShowAlert (Ale_WARNING,Txt_Movement_not_allowed); + + /***** Show current rubric and its criteria *****/ + Rub_PutFormsOneRubric (&Rubrics,&Criterion, + false); // It's not a new trubric + } + +/*****************************************************************************/ +/************************** Get and check parameters *************************/ +/*****************************************************************************/ + +static void RubCri_GetAndCheckPars (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion) + { + /***** Get parameters *****/ + Rub_GetPars (Rubrics,true); + Criterion->CriCod = ParCod_GetAndCheckPar (ParCod_Cri); + + /***** Get rubric data from database *****/ + Rub_GetDataOfRubricByCod (&Rubrics->Rubric); + if (Rubrics->Rubric.CrsCod != Gbl.Hierarchy.Crs.CrsCod) + Err_WrongRubricExit (); + + /***** Get criterion data from database *****/ + RubCri_GetDataOfCriterionByCod (Criterion); + if (Criterion->RubCod != Rubrics->Rubric.RubCod) + Err_WrongCriterionExit (); + Rubrics->CriCod = Criterion->CriCod; + } + +/*****************************************************************************/ +/******** Exchange the order of two consecutive criteria in a rubric *********/ +/*****************************************************************************/ + +static void RubCri_ExchangeCriteria (long RubCod, + unsigned CriIndTop,unsigned CriIndBottom) + { + long CriCodTop; + long CriCodBottom; + + /***** Lock table to make the move atomic *****/ + Rub_DB_LockTable (); + + /***** Get criterion codes of the sets to be moved *****/ + CriCodTop = Rub_DB_GetCriCodFromCriInd (RubCod,CriIndTop ); + CriCodBottom = Rub_DB_GetCriCodFromCriInd (RubCod,CriIndBottom); + + /***** Exchange indexes of sets *****/ + /* + Example: + CriIndTop = 1; CriCodTop = 218 + CriIndBottom = 2; CriCodBottom = 220 + Step 1 Step 2 Step 3 ++--------+--------+ +--------+--------+ +--------+--------+ +--------+--------+ +| CriInd | CriCod | | CriInd | CriCod | | CriInd | CriCod | | CriInd | CriCod | ++--------+--------+ +--------+--------+ +--------+--------+ +--------+--------+ +| 1 | 218 |>| -2 | 218 |>| -2 | 218 |>| 2 | 218 | +| 2 | 220 | | 2 | 220 | | 1 | 220 | | 1 | 220 | +| 3 | 232 | | 3 | 232 | | 3 | 232 | | 3 | 232 | ++--------+--------+ +--------+--------+ +--------+--------+ +--------+--------+ + */ + /* Step 1: change temporarily top index to minus bottom index + in order to not repeat unique index (RubCod,CriInd) */ + Rub_DB_UpdateCriterionIndex (-((long) CriIndBottom),CriCodTop ,RubCod); + + /* Step 2: change bottom index to old top index */ + Rub_DB_UpdateCriterionIndex ( (long) CriIndTop ,CriCodBottom,RubCod); + + /* Step 3: change top index to old bottom index */ + Rub_DB_UpdateCriterionIndex ( (long) CriIndBottom ,CriCodTop ,RubCod); + + /***** Unlock table *****/ + DB_UnlockTables (); + } + +/*****************************************************************************/ +/********************** Show title of rubric criterion ***********************/ +/*****************************************************************************/ + +void RubCri_WriteCriterionTitle (const struct RubCri_Criterion *Criterion) + { + RubCri_ValueRange_t ValueRange; + + /***** Begin table *****/ + HTM_TABLE_BeginWide (); + + /***** Title *****/ + HTM_TD_Begin ("class=\"CRI_TITLE\""); + HTM_Txt (Criterion->Title); + HTM_TD_End (); + + /***** Minimum and maximum values *****/ + for (ValueRange = (RubCri_ValueRange_t) 0; + ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1); + ValueRange++) + { + HTM_TD_Begin ("class=\"CRI_VALUE\""); + HTM_Double (Criterion->Values[ValueRange]); + HTM_TD_End (); + } + + /***** End table *****/ + HTM_TABLE_End (); } diff --git a/swad_rubric_criteria.h b/swad_rubric_criteria.h index 8b072991..9a1f326b 100644 --- a/swad_rubric_criteria.h +++ b/swad_rubric_criteria.h @@ -24,37 +24,21 @@ along with this program. If not, see . */ /*****************************************************************************/ -/************************** Public types and constants ***********************/ +/********************************* Headers ***********************************/ /*****************************************************************************/ -#define Rub_MAX_CHARS_CRITERION_TITLE (128 - 1) // 127 -#define Rub_MAX_BYTES_CRITERION_TITLE ((Rub_MAX_CHARS_CRITERION_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - -#define Rub_AFTER_LAST_CRITERION ((unsigned)((1UL << 31) - 1)) // 2^31 - 1, don't change this number because it is used in database - -struct Rub_Criterion - { - long RubCod; // Rubric code - long CriCod; // Course code - char Title[Rub_MAX_BYTES_CRITERION_TITLE + 1]; - }; +#include "swad_rubric_type.h" /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ -void RubCri_CriterionConstructor (struct Rub_Criterion *Criterion); -void RubCri_CriterionDestructor (struct Rub_Criterion *Criterion); +void RubCri_CriterionConstructor (struct RubCri_Criterion *Criterion); +void RubCri_CriterionDestructor (struct RubCri_Criterion *Criterion); -void RubCri_PutParCriCod (void *CriCod); - -bool RubCri_GetCriterionDataFromDB (struct Rub_Criterion *Criterion); - -void RubCri_ListCriterionForEdition (struct Rub_Criterion *Criterion, +void RubCri_ListCriterionForEdition (struct RubCri_Criterion *Criterion, unsigned CriInd,bool CriterionExists, const char *Anchor); -void RubCri_WriteNumCriterion (unsigned NumDim,const char *Class); -void RubCri_WriteCriterionTitle (const char *Title,const char *ClassTitle,bool Visible); void RubCri_PutIconToAddNewCriterion (void *Rubrics); void RubCri_PutButtonToAddNewCriterion (struct Rub_Rubrics *Rubrics); @@ -62,8 +46,30 @@ void RubCri_PutButtonToAddNewCriterion (struct Rub_Rubrics *Rubrics); void RubCri_PutParCriInd (unsigned CriInd); unsigned RubCri_GetParCriInd (void); -void RubCri_ListRubricCriteria (struct Rub_Rubrics *Rubrics); +void RubCri_ReqCreatOrEditCriterion (void); -void RubCri_RequestCreatOrEditCri (void); +/*****************************************************************************/ +/***************************** Public prototypes *****************************/ +/*****************************************************************************/ + +void RubCri_GetDataOfCriterionByCod (struct RubCri_Criterion *Criterion); + +void RubCri_ReceiveFormCriterion (void); +void RubCri_ChangeCriterionTitle (void); +void RubCri_ChangeMinValueCriterion (void); +void RubCri_ChangeMaxValueCriterion (void); + +void RubCri_ListCriteria (struct Rub_Rubrics *Rubrics, + struct RubCri_Criterion *Criterion); + +void RubCri_ResetCriterion (struct RubCri_Criterion *Criterion); + +void RubCri_ReqRemCriterion (void); +void RubCri_RemoveCriterion (void); + +void RubCri_MoveUpCriterion (void); +void RubCri_MoveDownCriterion (void); + +void RubCri_WriteCriterionTitle (const struct RubCri_Criterion *Criterion); #endif diff --git a/swad_rubric_database.c b/swad_rubric_database.c index 97b90351..767691ea 100644 --- a/swad_rubric_database.c +++ b/swad_rubric_database.c @@ -31,10 +31,22 @@ #include "swad_database.h" #include "swad_error.h" -#include "swad_rubric.h" #include "swad_rubric_database.h" #include "swad_global.h" +/*****************************************************************************/ +/**************************** Private constants ******************************/ +/*****************************************************************************/ + +#define RubCri_AFTER_LAST_CRITERION ((unsigned)((1UL << 31) - 1)) // 2^31 - 1, don't change this number because it is used in database + +// Fields in database for minimum/maximum criterion values +static const char *RubCri_ValuesFields[RubCri_NUM_VALUES] = + { + [RubCri_MIN] = "MinVal", + [RubCri_MAX] = "MaxVal", + }; + /*****************************************************************************/ /************** External global variables from others modules ****************/ /*****************************************************************************/ @@ -333,26 +345,73 @@ void Rub_DB_RemoveCrsRubrics (long CrsCod) } /*****************************************************************************/ -/**************** Insert criterion in the table of criteria *****************/ +/********************** Create a new rubric criterion ************************/ /*****************************************************************************/ -void Rub_DB_InsertCriterionInRubric (long RubCod,unsigned CriInd,long CriCod) +long Rub_DB_CreateCriterion (const struct RubCri_Criterion *Criterion) { - DB_QueryINSERT ("can not add criterion to rubric", - "INSERT INTO rub_criteria" - " (RubCod,CriInd,CriCod)" - " VALUES" - " (%ld,%u,%ld)", - RubCod, - CriInd, - CriCod); + long CriCod; + + Str_SetDecimalPointToUS (); // To write the decimal point as a dot + CriCod = + DB_QueryINSERTandReturnCode ("can not create new criterion", + "INSERT INTO rub_criteria" + " (RubCod,CriInd,%s,%s,Title)" + " VALUES" + " (%ld,%u,%.15lg,%.15lg,'%s')", + RubCri_ValuesFields[RubCri_MIN], + RubCri_ValuesFields[RubCri_MAX], + Criterion->RubCod, + Criterion->CriInd, + Criterion->Values[RubCri_MIN], + Criterion->Values[RubCri_MAX], + Criterion->Title); + Str_SetDecimalPointToLocal (); // Return to local system + + return CriCod; } /*****************************************************************************/ -/*********** Update indexes of criteria greater than a given one ***********/ +/********************* Update criterion title in database ********************/ /*****************************************************************************/ -void Rub_DB_UpdateIndexesOfCriteriaGreaterThan (long RubCod,unsigned CriInd) +void Rub_DB_UpdateCriterionTitle (long CriCod,long RubCod, + const char NewTitle[RubCri_MAX_BYTES_TITLE + 1]) + { + DB_QueryUPDATE ("can not update the title of a criterion", + "UPDATE rub_criteria" + " SET Title='%s'" + " WHERE CriCod=%ld" + " AND RubCod=%ld", // Extra check + NewTitle, + CriCod, + RubCod); + } + +/*****************************************************************************/ +/********************* Update criterion value in database ********************/ +/*****************************************************************************/ + +void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod, + RubCri_ValueRange_t ValueRange,double Value) + { + Str_SetDecimalPointToUS (); // To write the decimal point as a dot + DB_QueryUPDATE ("can not update the value of a criterion", + "UPDATE rub_criteria" + " SET %s=%.15lg" + " WHERE CriCod=%ld" + " AND RubCod=%ld", // Extra check + RubCri_ValuesFields[ValueRange],Value, + CriCod, + RubCod); + Str_SetDecimalPointToLocal (); // Return to local system + } + +/*****************************************************************************/ +/************ Update indexes of criteria greater than a given one ************/ +/*****************************************************************************/ + +void Rub_DB_UpdateCriteriaIndexesInRubricGreaterThan (long RubCod,unsigned CriInd) { DB_QueryUPDATE ("can not update indexes of criteria", "UPDATE rub_criteria" @@ -405,22 +464,6 @@ unsigned Rub_DB_GetNumCriteriaInRubric (long RubCod) RubCod); } -/*****************************************************************************/ -/*********************** Get the criteria of a rubric ***********************/ -/*****************************************************************************/ - -unsigned Rub_DB_GetRubricCriteriaBasic (MYSQL_RES **mysql_res,long RubCod) - { - return (unsigned) - DB_QuerySELECT (mysql_res,"can not get rubric criteria", - "SELECT CriCod," // row[0] - "CriInd" // row[1] - " FROM rub_criteria" - " WHERE RubCod=%ld" - " ORDER BY CriInd", - RubCod); - } - /*****************************************************************************/ /********* Get criterion code given rubric and index of criterion ************/ /*****************************************************************************/ @@ -510,24 +553,73 @@ unsigned Rub_DB_GetNextCriterionIndexInRubric (long RubCod,unsigned CriInd) " FROM rub_criteria" " WHERE RubCod=%ld" " AND CriInd>%u", - Rub_AFTER_LAST_CRITERION, // End of criteria has been reached + RubCri_AFTER_LAST_CRITERION, // End of criteria has been reached RubCod, CriInd); } /*****************************************************************************/ -/****************** Get data of a criterion from database ********************/ +/********************* Get criteria in a given rubric ************************/ /*****************************************************************************/ -unsigned Rub_DB_GetCriterionData (MYSQL_RES **mysql_res,long CriCod) +unsigned Rub_DB_GetCriteria (MYSQL_RES **mysql_res,long RubCod) { return (unsigned) - DB_QuerySELECT (mysql_res,"can not get a criterion", - "SELECT Title" // row[0] + DB_QuerySELECT (mysql_res,"can not get criteria", + "SELECT CriCod," // row[0] + "CriInd," // row[1] + "%s," // row[2] + "%s," // row[3] + "Title" // row[4] " FROM rub_criteria" - " WHERE CriCod=%ld" - " AND CrsCod=%ld", // Extra check - CriCod, + " WHERE RubCod=%ld" + " ORDER BY CriInd", + RubCri_ValuesFields[RubCri_MIN], + RubCri_ValuesFields[RubCri_MAX], + RubCod); + } + +/*****************************************************************************/ +/***************** Get rubric criterion data using its code ******************/ +/*****************************************************************************/ + +unsigned Rub_DB_GetDataOfCriterionByCod (MYSQL_RES **mysql_res,long CriCod) + { + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get criterion data", + "SELECT CriCod," // row[0] + "RubCod," // row[1] + "CriInd," // row[2] + "%s," // row[3] + "%s," // row[4] + "Title" // row[5] + " FROM rub_criteria" + " WHERE CriCod=%ld", + RubCri_ValuesFields[RubCri_MIN], + RubCri_ValuesFields[RubCri_MAX], + CriCod); + } + +/*****************************************************************************/ +/************** Check if the title of a rubric criterion exists **************/ +/*****************************************************************************/ + +bool Rub_DB_CheckIfSimilarCriterionExists (const struct RubCri_Criterion *Criterion, + const char Title[RubCri_MAX_BYTES_TITLE + 1]) + { + return + DB_QueryEXISTS ("can not check similar criterion", + "SELECT EXISTS" + "(SELECT *" + " FROM rub_criteria," + "rub_rubrics" + " WHERE rub_criteria.ExaCod=%ld" + " AND rub_criteria.Title='%s'" + " AND rub_criteria.SetCod<>%ld" + " AND rub_criteria.ExaCod=rub_rubrics.ExaCod" + " AND rub_rubrics.CrsCod=%ld)", // Extra check + Criterion->RubCod,Title, + Criterion->CriCod, Gbl.Hierarchy.Crs.CrsCod); } @@ -634,15 +726,15 @@ double Rub_DB_GetNumCriteriaPerRubric (HieLvl_Level_t Scope) /*********************** Remove criterion from a rubric **********************/ /*****************************************************************************/ -void Rub_DB_RemoveCriterionFromRubric (long RubCod,unsigned CriInd) +void Rub_DB_RemoveCriterionFromRubric (long CriCod,long RubCod) { - DB_QueryDELETE ("can not remove a criterion", + DB_QueryDELETE ("can not remove rubric criterion", "DELETE FROM rub_criteria" - " WHERE RubCod=%ld" - " AND CriInd=%u", - RubCod, - CriInd); - } + " WHERE CriCod=%ld" + " AND RubCod=%ld", + CriCod, + RubCod); + } /*****************************************************************************/ /**************************** Remove rubric criteria *************************/ diff --git a/swad_rubric_database.h b/swad_rubric_database.h index 6e55b292..23055f29 100644 --- a/swad_rubric_database.h +++ b/swad_rubric_database.h @@ -31,6 +31,7 @@ #include "swad_game.h" #include "swad_hierarchy_level.h" +#include "swad_rubric_type.h" /*****************************************************************************/ /***************************** Public prototypes *****************************/ @@ -53,22 +54,29 @@ void Rub_DB_RemoveRubric (long RubCod); void Rub_DB_RemoveCrsRubrics (long CrsCod); //--------------------------- Rubric criteria ------------------------------- -void Rub_DB_InsertCriterionInRubric (long RubCod,unsigned CriInd,long CriCod); -void Rub_DB_UpdateIndexesOfCriteriaGreaterThan (long RubCod,unsigned CriInd); +long Rub_DB_CreateCriterion (const struct RubCri_Criterion *Criterion); +void Rub_DB_UpdateCriterionTitle (long CriCod,long RubCod, + const char NewTitle[RubCri_MAX_BYTES_TITLE + 1]); +void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod, + RubCri_ValueRange_t ValueRange,double Value); +void Rub_DB_UpdateCriteriaIndexesInRubricGreaterThan (long RubCod,unsigned CriInd); void Rub_DB_UpdateCriterionIndex (long CriInd,long RubCod,long CriCod); void Rub_DB_LockTable (void); unsigned Rub_DB_GetNumCriteriaInRubric (long RubCod); -unsigned Rub_DB_GetRubricCriteriaBasic (MYSQL_RES **mysql_res,long RubCod); long Rub_DB_GetCriCodFromCriInd (long RubCod,unsigned QstInd); unsigned Rub_DB_GetCriIndFromCriCod (long RubCod,long QstCod); unsigned Rub_DB_GetMaxCriterionIndexInRubric (long RubCod); unsigned Rub_DB_GetPrevCriterionIndexInRubric (long RubCod,unsigned QstInd); unsigned Rub_DB_GetNextCriterionIndexInRubric (long RubCod,unsigned QstInd); -unsigned Rub_DB_GetCriterionData (MYSQL_RES **mysql_res,long CriCod); +unsigned Rub_DB_GetCriteria (MYSQL_RES **mysql_res,long RubCod); +unsigned Rub_DB_GetDataOfCriterionByCod (MYSQL_RES **mysql_res,long CriCod); +bool Rub_DB_CheckIfSimilarCriterionExists (const struct RubCri_Criterion *Criterion, + const char Title[RubCri_MAX_BYTES_TITLE + 1]); + double Rub_DB_GetNumCriteriaPerRubric (HieLvl_Level_t Scope); -void Rub_DB_RemoveCriterionFromRubric (long RubCod,unsigned CriInd); +void Rub_DB_RemoveCriterionFromRubric (long CriCod,long RubCod); void Rub_DB_RemoveRubricCriteria (long RubCod); void Rub_DB_RemoveCrsRubricCriteria (long CrsCod); diff --git a/swad_rubric_type.h b/swad_rubric_type.h new file mode 100644 index 00000000..76c81e40 --- /dev/null +++ b/swad_rubric_type.h @@ -0,0 +1,85 @@ +// swad_rubric_type.h: definition of types for rubrics + +#ifndef _SWAD_RUB_TYP +#define _SWAD_RUB_TYP +/* + SWAD (Shared Workspace At a Distance), + is a web platform developed at the University of Granada (Spain), + and used to support university teaching. + + This file is part of SWAD core. + Copyright (C) 1999-2023 Antonio Cañas Vargas + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General 3 License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*****************************************************************************/ +/********************************* Headers ***********************************/ +/*****************************************************************************/ + +#include // For boolean type + +#include "swad_date.h" +#include "swad_hierarchy_level.h" +#include "swad_string.h" + +/*****************************************************************************/ +/************************** Public types and constants ***********************/ +/*****************************************************************************/ + +#define Rub_MAX_CHARS_TITLE (128 - 1) // 127 +#define Rub_MAX_BYTES_TITLE ((Rub_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 + +#define RubCri_MAX_CHARS_TITLE (128 - 1) // 127 +#define RubCri_MAX_BYTES_TITLE ((RubCri_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 + +#define RubCri_NUM_VALUES 2 +typedef enum + { + RubCri_MIN = 0, + RubCri_MAX = 1, + } RubCri_ValueRange_t; + +struct Rub_Rubric + { + long RubCod; // Rubric code + long CrsCod; // Course code + long UsrCod; // Author code + char Title[Rub_MAX_BYTES_TITLE + 1]; + unsigned NumCriteria; // Number of criteria in the rubric + }; + +struct Rub_Rubrics + { + bool LstIsRead; // Is the list already read from database... + // ...or it needs to be read? + unsigned Num; // Total number of rubrics + long *Lst; // List of rubric codes + unsigned CurrentPage; + struct Rub_Rubric Rubric; // Selected/current rubric + long CriCod; // Selected/current criterion code + unsigned CriInd; // Current citerion index + long QstCod; // Current question code + }; + +struct RubCri_Criterion + { + long RubCod; // Rubric code + long CriCod; // Criterion code + unsigned CriInd; // Criterion index (position in the rubric) + double Values[RubCri_NUM_VALUES]; + char Title[RubCri_MAX_BYTES_TITLE + 1]; // Title of the criterion + }; + +#endif diff --git a/swad_survey.c b/swad_survey.c index 368194eb..f4ad8a19 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -1634,7 +1634,7 @@ void Svy_UnhideSurvey (void) /********************* Put a form to create a new survey *********************/ /*****************************************************************************/ -void Svy_RequestCreatOrEditSvy (void) +void Svy_ReqCreatOrEditSvy (void) { extern const char *Hlp_ANALYTICS_Surveys_new_survey; extern const char *Hlp_ANALYTICS_Surveys_edit_survey; @@ -2093,7 +2093,7 @@ void Svy_ReceiveFormSurvey (void) Grp_FreeListCodSelectedGrps (); } else - Svy_RequestCreatOrEditSvy (); + Svy_ReqCreatOrEditSvy (); /***** Notify by email about the new survey *****/ if (NewSvy.Scope == HieLvl_CRS) // Notify only the surveys for a course, not for a degree or global @@ -2248,7 +2248,7 @@ void Svy_RemoveSurveys (HieLvl_Level_t Scope,long Cod) /*********** Put a form to edit/create a question in survey *****************/ /*****************************************************************************/ -void Svy_RequestEditQuestion (void) +void Svy_ReqEditQuestion (void) { struct Svy_Surveys Surveys; struct Svy_Question SvyQst; @@ -3104,7 +3104,7 @@ static void Svy_PutParsRemoveOneQst (void *Surveys) /********************** Request the removal of a question ********************/ /*****************************************************************************/ -void Svy_RequestRemoveQst (void) +void Svy_ReqRemQst (void) { extern const char *Txt_Do_you_really_want_to_remove_the_question_X; extern const char *Txt_Remove_question; diff --git a/swad_survey.h b/swad_survey.h index 05414d01..1f4c293e 100644 --- a/swad_survey.h +++ b/swad_survey.h @@ -93,7 +93,7 @@ void Svy_SeeAllSurveys (void); void Svy_ListAllSurveys (struct Svy_Surveys *Surveys); void Svy_SeeOneSurvey (void); void Svy_PutParSvyOrder (Dat_StartEndTime_t SelectedOrder); -void Svy_RequestCreatOrEditSvy (void); +void Svy_ReqCreatOrEditSvy (void); void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy); void Svy_GetDataOfSurveyByFolder (struct Svy_Survey *Svy); void Svy_FreeListSurveys (struct Svy_Surveys *Surveys); @@ -109,10 +109,10 @@ void Svy_UnhideSurvey (void); void Svy_ReceiveFormSurvey (void); void Svy_RemoveSurveys (HieLvl_Level_t Scope,long Cod); -void Svy_RequestEditQuestion (void); +void Svy_ReqEditQuestion (void); void Svy_ReceiveQst (void); -void Svy_RequestRemoveQst (void); +void Svy_ReqRemQst (void); void Svy_RemoveQst (void); void Svy_ReceiveSurveyAnswers (void); diff --git a/swad_test.c b/swad_test.c index b9c147bb..43dd1796 100644 --- a/swad_test.c +++ b/swad_test.c @@ -94,7 +94,7 @@ static unsigned Tst_GetParNumQsts (void); /********************* Request a self-assessment test ************************/ /*****************************************************************************/ -void Tst_RequestTest (void) +void Tst_ReqTest (void) { struct Qst_Questions Questions; diff --git a/swad_test.h b/swad_test.h index 21cb6176..e56de2b6 100644 --- a/swad_test.h +++ b/swad_test.h @@ -58,7 +58,7 @@ typedef enum /***************************** Public prototypes *****************************/ /*****************************************************************************/ -void Tst_RequestTest (void); +void Tst_ReqTest (void); void Tst_ShowNewTest (void); void Tst_ReceiveTestDraft (void); diff --git a/swad_test_print.c b/swad_test_print.c index c5234594..f12e5bc5 100644 --- a/swad_test_print.c +++ b/swad_test_print.c @@ -293,7 +293,7 @@ static void TstPrn_WriteQstAndAnsToFill (struct TstPrn_PrintedQuestion *PrintedQ /***** Number of question and answer type *****/ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); + Lay_WriteIndex (QstInd + 1,"BIG_INDEX"); Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); HTM_TD_End (); @@ -640,7 +640,7 @@ static void TstPrn_WriteQstAndAnsExam (struct Usr_Data *UsrDat, /***** Number of question and answer type *****/ HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ()); - Qst_WriteNumQst (QstInd + 1,"BIG_INDEX"); + Lay_WriteIndex (QstInd + 1,"BIG_INDEX"); if (QuestionUneditedAfterExam) Qst_WriteAnswerType (Question->Answer.Type,"DAT_SMALL"); HTM_TD_End (); diff --git a/swad_text.c b/swad_text.c index ad3adabf..7c760416 100644 --- a/swad_text.c +++ b/swad_text.c @@ -1621,6 +1621,29 @@ const char *Txt_Alphabetic_BR_code_BR_ISO_3166_1 = "Alphabetic
code
ISO 3166-1"; // Çeviri lazim! #endif +const char *Txt_Already_existed_a_criterion_in_this_rubric_with_the_title_X = // Warning: it is very important to include %s in the following sentences +#if L==1 // ca + "Ja existia un criteri en aquesta rúbrica amb el títol %s."; +#elif L==2 // de + "In dieser Rubrik existierte bereits ein Kriterium mit dem Titel %s."; +#elif L==3 // en + "Already existed a criterion in this rubric with the title %s."; +#elif L==4 // es + "Ya existía un criterio en esta rúbrica con el título %s."; +#elif L==5 // fr + "Il existe déjà un critère dans cette rubrique avec le titre %s."; +#elif L==6 // gn + "Ya existía un criterio en esta rúbrica con el título %s."; // Okoteve traducción +#elif L==7 // it + "Esiste già un criterio in questa rubrica con il titolo %s."; +#elif L==8 // pl + "Było już kryterium w tej rubryce z tytułem %s."; +#elif L==9 // pt + "Já existia um critério nesta rubrica com o título %s."; +#elif L==10 // tr + "Bu değerlendirme tablosunda %s başlıklı bir ölçüt zaten vardı."; +#endif + const char *Txt_Already_existed_a_game_with_the_title_X = // Warning: it is very important to include %s in the following sentences #if L==1 // ca "Ja existia un joc amb el títol %s."; @@ -6730,6 +6753,29 @@ const char *Txt_Create_course = "Create course"; // Çeviri lazim! #endif +const char *Txt_Create_criterion = +#if L==1 // ca + "Crear criteri"; +#elif L==2 // de + "Kriterium eingeben"; +#elif L==3 // en + "Create criterion"; +#elif L==4 // es + "Crear criterio"; +#elif L==5 // fr + "Créer critère"; +#elif L==6 // gn + "Crear criterio"; // Okoteve traducción +#elif L==7 // it + "Crear criterio"; +#elif L==8 // pl + "Utwórz kryterium"; +#elif L==9 // pt + "Criar critério"; +#elif L==10 // tr + "Ölçüt oluştur"; +#endif + const char *Txt_Create_degree = #if L==1 // ca "Crear titulació"; @@ -7417,7 +7463,7 @@ const char *Txt_Created_new_assignment_X = // Warning: it is very important to i #elif L==9 // pt "Criada nova atividade %s."; #elif L==10 // tr - "Created new assignment %s."; // Çeviri lazim! + "Yeni atama %s oluşturuldu."; #endif const char *Txt_Created_new_banner_X = // Warning: it is very important to include %s in the following sentences @@ -7440,7 +7486,7 @@ const char *Txt_Created_new_banner_X = // Warning: it is very important to inclu #elif L==9 // pt "Criado novo banner %s."; #elif L==10 // tr - "Created new banner %s."; // Çeviri lazim! + "Yeni banner %s oluşturuldu."; #endif const char *Txt_Created_new_building_X = // Warning: it is very important to include %s in the following sentences @@ -7463,7 +7509,7 @@ const char *Txt_Created_new_building_X = // Warning: it is very important to inc #elif L==9 // pt "Criado novo edifício %s."; #elif L==10 // tr - "Created new building %s."; // Çeviri lazim! + "Yeni bina %s oluşturuldu."; #endif const char *Txt_Created_new_call_for_exam = @@ -7486,7 +7532,7 @@ const char *Txt_Created_new_call_for_exam = #elif L==9 // pt "Criado nova chamada para exame."; #elif L==10 // tr - "Created new call for exam."; // Çeviri lazim! + "Sınav için yeni çağrı oluşturuldu."; #endif const char *Txt_Created_new_center_X = // Warning: it is very important to include %s in the following sentences @@ -7509,7 +7555,7 @@ const char *Txt_Created_new_center_X = // Warning: it is very important to inclu #elif L==9 // pt "Criado novo centro %s."; #elif L==10 // tr - "Created new center %s."; // Çeviri lazim! + "Yeni merkez %s oluşturuldu."; #endif const char *Txt_Created_new_country_X = // Warning: it is very important to include %s in the following sentences @@ -7532,7 +7578,7 @@ const char *Txt_Created_new_country_X = // Warning: it is very important to incl #elif L==9 // pt "Criado novo país %s."; #elif L==10 // tr - "Created new country %s."; // Çeviri lazim! + "Yeni ülke %s oluşturuldu."; #endif const char *Txt_Created_new_course_X = // Warning: it is very important to include %s in the following sentences @@ -7555,7 +7601,30 @@ const char *Txt_Created_new_course_X = // Warning: it is very important to inclu #elif L==9 // pt "Criada nova disciplina %s."; #elif L==10 // tr - "Created new course %s."; // Çeviri lazim! + "Yeni kurs %s oluşturuldu."; +#endif + +const char *Txt_Created_new_criterion_X = // Warning: it is very important to include %s in the following sentences +#if L==1 // ca + "Creat nou criteri %s."; +#elif L==2 // de + "Neues Kriterium %s eingegeben."; +#elif L==3 // en + "Created new criterion %s."; +#elif L==4 // es + "Creado nuevo criterio %s."; +#elif L==5 // fr + "Créé nouveau critère %s."; +#elif L==6 // gn + "Creado nuevo criterio %s."; // Okoteve traducción +#elif L==7 // it + "Creato nuovo criterio %s."; +#elif L==8 // pl + "Utworzono nowe kryterium %s."; +#elif L==9 // pt + "Criado novo critério %s."; +#elif L==10 // tr + "Yeni kriter %s oluşturuldu."; #endif const char *Txt_Created_new_degree_X = // Warning: it is very important to include %s in the following sentences @@ -7578,7 +7647,7 @@ const char *Txt_Created_new_degree_X = // Warning: it is very important to inclu #elif L==9 // pt "Criada novo grau %s."; #elif L==10 // tr - "Created new degree %s."; // Çeviri lazim! + "Yeni derece %s oluşturuldu."; #endif const char *Txt_Created_new_department_X = // Warning: it is very important to include %s in the following sentences @@ -7601,7 +7670,7 @@ const char *Txt_Created_new_department_X = // Warning: it is very important to i #elif L==9 // pt "Criado novo departamento %s."; #elif L==10 // tr - "Created new department %s."; // Çeviri lazim! + "Yeni departman %s oluşturuldu."; #endif const char *Txt_Created_new_email_domain_X = // Warning: it is very important to include %s in the following sentences @@ -7624,7 +7693,7 @@ const char *Txt_Created_new_email_domain_X = // Warning: it is very important to #elif L==9 // pt "Criado novo domínio de email %s."; #elif L==10 // tr - "Created new email domain %s."; // Çeviri lazim! + "Yeni e-posta etki alanı %s oluşturuldu."; #endif const char *Txt_Created_new_event_X = // Warning: it is very important to include %s in the following sentences @@ -7647,7 +7716,7 @@ const char *Txt_Created_new_event_X = // Warning: it is very important to includ #elif L==9 // pt "Criado novo evento %s."; #elif L==10 // tr - "Created new event %s."; // Çeviri lazim! + "Yeni etkinlik %s oluşturuldu."; #endif const char *Txt_Created_new_exam_X = // Warning: it is very important to include %s in the following sentences @@ -7670,7 +7739,7 @@ const char *Txt_Created_new_exam_X = // Warning: it is very important to include #elif L==9 // pt "Criado novo exame %s."; #elif L==10 // tr - "Created new exam %s."; // Çeviri lazim! + "Yeni sınav %s oluşturuldu."; #endif const char *Txt_Created_new_game_X = // Warning: it is very important to include %s in the following sentences @@ -7693,7 +7762,7 @@ const char *Txt_Created_new_game_X = // Warning: it is very important to include #elif L==9 // pt "Criado novo jogo %s."; #elif L==10 // tr - "Created new game %s."; // Çeviri lazim! + "Yeni oyun %s oluşturuldu."; #endif const char *Txt_Created_new_group_X = // Warning: it is very important to include %s in the following sentences @@ -7716,7 +7785,7 @@ const char *Txt_Created_new_group_X = // Warning: it is very important to includ #elif L==9 // pt "Criado novo grupo %s."; #elif L==10 // tr - "Created new group %s."; // Çeviri lazim! + "Yeni grup %s oluşturuldu."; #endif const char *Txt_Created_new_holiday_X = // Warning: it is very important to include %s in the following sentences @@ -7739,7 +7808,7 @@ const char *Txt_Created_new_holiday_X = // Warning: it is very important to incl #elif L==9 // pt "Criado nova féria %s."; #elif L==10 // tr - "Created new holiday %s."; // Çeviri lazim! + "Yeni tatil %s oluşturuldu."; #endif const char *Txt_Created_new_institution_X = // Warning: it is very important to include %s in the following sentences @@ -7762,7 +7831,7 @@ const char *Txt_Created_new_institution_X = // Warning: it is very important to #elif L==9 // pt "Criada nova institução %s."; #elif L==10 // tr - "Created new institution %s."; // Çeviri lazim! + "Yeni kurum %s oluşturuldu."; #endif const char *Txt_Created_new_link_X = // Warning: it is very important to include %s in the following sentences @@ -7785,7 +7854,7 @@ const char *Txt_Created_new_link_X = // Warning: it is very important to include #elif L==9 // pt "Criado nova ligação %s."; #elif L==10 // tr - "Created new link %s."; // Çeviri lazim! + "Yeni bağlantı %s oluşturuldu."; #endif const char *Txt_Created_new_place_X = // Warning: it is very important to include %s in the following sentences @@ -7808,7 +7877,7 @@ const char *Txt_Created_new_place_X = // Warning: it is very important to includ #elif L==9 // pt "Criado nova localização %s."; #elif L==10 // tr - "Created new place %s."; // Çeviri lazim! + "Yeni yer %s oluşturuldu."; #endif const char *Txt_Created_new_plugin_X = // Warning: it is very important to include %s in the following sentences @@ -7831,7 +7900,7 @@ const char *Txt_Created_new_plugin_X = // Warning: it is very important to inclu #elif L==9 // pt "Criado novo plugin %s."; #elif L==10 // tr - "Created new plugin %s."; // Çeviri lazim! + "Yeni eklenti %s oluşturuldu."; #endif const char *Txt_Created_new_project_X = // Warning: it is very important to include %s in the following sentences @@ -7854,7 +7923,7 @@ const char *Txt_Created_new_project_X = // Warning: it is very important to incl #elif L==9 // pt "Criado novo projeto %s."; #elif L==10 // tr - "Created new project %s."; // Çeviri lazim! + "Yeni proje %s oluşturuldu."; #endif const char *Txt_Created_new_record_field_X = // Warning: it is very important to include %s in the following sentences @@ -7877,7 +7946,7 @@ const char *Txt_Created_new_record_field_X = // Warning: it is very important to #elif L==9 // pt "Criado novo campo de cartão %s."; #elif L==10 // tr - "Created new record field %s."; // Çeviri lazim! + "Yeni kayıt alanı %s oluşturuldu."; #endif const char *Txt_Created_new_room_X = // Warning: it is very important to include %s in the following sentences @@ -7900,7 +7969,7 @@ const char *Txt_Created_new_room_X = // Warning: it is very important to include #elif L==9 // pt "Criada nova sala %s."; #elif L==10 // tr - "Created new room %s."; // Çeviri lazim! + "Yeni oda %s oluşturuldu."; #endif const char *Txt_Created_new_rubric_X = // Warning: it is very important to include %s in the following sentences @@ -7946,7 +8015,7 @@ const char *Txt_Created_new_set_of_questions_X = // Warning: it is very importan #elif L==9 // pt "Criado novo conjunto de perguntas %s."; #elif L==10 // tr - "Created new set of questions %s."; // Çeviri lazim! + "Yeni soru grubu %s oluşturuldu."; #endif const char *Txt_Created_new_survey_X = // Warning: it is very important to include %s in the following sentences @@ -7969,7 +8038,7 @@ const char *Txt_Created_new_survey_X = // Warning: it is very important to inclu #elif L==9 // pt "Criado novo inquérito %s."; #elif L==10 // tr - "Created new survey %s."; // Çeviri lazim! + "Yeni anket %s oluşturuldu."; #endif const char *Txt_Created_new_type_of_degree_X = // Warning: it is very important to include %s in the following sentences @@ -7992,7 +8061,7 @@ const char *Txt_Created_new_type_of_degree_X = // Warning: it is very important #elif L==9 // pt "Criado novo tipo de grau %s."; #elif L==10 // tr - "Created new type of degree %s."; // Çeviri lazim! + "Yeni tip derecesi %s oluşturuldu."; #endif const char *Txt_Created_new_type_of_group_X = // Warning: it is very important to include %s in the following sentences @@ -8015,7 +8084,7 @@ const char *Txt_Created_new_type_of_group_X = // Warning: it is very important t #elif L==9 // pt "Criado novo tipo de grupo %s."; #elif L==10 // tr - "Created new type of group %s."; // Çeviri lazim! + "Yeni tip grubu %s oluşturuldu."; #endif const char *Txt_Created_tables_in_the_database_that_did_not_exist = @@ -10225,6 +10294,29 @@ const char *Txt_Do_you_really_want_to_remove_the_assignment_X = // Warning: it i "Do you really want to remove the assignment %s?"; // Çeviri lazim! #endif +const char *Txt_Do_you_really_want_to_remove_the_criterion_X = // Warning: it is very important to include %s in the following sentences +#if L==1 // ca + "De veres voleu eliminar el criteri %s?"; +#elif L==2 // de + "Wollen Sie der Kriterium %s wirklich entfernen?"; +#elif L==3 // en + "Do you really want to remove the criterion %s?"; +#elif L==4 // es + "¿Realmente desea eliminar el criterio %s?"; +#elif L==5 // fr + "Voulez-vous vraiment supprimer le critère %s?"; +#elif L==6 // gn + "¿Realmente desea eliminar el criterio %s?"; // Okoteve traducción +#elif L==7 // it + "Vuoi realmente rimuovere il criterio %s?"; +#elif L==8 // pl + "Czy na pewno chcesz usunąć kryterium %s?"; +#elif L==9 // pt + "Você realmente deseja remover o critério %s?"; +#elif L==10 // tr + "%s kriterini gerçekten kaldırmak istiyor musunuz?"; +#endif + const char *Txt_Do_you_really_want_to_remove_the_entire_thread = #if L==1 // ca "De veres voleu eliminar tota la discusió?"; @@ -20863,6 +20955,29 @@ const char *Txt_Max_BR_students = "Max.
stud."; // Çeviri lazim! #endif +const char *Txt_Maximum = +#if L==1 // ca + "Màxim"; +#elif L==2 // de + "Maximum"; +#elif L==3 // en + "Maximum"; +#elif L==4 // es + "Máximo"; +#elif L==5 // fr + "Maximum"; +#elif L==6 // gn + "Máximo"; // Okoteve traducción +#elif L==7 // it + "Massimo"; +#elif L==8 // pl + "Maksimum"; +#elif L==9 // pt + "Máximo"; +#elif L==10 // tr + "Maksimum"; +#endif + const char *Txt_maximum = #if L==1 // ca "màxim"; @@ -20883,7 +20998,7 @@ const char *Txt_maximum = #elif L==9 // pt "máximo"; #elif L==10 // tr - "maximum"; // Çeviri lazim! + "maksimum"; #endif const char *Txt_Maximum_grade = @@ -20906,7 +21021,7 @@ const char *Txt_Maximum_grade = #elif L==9 // pt "Nota máxima"; #elif L==10 // tr - "Maximum grade"; // Çeviri lazim! + "Maksimum derece"; #endif const char *Txt_Members = // Project members @@ -23448,9 +23563,32 @@ const char *Txt_Messages_sent_from_A_COURSE = "Messages sent from"; // Çeviri lazim! #endif +const char *Txt_Minimum = +#if L==1 // ca + "Mínim"; +#elif L==2 // de + "Mindest"; +#elif L==3 // en + "Minimum"; +#elif L==4 // es + "Mínimo"; +#elif L==5 // fr + "Minimum"; +#elif L==6 // gn + "Mínimo"; // Okoteve traducción +#elif L==7 // it + "Minimo"; +#elif L==8 // pl + "Minimum"; +#elif L==9 // pt + "Mínimo"; +#elif L==10 // tr + "Asgari"; +#endif + const char *Txt_minimum = #if L==1 // ca - "mínimo"; // Necessita traducció + "mínim"; #elif L==2 // de "Mindest"; #elif L==3 // en @@ -23468,7 +23606,7 @@ const char *Txt_minimum = #elif L==9 // pt "mínimo"; #elif L==10 // tr - "minimum"; // Çeviri lazim! + "asgari"; #endif const char *Txt_Minimum_time_seconds_per_question_between_two_tests = @@ -35035,6 +35173,29 @@ const char *Txt_Remove_assignment = "Atamayı kaldır"; #endif +const char *Txt_Remove_criterion = +#if L==1 // ca + "Eliminar criteri"; +#elif L==2 // de + "Kriterium entfernen"; +#elif L==3 // en + "Remove criterion"; +#elif L==4 // es + "Eliminar criterio"; +#elif L==5 // fr + "Supprimer critère"; +#elif L==6 // gn + "Eliminar criterio"; // Okoteve traducción +#elif L==7 // it + "Rimuovere criterio"; +#elif L==8 // pl + "Usuń kryterium"; +#elif L==9 // pt + "Remover critério"; +#elif L==10 // tr + "Kriter kaldır"; +#endif + const char *Txt_Remove_event = #if L==1 // ca "Eliminar esdeveniment"; @@ -52704,7 +52865,7 @@ const char *Txt_The_session_has_expired = #elif L==10 // tr "The session has expired."; // Çeviri lazim! #endif - +/* const char *Txt_The_set_of_questions_has_been_modified = #if L==1 // ca "El conjunt de preguntes ha estat modificat."; @@ -52727,7 +52888,7 @@ const char *Txt_The_set_of_questions_has_been_modified = #elif L==10 // tr "Soru seti değiştirildi."; #endif - +*/ const char *Txt_The_size_of_the_file_exceeds_the_maximum_allowed_X = // Warning: it is very important to include %s in the following sentences #if L==1 // ca "La mida del fitxer" diff --git a/swad_timeline_comment.c b/swad_timeline_comment.c index d0b03797..60be2bf1 100644 --- a/swad_timeline_comment.c +++ b/swad_timeline_comment.c @@ -822,7 +822,7 @@ static long TmlCom_ReceiveComm (void) /**************** Request the removal of a comment in a note *****************/ /*****************************************************************************/ -void TmlCom_RequestRemComUsr (void) +void TmlCom_ReqRemComUsr (void) { struct Tml_Timeline Timeline; @@ -848,7 +848,7 @@ void TmlCom_RequestRemComUsr (void) HTM_SECTION_End (); } -void TmlCom_RequestRemComGbl (void) +void TmlCom_ReqRemComGbl (void) { struct Tml_Timeline Timeline; diff --git a/swad_timeline_comment.h b/swad_timeline_comment.h index 327b142f..e9a1c56d 100644 --- a/swad_timeline_comment.h +++ b/swad_timeline_comment.h @@ -65,8 +65,8 @@ void TmlCom_ShowHiddenCommsGbl (void); void TmlCom_ReceiveCommUsr (void); void TmlCom_ReceiveCommGbl (void); -void TmlCom_RequestRemComUsr (void); -void TmlCom_RequestRemComGbl (void); +void TmlCom_ReqRemComUsr (void); +void TmlCom_ReqRemComGbl (void); void TmlCom_RemoveComUsr (void); void TmlCom_RemoveComGbl (void); diff --git a/swad_timeline_note.c b/swad_timeline_note.c index 3ca529e9..4dd5e7f5 100644 --- a/swad_timeline_note.c +++ b/swad_timeline_note.c @@ -111,7 +111,7 @@ static void TmlNot_WriteFavShaRem (const struct Tml_Timeline *Timeline, static void TmlNot_PutFormToRemoveNote (const struct Tml_Timeline *Timeline, long NotCod); -static void TmlNot_RequestRemovalNote (struct Tml_Timeline *Timeline); +static void TmlNot_ReqRemNote (struct Tml_Timeline *Timeline); static void TmlNot_PutParsRemoveNote (void *Timeline); static void TmlNot_RemoveNote (void); static void TmlNot_RemoveNoteMediaAndDBEntries (struct TmlNot_Note *Not); @@ -963,7 +963,7 @@ void TmlNot_MarkNotesChildrenOfFolderAsUnavailable (const char *Path) /*********************** Request the removal of a note ***********************/ /*****************************************************************************/ -void TmlNot_RequestRemNoteUsr (void) +void TmlNot_ReqRemNoteUsr (void) { struct Tml_Timeline Timeline; @@ -980,7 +980,7 @@ void TmlNot_RequestRemNoteUsr (void) HTM_SECTION_Begin (Tml_TIMELINE_SECTION_ID); /***** Request the removal of note *****/ - TmlNot_RequestRemovalNote (&Timeline); + TmlNot_ReqRemNote (&Timeline); /***** Write timeline again (user) *****/ Tml_ShowTimelineUsr (&Timeline); @@ -989,7 +989,7 @@ void TmlNot_RequestRemNoteUsr (void) HTM_SECTION_End (); } -void TmlNot_RequestRemNoteGbl (void) +void TmlNot_ReqRemNoteGbl (void) { struct Tml_Timeline Timeline; @@ -997,13 +997,13 @@ void TmlNot_RequestRemNoteGbl (void) Tml_InitTimelineGbl (&Timeline); /***** Request the removal of note *****/ - TmlNot_RequestRemovalNote (&Timeline); + TmlNot_ReqRemNote (&Timeline); /***** Write timeline again (global) *****/ Tml_ShowNoteAndTimelineGbl (&Timeline); } -static void TmlNot_RequestRemovalNote (struct Tml_Timeline *Timeline) +static void TmlNot_ReqRemNote (struct Tml_Timeline *Timeline) { extern const char *Txt_Do_you_really_want_to_remove_the_following_post; struct TmlNot_Note Not; diff --git a/swad_timeline_note.h b/swad_timeline_note.h index 703799fe..ffaf6cff 100644 --- a/swad_timeline_note.h +++ b/swad_timeline_note.h @@ -106,8 +106,8 @@ void TmlNot_StoreAndPublishNoteInternal (TmlNot_Type_t NoteType,long Cod, void TmlNot_MarkNoteOneFileAsUnavailable (const char *Path); void TmlNot_MarkNotesChildrenOfFolderAsUnavailable (const char *Path); -void TmlNot_RequestRemNoteUsr (void); -void TmlNot_RequestRemNoteGbl (void); +void TmlNot_ReqRemNoteUsr (void); +void TmlNot_ReqRemNoteGbl (void); void TmlNot_RemoveNoteUsr (void); void TmlNot_RemoveNoteGbl (void);