diff --git a/swad_action.c b/swad_action.c index 7494a01d0..dc60c9cbb 100644 --- a/swad_action.c +++ b/swad_action.c @@ -75,7 +75,7 @@ extern struct Globals Gbl; /************************ Internal global variables **************************/ /*****************************************************************************/ /* -1109 actions in one CGI: +1110 actions in one CGI: 0. ActAll Any action (used for statistics) 1. ActUnk Unknown action 2. ActHom Show home menu @@ -1020,275 +1020,276 @@ Messages: 850. ActRcvNot Receive and create a new notice 851. ActHidNot Hide a notice that was active 852. ActRevNot Reveal a notice that was hidden - 853. ActRemNot Remove a notice - 854. ActSeeNewNtf Show my recent notifications (link in top heading) - 855. ActMrkNtfSee Mark all my notifications as seen - 856. ActSeeForCrsUsr Show top level of forum of users of the course - 857. ActSeeForCrsTch Show top level of forum of teachers of the course - 858. ActSeeForDegUsr Show top level of forum of users of the degree - 859. ActSeeForDegTch Show top level of forum of teachers of the degree - 860. ActSeeForCtrUsr Show top level of forum of users of the centre - 861. ActSeeForCtrTch Show top level of forum of teachers of the centre - 862. ActSeeForInsUsr Show top level of forum of users of the institution - 863. ActSeeForInsTch Show top level of forum of teachers of the institution - 864. ActSeeForGenUsr Show top level of forum of users general - 865. ActSeeForGenTch Show top level of forum of teachers general - 866. ActSeeForSWAUsr Show top level of forum of users of the platform - 867. ActSeeForSWATch Show top level of forum of teachers of the platform - 868. ActSeePstForCrsUsr Show the messages of a thread of the forum of users of the course - 869. ActSeePstForCrsTch Show the messages of a thread of the forum of teachers of the course - 870. ActSeePstForDegUsr Show the messages of a thread of the forum of users of the degree - 871. ActSeePstForDegTch Show the messages of a thread of the forum of teachers of the degree - 872. ActSeePstForCtrUsr Show the messages of a thread of the forum of users of the centre - 873. ActSeePstForCtrTch Show the messages of a thread of the forum of teachers of the centre - 874. ActSeePstForInsUsr Show the messages of a thread of the forum of users of the institution - 875. ActSeePstForInsTch Show the messages of a thread of the forum of teachers of the institution - 876. ActSeePstForGenUsr Show the messages of a thread of the forum of users general - 877. ActSeePstForGenTch Show the messages of a thread of the forum of teachers general - 878. ActSeePstForSWAUsr Show the messages of a thread of the forum of users of the platform - 879. ActSeePstForSWATch Show the messages of a thread of the forum of teachers of the platform - 880. ActRcvThrForCrsUsr Receive the first message of a new thread of forum of users of the course - 881. ActRcvThrForCrsTch Receive the first message of a new thread of forum of teachers of the course - 882. ActRcvThrForDegUsr Receive the first message of a new thread of forum of users of the degree - 883. ActRcvThrForDegTch Receive the first message of a new thread of forum of teachers of the degree - 884. ActRcvThrForCtrUsr Receive the first message of a new thread of forum of users of centre - 885. ActRcvThrForCtrTch Receive the first message of a new thread of forum of teachers of centre - 886. ActRcvThrForInsUsr Receive the first message of a new thread of forum of users of the institution - 887. ActRcvThrForInsTch Receive the first message of a new thread of forum of teachers of the institution - 888. ActRcvThrForGenUsr Receive the first message of a new thread of forum of users general - 889. ActRcvThrForGenTch Receive the first message of a new thread of forum of teachers general - 890. ActRcvThrForSWAUsr Receive the first message of a new thread of forum of users of the platform - 891. ActRcvThrForSWATch Receive the first message of a new thread of forum of teachers of the platform - 892. ActRcvRepForCrsUsr Receive a message of answer in a thread existente in the forum of users of the course - 893. ActRcvRepForCrsTch Receive a message of answer in a thread existente in the forum of teachers of the course - 894. ActRcvRepForDegUsr Receive a message of answer in a thread existente in the forum of users of the degree - 895. ActRcvRepForDegTch Receive a message of answer in a thread existente in the forum of teachers of the degree - 896. ActRcvRepForCtrUsr Receive a message of answer in a thread existente in the forum of users of centre - 897. ActRcvRepForCtrTch Receive a message of answer in a thread existente in the forum of teachers of centre - 898. ActRcvRepForInsUsr Receive a message of answer in a thread existente in the forum of users of the institution - 899. ActRcvRepForInsTch Receive a message of answer in a thread existente in the forum of teachers of the institution - 900. ActRcvRepForGenUsr Receive a message of answer in a thread existente in the forum of users general - 901. ActRcvRepForGenTch Receive a message of answer in a thread existente in the forum of teachers general - 902. ActRcvRepForSWAUsr Receive a message of answer in a thread existente in the forum of users of the platform - 903. ActRcvRepForSWATch Receive a message of answer in a thread existente in the forum of teachers of the platform - 904. ActReqDelThrCrsUsr Request the removal of a thread of forum of users of the course - 905. ActReqDelThrCrsTch Request the removal of a thread of forum of teachers of the course - 906. ActReqDelThrDegUsr Request the removal of a thread of forum of users of the degree - 907. ActReqDelThrDegTch Request the removal of a thread of forum of teachers of the degree - 908. ActReqDelThrCtrUsr Request the removal of a thread of forum of users of centre - 909. ActReqDelThrCtrTch Request the removal of a thread of forum of teachers of centre - 910. ActReqDelThrInsUsr Request the removal of a thread of forum of users of the institution - 911. ActReqDelThrInsTch Request the removal of a thread of forum of teachers of the institution - 912. ActReqDelThrGenUsr Request the removal of a thread of forum of users general - 913. ActReqDelThrGenTch Request the removal of a thread of forum of teachers general - 914. ActReqDelThrSWAUsr Request the removal of a thread of forum of users of the platform - 915. ActReqDelThrSWATch Request the removal of a thread of forum of teachers of the platform - 916. ActDelThrForCrsUsr Remove a thread of forum of users of the course - 917. ActDelThrForCrsTch Remove a thread of forum of teachers of the course - 918. ActDelThrForDegUsr Remove a thread of forum of users of the degree - 919. ActDelThrForDegTch Remove a thread of forum of teachers of the degree - 920. ActDelThrForCtrUsr Remove a thread of forum of users of centre - 921. ActDelThrForCtrTch Remove a thread of forum of teachers of centre - 922. ActDelThrForInsUsr Remove a thread of forum of users of the institution - 923. ActDelThrForInsTch Remove a thread of forum of teachers of the institution - 924. ActDelThrForGenUsr Remove a thread of forum of users general - 925. ActDelThrForGenTch Remove a thread of forum of teachers general - 926. ActDelThrForSWAUsr Remove a thread of forum of users of the platform - 927. ActDelThrForSWATch Remove a thread of forum of teachers of the platform - 928. ActCutThrForCrsUsr Cut a thread of forum of users of the course - 929. ActCutThrForCrsTch Cut a thread of forum of teachers of the course - 930. ActCutThrForDegUsr Cut a thread of forum of users of the degree - 931. ActCutThrForDegTch Cut a thread of forum of teachers of the degree - 932. ActCutThrForCtrUsr Cut a thread of forum of users of centre - 933. ActCutThrForCtrTch Cut a thread of forum of teachers of centre - 934. ActCutThrForInsUsr Cut a thread of forum of users of the institution - 935. ActCutThrForInsTch Cut a thread of forum of teachers of the institution - 936. ActCutThrForGenUsr Cut a thread of forum of users general - 937. ActCutThrForGenTch Cut a thread of forum of teachers general - 938. ActCutThrForSWAUsr Cut a thread of forum of users of the platform - 939. ActCutThrForSWATch Cut a thread of forum of teachers of the platform - 940. ActPasThrForCrsUsr Paste a thread of forum of users of the course - 941. ActPasThrForCrsTch Paste a thread of forum of teachers of the course - 942. ActPasThrForDegUsr Paste a thread of forum of users of the degree - 943. ActPasThrForDegTch Paste a thread of forum of teachers of the degree - 944. ActPasThrForCtrUsr Paste a thread of forum of users of centre - 945. ActPasThrForCtrTch Paste a thread of forum of teachers of centre - 946. ActPasThrForInsUsr Paste a thread of forum of users of the institution - 947. ActPasThrForInsTch Paste a thread of forum of teachers of the institution - 948. ActPasThrForGenUsr Paste a thread of forum of users general - 949. ActPasThrForGenTch Paste a thread of forum of teachers general - 950. ActPasThrForSWAUsr Paste a thread of forum of users of the platform - 951. ActPasThrForSWATch Paste a thread of forum of teachers of the platform - 952. ActDelPstForCrsUsr Remove a message of forum of users of the course - 953. ActDelPstForCrsTch Remove a message of forum of teachers of the course - 954. ActDelPstForDegUsr Remove a message of forum of users of the degree - 955. ActDelPstForDegTch Remove a message of forum of teachers of the degree - 956. ActDelPstForCtrUsr Remove a message of forum of users of centre - 957. ActDelPstForCtrTch Remove a message of forum of teachers of centre - 958. ActDelPstForInsUsr Remove a message of forum of users of the institution - 959. ActDelPstForInsTch Remove a message of forum of teachers of the institution - 960. ActDelPstForGenUsr Remove a message of forum of users general - 961. ActDelPstForGenTch Remove a message of forum of teachers general - 962. ActDelPstForSWAUsr Remove a message of forum of users of the platform - 963. ActDelPstForSWATch Remove a message of forum of teachers of the platform - 964. ActEnbPstForCrsUsr Enable a message of forum of users of the course - 965. ActEnbPstForCrsTch Enable a message of forum of teachers of the course - 966. ActEnbPstForDegUsr Enable a message of forum of users of the degree - 967. ActEnbPstForDegTch Enable a message of forum of teachers of the degree - 968. ActEnbPstForCtrUsr Enable a message of forum of users of centre - 969. ActEnbPstForCtrTch Enable a message of forum of teachers of centre - 970. ActEnbPstForInsUsr Enable a message of forum of users of the institution - 971. ActEnbPstForInsTch Enable a message of forum of teachers of the institution - 972. ActEnbPstForGenUsr Enable a message of forum of users general - 973. ActEnbPstForGenTch Enable a message of forum of teachers general - 974. ActEnbPstForSWAUsr Enable a message of forum of users of the platform - 975. ActEnbPstForSWATch Enable a message of forum of teachers of the platform - 976. ActDisPstForCrsUsr Disable a message of forum of users of the course - 977. ActDisPstForCrsTch Disable a message of forum of teachers of the course - 978. ActDisPstForDegUsr Disable a message of forum of users of the degree - 979. ActDisPstForDegTch Disable a message of forum of teachers of the degree - 980. ActDisPstForCtrUsr Disable a message of forum of users of centre - 981. ActDisPstForCtrTch Disable a message of forum of teachers of centre - 982. ActDisPstForInsUsr Disable a message of forum of users of the institution - 983. ActDisPstForInsTch Disable a message of forum of teachers of the institution - 984. ActDisPstForGenUsr Disable a message of forum of users general - 985. ActDisPstForGenTch Disable a message of forum of teachers general - 986. ActDisPstForSWAUsr Disable a message of forum of users of the platform - 987. ActDisPstForSWATch Disable a message of forum of teachers of the platform - 988. ActRcvMsgUsr Sent/Receive a message of a user - 989. ActReqDelAllSntMsg Request the removal of todos the messages sent to other users - 990. ActReqDelAllRcvMsg Request the removal of todos the messages received from other users - 991. ActDelAllSntMsg Remove todos the messages sent to other users - 992. ActDelAllRcvMsg Remove todos the messages received from other users - 993. ActDelSntMsg Remove a message sent to other users - 994. ActDelRcvMsg Remove a message received from other user - 995. ActExpSntMsg See (expand) sent message - 996. ActExpRcvMsg See (expand) received message - 997. ActConSntMsg Hide (contract) sent message - 998. ActConRcvMsg Hide (contract) received message - 999. ActLstBanUsr List banned users - 1000. ActBanUsrMsg Ban the sender of a message when showing received messages - 1001. ActUnbUsrMsg Unban the sender of a message when showing received messages - 1002. ActUnbUsrLst Unban a user when listing banned users - 1003. ActCht Enter in a chat room to chat + 853. ActReqRemNot Request removal of a notice + 854. ActRemNot Remove a notice + 855. ActSeeNewNtf Show my recent notifications (link in top heading) + 856. ActMrkNtfSee Mark all my notifications as seen + 857. ActSeeForCrsUsr Show top level of forum of users of the course + 858. ActSeeForCrsTch Show top level of forum of teachers of the course + 859. ActSeeForDegUsr Show top level of forum of users of the degree + 860. ActSeeForDegTch Show top level of forum of teachers of the degree + 861. ActSeeForCtrUsr Show top level of forum of users of the centre + 862. ActSeeForCtrTch Show top level of forum of teachers of the centre + 863. ActSeeForInsUsr Show top level of forum of users of the institution + 864. ActSeeForInsTch Show top level of forum of teachers of the institution + 865. ActSeeForGenUsr Show top level of forum of users general + 866. ActSeeForGenTch Show top level of forum of teachers general + 867. ActSeeForSWAUsr Show top level of forum of users of the platform + 868. ActSeeForSWATch Show top level of forum of teachers of the platform + 869. ActSeePstForCrsUsr Show the messages of a thread of the forum of users of the course + 870. ActSeePstForCrsTch Show the messages of a thread of the forum of teachers of the course + 871. ActSeePstForDegUsr Show the messages of a thread of the forum of users of the degree + 872. ActSeePstForDegTch Show the messages of a thread of the forum of teachers of the degree + 873. ActSeePstForCtrUsr Show the messages of a thread of the forum of users of the centre + 874. ActSeePstForCtrTch Show the messages of a thread of the forum of teachers of the centre + 875. ActSeePstForInsUsr Show the messages of a thread of the forum of users of the institution + 876. ActSeePstForInsTch Show the messages of a thread of the forum of teachers of the institution + 877. ActSeePstForGenUsr Show the messages of a thread of the forum of users general + 878. ActSeePstForGenTch Show the messages of a thread of the forum of teachers general + 879. ActSeePstForSWAUsr Show the messages of a thread of the forum of users of the platform + 880. ActSeePstForSWATch Show the messages of a thread of the forum of teachers of the platform + 881. ActRcvThrForCrsUsr Receive the first message of a new thread of forum of users of the course + 882. ActRcvThrForCrsTch Receive the first message of a new thread of forum of teachers of the course + 883. ActRcvThrForDegUsr Receive the first message of a new thread of forum of users of the degree + 884. ActRcvThrForDegTch Receive the first message of a new thread of forum of teachers of the degree + 885. ActRcvThrForCtrUsr Receive the first message of a new thread of forum of users of centre + 886. ActRcvThrForCtrTch Receive the first message of a new thread of forum of teachers of centre + 887. ActRcvThrForInsUsr Receive the first message of a new thread of forum of users of the institution + 888. ActRcvThrForInsTch Receive the first message of a new thread of forum of teachers of the institution + 889. ActRcvThrForGenUsr Receive the first message of a new thread of forum of users general + 890. ActRcvThrForGenTch Receive the first message of a new thread of forum of teachers general + 891. ActRcvThrForSWAUsr Receive the first message of a new thread of forum of users of the platform + 892. ActRcvThrForSWATch Receive the first message of a new thread of forum of teachers of the platform + 893. ActRcvRepForCrsUsr Receive a message of answer in a thread existente in the forum of users of the course + 894. ActRcvRepForCrsTch Receive a message of answer in a thread existente in the forum of teachers of the course + 895. ActRcvRepForDegUsr Receive a message of answer in a thread existente in the forum of users of the degree + 896. ActRcvRepForDegTch Receive a message of answer in a thread existente in the forum of teachers of the degree + 897. ActRcvRepForCtrUsr Receive a message of answer in a thread existente in the forum of users of centre + 898. ActRcvRepForCtrTch Receive a message of answer in a thread existente in the forum of teachers of centre + 899. ActRcvRepForInsUsr Receive a message of answer in a thread existente in the forum of users of the institution + 900. ActRcvRepForInsTch Receive a message of answer in a thread existente in the forum of teachers of the institution + 901. ActRcvRepForGenUsr Receive a message of answer in a thread existente in the forum of users general + 902. ActRcvRepForGenTch Receive a message of answer in a thread existente in the forum of teachers general + 903. ActRcvRepForSWAUsr Receive a message of answer in a thread existente in the forum of users of the platform + 904. ActRcvRepForSWATch Receive a message of answer in a thread existente in the forum of teachers of the platform + 905. ActReqDelThrCrsUsr Request the removal of a thread of forum of users of the course + 906. ActReqDelThrCrsTch Request the removal of a thread of forum of teachers of the course + 907. ActReqDelThrDegUsr Request the removal of a thread of forum of users of the degree + 908. ActReqDelThrDegTch Request the removal of a thread of forum of teachers of the degree + 909. ActReqDelThrCtrUsr Request the removal of a thread of forum of users of centre + 910. ActReqDelThrCtrTch Request the removal of a thread of forum of teachers of centre + 911. ActReqDelThrInsUsr Request the removal of a thread of forum of users of the institution + 912. ActReqDelThrInsTch Request the removal of a thread of forum of teachers of the institution + 913. ActReqDelThrGenUsr Request the removal of a thread of forum of users general + 914. ActReqDelThrGenTch Request the removal of a thread of forum of teachers general + 915. ActReqDelThrSWAUsr Request the removal of a thread of forum of users of the platform + 916. ActReqDelThrSWATch Request the removal of a thread of forum of teachers of the platform + 917. ActDelThrForCrsUsr Remove a thread of forum of users of the course + 918. ActDelThrForCrsTch Remove a thread of forum of teachers of the course + 919. ActDelThrForDegUsr Remove a thread of forum of users of the degree + 920. ActDelThrForDegTch Remove a thread of forum of teachers of the degree + 921. ActDelThrForCtrUsr Remove a thread of forum of users of centre + 922. ActDelThrForCtrTch Remove a thread of forum of teachers of centre + 923. ActDelThrForInsUsr Remove a thread of forum of users of the institution + 924. ActDelThrForInsTch Remove a thread of forum of teachers of the institution + 925. ActDelThrForGenUsr Remove a thread of forum of users general + 926. ActDelThrForGenTch Remove a thread of forum of teachers general + 927. ActDelThrForSWAUsr Remove a thread of forum of users of the platform + 928. ActDelThrForSWATch Remove a thread of forum of teachers of the platform + 929. ActCutThrForCrsUsr Cut a thread of forum of users of the course + 930. ActCutThrForCrsTch Cut a thread of forum of teachers of the course + 931. ActCutThrForDegUsr Cut a thread of forum of users of the degree + 932. ActCutThrForDegTch Cut a thread of forum of teachers of the degree + 933. ActCutThrForCtrUsr Cut a thread of forum of users of centre + 934. ActCutThrForCtrTch Cut a thread of forum of teachers of centre + 935. ActCutThrForInsUsr Cut a thread of forum of users of the institution + 936. ActCutThrForInsTch Cut a thread of forum of teachers of the institution + 937. ActCutThrForGenUsr Cut a thread of forum of users general + 938. ActCutThrForGenTch Cut a thread of forum of teachers general + 939. ActCutThrForSWAUsr Cut a thread of forum of users of the platform + 940. ActCutThrForSWATch Cut a thread of forum of teachers of the platform + 941. ActPasThrForCrsUsr Paste a thread of forum of users of the course + 942. ActPasThrForCrsTch Paste a thread of forum of teachers of the course + 943. ActPasThrForDegUsr Paste a thread of forum of users of the degree + 944. ActPasThrForDegTch Paste a thread of forum of teachers of the degree + 945. ActPasThrForCtrUsr Paste a thread of forum of users of centre + 946. ActPasThrForCtrTch Paste a thread of forum of teachers of centre + 947. ActPasThrForInsUsr Paste a thread of forum of users of the institution + 948. ActPasThrForInsTch Paste a thread of forum of teachers of the institution + 949. ActPasThrForGenUsr Paste a thread of forum of users general + 950. ActPasThrForGenTch Paste a thread of forum of teachers general + 951. ActPasThrForSWAUsr Paste a thread of forum of users of the platform + 952. ActPasThrForSWATch Paste a thread of forum of teachers of the platform + 953. ActDelPstForCrsUsr Remove a message of forum of users of the course + 954. ActDelPstForCrsTch Remove a message of forum of teachers of the course + 955. ActDelPstForDegUsr Remove a message of forum of users of the degree + 956. ActDelPstForDegTch Remove a message of forum of teachers of the degree + 957. ActDelPstForCtrUsr Remove a message of forum of users of centre + 958. ActDelPstForCtrTch Remove a message of forum of teachers of centre + 959. ActDelPstForInsUsr Remove a message of forum of users of the institution + 960. ActDelPstForInsTch Remove a message of forum of teachers of the institution + 961. ActDelPstForGenUsr Remove a message of forum of users general + 962. ActDelPstForGenTch Remove a message of forum of teachers general + 963. ActDelPstForSWAUsr Remove a message of forum of users of the platform + 964. ActDelPstForSWATch Remove a message of forum of teachers of the platform + 965. ActEnbPstForCrsUsr Enable a message of forum of users of the course + 966. ActEnbPstForCrsTch Enable a message of forum of teachers of the course + 967. ActEnbPstForDegUsr Enable a message of forum of users of the degree + 968. ActEnbPstForDegTch Enable a message of forum of teachers of the degree + 969. ActEnbPstForCtrUsr Enable a message of forum of users of centre + 970. ActEnbPstForCtrTch Enable a message of forum of teachers of centre + 971. ActEnbPstForInsUsr Enable a message of forum of users of the institution + 972. ActEnbPstForInsTch Enable a message of forum of teachers of the institution + 973. ActEnbPstForGenUsr Enable a message of forum of users general + 974. ActEnbPstForGenTch Enable a message of forum of teachers general + 975. ActEnbPstForSWAUsr Enable a message of forum of users of the platform + 976. ActEnbPstForSWATch Enable a message of forum of teachers of the platform + 977. ActDisPstForCrsUsr Disable a message of forum of users of the course + 978. ActDisPstForCrsTch Disable a message of forum of teachers of the course + 979. ActDisPstForDegUsr Disable a message of forum of users of the degree + 980. ActDisPstForDegTch Disable a message of forum of teachers of the degree + 981. ActDisPstForCtrUsr Disable a message of forum of users of centre + 982. ActDisPstForCtrTch Disable a message of forum of teachers of centre + 983. ActDisPstForInsUsr Disable a message of forum of users of the institution + 984. ActDisPstForInsTch Disable a message of forum of teachers of the institution + 985. ActDisPstForGenUsr Disable a message of forum of users general + 986. ActDisPstForGenTch Disable a message of forum of teachers general + 987. ActDisPstForSWAUsr Disable a message of forum of users of the platform + 988. ActDisPstForSWATch Disable a message of forum of teachers of the platform + 989. ActRcvMsgUsr Sent/Receive a message of a user + 990. ActReqDelAllSntMsg Request the removal of todos the messages sent to other users + 991. ActReqDelAllRcvMsg Request the removal of todos the messages received from other users + 992. ActDelAllSntMsg Remove todos the messages sent to other users + 993. ActDelAllRcvMsg Remove todos the messages received from other users + 994. ActDelSntMsg Remove a message sent to other users + 995. ActDelRcvMsg Remove a message received from other user + 996. ActExpSntMsg See (expand) sent message + 997. ActExpRcvMsg See (expand) received message + 998. ActConSntMsg Hide (contract) sent message + 999. ActConRcvMsg Hide (contract) received message + 1000. ActLstBanUsr List banned users + 1001. ActBanUsrMsg Ban the sender of a message when showing received messages + 1002. ActUnbUsrMsg Unban the sender of a message when showing received messages + 1003. ActUnbUsrLst Unban a user when listing banned users + 1004. ActCht Enter in a chat room to chat Statistics: - 1004. ActSeeAllSvy List all surveys in pages - 1005. ActReqUseGbl Request showing use of the platform - 1006. ActSeePhoDeg Show a class photo with the average photos of the students of each degree - 1007. ActReqStaCrs Request statistics of courses - 1008. ActReqAccGbl Request query of clicks to the complete platform + 1005. ActSeeAllSvy List all surveys in pages + 1006. ActReqUseGbl Request showing use of the platform + 1007. ActSeePhoDeg Show a class photo with the average photos of the students of each degree + 1008. ActReqStaCrs Request statistics of courses + 1009. ActReqAccGbl Request query of clicks to the complete platform - 1009. ActSeeOneSvy Show one survey - 1010. ActAnsSvy Answer a survey - 1011. ActFrmNewSvy Form to create a new survey - 1012. ActEdiOneSvy Edit one survey - 1013. ActNewSvy Create new survey - 1014. ActChgSvy Modify data of an existing survey - 1015. ActReqRemSvy Request the removal of a survey - 1016. ActRemSvy Remove survey - 1017. ActReqRstSvy Request the reset of answers of a survey - 1018. ActRstSvy Reset answers of survey - 1019. ActHidSvy Hide survey - 1020. ActShoSvy Show survey - 1021. ActEdiOneSvyQst Edit a new question for a survey - 1022. ActRcvSvyQst Receive a question of a survey - 1023. ActRemSvyQst Remove a question of a survey - 1024. ActSeeUseGbl Show use of the platform - 1025. ActPrnPhoDeg Show vista of impresión of the class photo with the average photos of the students of each degree. - 1026. ActCalPhoDeg Compute the average photos of the students of each degree - 1027. ActSeeAccGbl Query clicks to the complete platform - 1028. ActReqAccCrs Request query of clicks in the course - 1029. ActSeeAccCrs Query clicks to current course - 1030. ActSeeAllStaCrs Show statistics of courses + 1010. ActSeeOneSvy Show one survey + 1011. ActAnsSvy Answer a survey + 1012. ActFrmNewSvy Form to create a new survey + 1013. ActEdiOneSvy Edit one survey + 1014. ActNewSvy Create new survey + 1015. ActChgSvy Modify data of an existing survey + 1016. ActReqRemSvy Request the removal of a survey + 1017. ActRemSvy Remove survey + 1018. ActReqRstSvy Request the reset of answers of a survey + 1019. ActRstSvy Reset answers of survey + 1020. ActHidSvy Hide survey + 1021. ActShoSvy Show survey + 1022. ActEdiOneSvyQst Edit a new question for a survey + 1023. ActRcvSvyQst Receive a question of a survey + 1024. ActRemSvyQst Remove a question of a survey + 1025. ActSeeUseGbl Show use of the platform + 1026. ActPrnPhoDeg Show vista of impresión of the class photo with the average photos of the students of each degree. + 1027. ActCalPhoDeg Compute the average photos of the students of each degree + 1028. ActSeeAccGbl Query clicks to the complete platform + 1029. ActReqAccCrs Request query of clicks in the course + 1030. ActSeeAccCrs Query clicks to current course + 1031. ActSeeAllStaCrs Show statistics of courses Profile: - 1031. ActFrmLogIn Show form to log in - 1032. ActMyCrs Select one of my courses - 1033. ActSeeMyTimTbl Show the timetable of all courses of the logged user - 1034. ActFrmUsrAcc Show form to the creation or change of user's account - 1035. ActReqEdiRecCom Request the edition of the record with the personal data of the user - 1036. ActEdiPrf Show forms to edit preferences - 1037. ActAdmBrf Show the briefcase of private archives - 1038. ActMFUAct Show most frequently used actions + 1032. ActFrmLogIn Show form to log in + 1033. ActMyCrs Select one of my courses + 1034. ActSeeMyTimTbl Show the timetable of all courses of the logged user + 1035. ActFrmUsrAcc Show form to the creation or change of user's account + 1036. ActReqEdiRecCom Request the edition of the record with the personal data of the user + 1037. ActEdiPrf Show forms to edit preferences + 1038. ActAdmBrf Show the briefcase of private archives + 1039. ActMFUAct Show most frequently used actions - 1039. ActAutUsrInt Authentify user internally (directly from the platform) - 1040. ActAutUsrExt Authentify user externally (remotely from an external site) - 1041. ActAutUsrChgLan Change language to my language just after authentication - 1042. ActLogOut Close session - 1043. ActAnnSee Mark announcement as seen + 1040. ActAutUsrInt Authentify user internally (directly from the platform) + 1041. ActAutUsrExt Authentify user externally (remotely from an external site) + 1042. ActAutUsrChgLan Change language to my language just after authentication + 1043. ActLogOut Close session + 1044. ActAnnSee Mark announcement as seen - 1044. ActReqSndNewPwd Show form to send a new password via e-mail - 1045. ActSndNewPwd Send a new password via e-mail - 1046. ActChgMyRol Change type of logged user + 1045. ActReqSndNewPwd Show form to send a new password via e-mail + 1046. ActSndNewPwd Send a new password via e-mail + 1047. ActChgMyRol Change type of logged user - 1047. ActCreUsrAcc Create new user account - 1048. ActRemIDMe Remove one of my user's IDs - 1049. ActNewIDMe Create a new user's ID for me - 1050. ActRemOldNic Remove one of my old nicknames - 1051. ActChgNic Change my nickname - 1052. ActRemOldMai Remove one of my old e-mails - 1053. ActChgMai Change my e-mail address - 1054. ActCnfMai Confirm e-mail address - 1055. ActFrmChgMyPwd Show form to the change of the password - 1056. ActChgPwd Change the password - 1057. ActReqRemMyAcc Request the removal of my account - 1058. ActRemMyAcc Remove my account + 1048. ActCreUsrAcc Create new user account + 1049. ActRemIDMe Remove one of my user's IDs + 1050. ActNewIDMe Create a new user's ID for me + 1051. ActRemOldNic Remove one of my old nicknames + 1052. ActChgNic Change my nickname + 1053. ActRemOldMai Remove one of my old e-mails + 1054. ActChgMai Change my e-mail address + 1055. ActCnfMai Confirm e-mail address + 1056. ActFrmChgMyPwd Show form to the change of the password + 1057. ActChgPwd Change the password + 1058. ActReqRemMyAcc Request the removal of my account + 1059. ActRemMyAcc Remove my account - 1059. ActChgMyData Update my personal data + 1060. ActChgMyData Update my personal data - 1060. ActReqMyPho Show form to send my photo - 1061. ActDetMyPho Receive my photo and detect faces on it - 1062. ActUpdMyPho Update my photo - 1063. ActRemMyPho Remove my photo + 1061. ActReqMyPho Show form to send my photo + 1062. ActDetMyPho Receive my photo and detect faces on it + 1063. ActUpdMyPho Update my photo + 1064. ActRemMyPho Remove my photo - 1064. ActEdiPri Edit my privacy - 1065. ActChgPriPho Change privacy of my photo - 1066. ActChgPriPrf Change privacy of my public profile + 1065. ActEdiPri Edit my privacy + 1066. ActChgPriPho Change privacy of my photo + 1067. ActChgPriPrf Change privacy of my public profile - 1067. ActReqEdiMyIns Request the edition of my institution, centre and department - 1068. ActChgCtyMyIns Change the country of my institution - 1069. ActChgMyIns Change my institution - 1070. ActChgMyCtr Change my centre - 1071. ActChgMyDpt Change my department - 1072. ActChgMyOff Change my office - 1073. ActChgMyOffPho Change my office phone + 1068. ActReqEdiMyIns Request the edition of my institution, centre and department + 1069. ActChgCtyMyIns Change the country of my institution + 1070. ActChgMyIns Change my institution + 1071. ActChgMyCtr Change my centre + 1072. ActChgMyDpt Change my department + 1073. ActChgMyOff Change my office + 1074. ActChgMyOffPho Change my office phone - 1074. ActReqEdiMyNet Request the edition of my social networks - 1075. ActChgMyNet Change my web and social networks + 1075. ActReqEdiMyNet Request the edition of my social networks + 1076. ActChgMyNet Change my web and social networks - 1076. ActChgLay Change layout - 1077. ActChgThe Change theme - 1078. ActReqChgLan Ask if change language - 1079. ActChgLan Change language - 1080. ActChgCol Change side columns - 1081. ActHidLftCol Hide left side column - 1082. ActHidRgtCol Hide right side column - 1083. ActShoLftCol Show left side column - 1084. ActShoRgtCol Show right side column - 1085. ActChgIco Change icon set - 1086. ActChgMnu Change menu - 1087. ActChgNtfPrf Change whether to notify by e-mail new messages - 1088. ActPrnUsrQR Show my QR code ready to print - 1089. ActPrnMyTimTbl Show the timetable listo to impresión of all my courses - 1090. ActEdiTut Edit the timetable of tutorías - 1091. ActChgTut Modify the timetable of tutorías - 1092. ActReqRemFilBrf Request removal of a file of the briefcase - 1093. ActRemFilBrf Remove a file of the briefcase - 1094. ActRemFolBrf Remove a folder empty of the briefcase - 1095. ActCopBrf Set source of copy in the briefcase - 1096. ActPasBrf Paste a folder or file in the briefcase - 1097. ActRemTreBrf Remove a folder no empty of the briefcase - 1098. ActFrmCreBrf Form to crear a folder or file in the briefcase - 1099. ActCreFolBrf Create a new folder in the briefcase - 1100. ActCreLnkBrf Create a new link in the briefcase - 1101. ActRenFolBrf Rename a folder of the briefcase - 1102. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js - 1103. ActRcvFilBrfCla Receive a file in the briefcase using the classic way - 1104. ActExpBrf Expand a folder in briefcase - 1105. ActConBrf Contract a folder in briefcase - 1106. ActZIPBrf Compress a folder in briefcase - 1107. ActReqDatBrf Ask for metadata of a file in the briefcase - 1108. ActChgDatBrf Change metadata of a file in the briefcase - 1109. ActDowBrf Download a file in the briefcase + 1077. ActChgLay Change layout + 1078. ActChgThe Change theme + 1079. ActReqChgLan Ask if change language + 1080. ActChgLan Change language + 1081. ActChgCol Change side columns + 1082. ActHidLftCol Hide left side column + 1083. ActHidRgtCol Hide right side column + 1084. ActShoLftCol Show left side column + 1085. ActShoRgtCol Show right side column + 1086. ActChgIco Change icon set + 1087. ActChgMnu Change menu + 1088. ActChgNtfPrf Change whether to notify by e-mail new messages + 1089. ActPrnUsrQR Show my QR code ready to print + 1090. ActPrnMyTimTbl Show the timetable listo to impresión of all my courses + 1091. ActEdiTut Edit the timetable of tutorías + 1092. ActChgTut Modify the timetable of tutorías + 1093. ActReqRemFilBrf Request removal of a file of the briefcase + 1094. ActRemFilBrf Remove a file of the briefcase + 1095. ActRemFolBrf Remove a folder empty of the briefcase + 1096. ActCopBrf Set source of copy in the briefcase + 1097. ActPasBrf Paste a folder or file in the briefcase + 1098. ActRemTreBrf Remove a folder no empty of the briefcase + 1099. ActFrmCreBrf Form to crear a folder or file in the briefcase + 1100. ActCreFolBrf Create a new folder in the briefcase + 1101. ActCreLnkBrf Create a new link in the briefcase + 1102. ActRenFolBrf Rename a folder of the briefcase + 1103. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js + 1104. ActRcvFilBrfCla Receive a file in the briefcase using the classic way + 1105. ActExpBrf Expand a folder in briefcase + 1106. ActConBrf Contract a folder in briefcase + 1107. ActZIPBrf Compress a folder in briefcase + 1108. ActReqDatBrf Ask for metadata of a file in the briefcase + 1109. ActChgDatBrf Change metadata of a file in the briefcase + 1110. ActDowBrf Download a file in the briefcase */ const struct Act_Menu Act_Menu[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = @@ -2456,12 +2457,13 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActRevAnn */{1471,-1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ann_RevealHiddenAnnouncement,Ann_ShowAllAnnouncements ,NULL}, /* ActRemAnn */{1236,-1,TabMsg,ActSeeAnn ,0x100,0x100,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_RemoveAnnouncement ,NULL}, - /* ActShoNot */{1164,-1,TabMsg,ActSeeNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_ShowANotice ,Not_ListNotices ,NULL}, + /* ActShoNot */{1164,-1,TabMsg,ActSeeNot ,0x1FF,0x1FF,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_GetNotToShowHighlighted ,Not_ListNotices ,NULL}, /* ActWriNot */{ 59,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_ShowFormNotice ,NULL}, /* ActRcvNot */{ 60,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_ReceiveNotice ,Not_ListNotices ,NULL}, /* ActHidNot */{ 763,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_HideActiveNotice ,Not_ListNotices ,NULL}, /* ActRevNot */{ 764,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_RevealHiddenNotice ,Not_ListNotices ,NULL}, - /* ActRemNot */{ 73,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_DeleteNotice ,Not_ListNotices ,NULL}, + /* ActReqRemNot */{1472,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Not_RequestRemNotice ,NULL}, + /* ActRemNot */{ 73,-1,TabMsg,ActSeeNot ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,Not_RemoveNotice ,Not_ListNotices ,NULL}, /* ActSeeNewNtf */{ 991,-1,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_ShowMyNotifications ,NULL}, /* ActMrkNtfSee */{1146,-1,TabMsg,ActSeeNtf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ntf_MarkAllNotifAsSeen ,NULL}, @@ -4241,6 +4243,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActChgPwdTch, // #1469 ActHidAnn, // #1470 ActRevAnn, // #1471 + ActReqRemNot, // #1472 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 4500bc314..fcff9ea98 100644 --- a/swad_action.h +++ b/swad_action.h @@ -70,9 +70,9 @@ typedef enum typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+143+170+27+79) +#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+143+171+27+79) -#define Act_MAX_ACTION_COD 1471 +#define Act_MAX_ACTION_COD 1472 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 @@ -1055,157 +1055,158 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActRcvNot (ActSeeFlr+ 17) #define ActHidNot (ActSeeFlr+ 18) #define ActRevNot (ActSeeFlr+ 19) -#define ActRemNot (ActSeeFlr+ 20) -#define ActSeeNewNtf (ActSeeFlr+ 21) -#define ActMrkNtfSee (ActSeeFlr+ 22) -#define ActSeeForCrsUsr (ActSeeFlr+ 23) -#define ActSeeForCrsTch (ActSeeFlr+ 24) -#define ActSeeForDegUsr (ActSeeFlr+ 25) -#define ActSeeForDegTch (ActSeeFlr+ 26) -#define ActSeeForCtrUsr (ActSeeFlr+ 27) -#define ActSeeForCtrTch (ActSeeFlr+ 28) -#define ActSeeForInsUsr (ActSeeFlr+ 29) -#define ActSeeForInsTch (ActSeeFlr+ 30) -#define ActSeeForGenUsr (ActSeeFlr+ 31) -#define ActSeeForGenTch (ActSeeFlr+ 32) -#define ActSeeForSWAUsr (ActSeeFlr+ 33) -#define ActSeeForSWATch (ActSeeFlr+ 34) -#define ActSeePstForCrsUsr (ActSeeFlr+ 35) -#define ActSeePstForCrsTch (ActSeeFlr+ 36) -#define ActSeePstForDegUsr (ActSeeFlr+ 37) -#define ActSeePstForDegTch (ActSeeFlr+ 38) -#define ActSeePstForCtrUsr (ActSeeFlr+ 39) -#define ActSeePstForCtrTch (ActSeeFlr+ 40) -#define ActSeePstForInsUsr (ActSeeFlr+ 41) -#define ActSeePstForInsTch (ActSeeFlr+ 42) -#define ActSeePstForGenUsr (ActSeeFlr+ 43) -#define ActSeePstForGenTch (ActSeeFlr+ 44) -#define ActSeePstForSWAUsr (ActSeeFlr+ 45) -#define ActSeePstForSWATch (ActSeeFlr+ 46) -#define ActRcvThrForCrsUsr (ActSeeFlr+ 47) -#define ActRcvThrForCrsTch (ActSeeFlr+ 48) -#define ActRcvThrForDegUsr (ActSeeFlr+ 49) -#define ActRcvThrForDegTch (ActSeeFlr+ 50) -#define ActRcvThrForCtrUsr (ActSeeFlr+ 51) -#define ActRcvThrForCtrTch (ActSeeFlr+ 52) -#define ActRcvThrForInsUsr (ActSeeFlr+ 53) -#define ActRcvThrForInsTch (ActSeeFlr+ 54) -#define ActRcvThrForGenUsr (ActSeeFlr+ 55) -#define ActRcvThrForGenTch (ActSeeFlr+ 56) -#define ActRcvThrForSWAUsr (ActSeeFlr+ 57) -#define ActRcvThrForSWATch (ActSeeFlr+ 58) -#define ActRcvRepForCrsUsr (ActSeeFlr+ 59) -#define ActRcvRepForCrsTch (ActSeeFlr+ 60) -#define ActRcvRepForDegUsr (ActSeeFlr+ 61) -#define ActRcvRepForDegTch (ActSeeFlr+ 62) -#define ActRcvRepForCtrUsr (ActSeeFlr+ 63) -#define ActRcvRepForCtrTch (ActSeeFlr+ 64) -#define ActRcvRepForInsUsr (ActSeeFlr+ 65) -#define ActRcvRepForInsTch (ActSeeFlr+ 66) -#define ActRcvRepForGenUsr (ActSeeFlr+ 67) -#define ActRcvRepForGenTch (ActSeeFlr+ 68) -#define ActRcvRepForSWAUsr (ActSeeFlr+ 69) -#define ActRcvRepForSWATch (ActSeeFlr+ 70) -#define ActReqDelThrCrsUsr (ActSeeFlr+ 71) -#define ActReqDelThrCrsTch (ActSeeFlr+ 72) -#define ActReqDelThrDegUsr (ActSeeFlr+ 73) -#define ActReqDelThrDegTch (ActSeeFlr+ 74) -#define ActReqDelThrCtrUsr (ActSeeFlr+ 75) -#define ActReqDelThrCtrTch (ActSeeFlr+ 76) -#define ActReqDelThrInsUsr (ActSeeFlr+ 77) -#define ActReqDelThrInsTch (ActSeeFlr+ 78) -#define ActReqDelThrGenUsr (ActSeeFlr+ 79) -#define ActReqDelThrGenTch (ActSeeFlr+ 80) -#define ActReqDelThrSWAUsr (ActSeeFlr+ 81) -#define ActReqDelThrSWATch (ActSeeFlr+ 82) -#define ActDelThrForCrsUsr (ActSeeFlr+ 83) -#define ActDelThrForCrsTch (ActSeeFlr+ 84) -#define ActDelThrForDegUsr (ActSeeFlr+ 85) -#define ActDelThrForDegTch (ActSeeFlr+ 86) -#define ActDelThrForCtrUsr (ActSeeFlr+ 87) -#define ActDelThrForCtrTch (ActSeeFlr+ 88) -#define ActDelThrForInsUsr (ActSeeFlr+ 89) -#define ActDelThrForInsTch (ActSeeFlr+ 90) -#define ActDelThrForGenUsr (ActSeeFlr+ 91) -#define ActDelThrForGenTch (ActSeeFlr+ 92) -#define ActDelThrForSWAUsr (ActSeeFlr+ 93) -#define ActDelThrForSWATch (ActSeeFlr+ 94) -#define ActCutThrForCrsUsr (ActSeeFlr+ 95) -#define ActCutThrForCrsTch (ActSeeFlr+ 96) -#define ActCutThrForDegUsr (ActSeeFlr+ 97) -#define ActCutThrForDegTch (ActSeeFlr+ 98) -#define ActCutThrForCtrUsr (ActSeeFlr+ 99) -#define ActCutThrForCtrTch (ActSeeFlr+100) -#define ActCutThrForInsUsr (ActSeeFlr+101) -#define ActCutThrForInsTch (ActSeeFlr+102) -#define ActCutThrForGenUsr (ActSeeFlr+103) -#define ActCutThrForGenTch (ActSeeFlr+104) -#define ActCutThrForSWAUsr (ActSeeFlr+105) -#define ActCutThrForSWATch (ActSeeFlr+106) -#define ActPasThrForCrsUsr (ActSeeFlr+107) -#define ActPasThrForCrsTch (ActSeeFlr+108) -#define ActPasThrForDegUsr (ActSeeFlr+109) -#define ActPasThrForDegTch (ActSeeFlr+110) -#define ActPasThrForCtrUsr (ActSeeFlr+111) -#define ActPasThrForCtrTch (ActSeeFlr+112) -#define ActPasThrForInsUsr (ActSeeFlr+113) -#define ActPasThrForInsTch (ActSeeFlr+114) -#define ActPasThrForGenUsr (ActSeeFlr+115) -#define ActPasThrForGenTch (ActSeeFlr+116) -#define ActPasThrForSWAUsr (ActSeeFlr+117) -#define ActPasThrForSWATch (ActSeeFlr+118) -#define ActDelPstForCrsUsr (ActSeeFlr+119) -#define ActDelPstForCrsTch (ActSeeFlr+120) -#define ActDelPstForDegUsr (ActSeeFlr+121) -#define ActDelPstForDegTch (ActSeeFlr+122) -#define ActDelPstForCtrUsr (ActSeeFlr+123) -#define ActDelPstForCtrTch (ActSeeFlr+124) -#define ActDelPstForInsUsr (ActSeeFlr+125) -#define ActDelPstForInsTch (ActSeeFlr+126) -#define ActDelPstForGenUsr (ActSeeFlr+127) -#define ActDelPstForGenTch (ActSeeFlr+128) -#define ActDelPstForSWAUsr (ActSeeFlr+129) -#define ActDelPstForSWATch (ActSeeFlr+130) -#define ActEnbPstForCrsUsr (ActSeeFlr+131) -#define ActEnbPstForCrsTch (ActSeeFlr+132) -#define ActEnbPstForDegUsr (ActSeeFlr+133) -#define ActEnbPstForDegTch (ActSeeFlr+134) -#define ActEnbPstForCtrUsr (ActSeeFlr+135) -#define ActEnbPstForCtrTch (ActSeeFlr+136) -#define ActEnbPstForInsUsr (ActSeeFlr+137) -#define ActEnbPstForInsTch (ActSeeFlr+138) -#define ActEnbPstForGenUsr (ActSeeFlr+139) -#define ActEnbPstForGenTch (ActSeeFlr+140) -#define ActEnbPstForSWAUsr (ActSeeFlr+141) -#define ActEnbPstForSWATch (ActSeeFlr+142) -#define ActDisPstForCrsUsr (ActSeeFlr+143) -#define ActDisPstForCrsTch (ActSeeFlr+144) -#define ActDisPstForDegUsr (ActSeeFlr+145) -#define ActDisPstForDegTch (ActSeeFlr+146) -#define ActDisPstForCtrUsr (ActSeeFlr+147) -#define ActDisPstForCtrTch (ActSeeFlr+148) -#define ActDisPstForInsUsr (ActSeeFlr+149) -#define ActDisPstForInsTch (ActSeeFlr+150) -#define ActDisPstForGenUsr (ActSeeFlr+151) -#define ActDisPstForGenTch (ActSeeFlr+152) -#define ActDisPstForSWAUsr (ActSeeFlr+153) -#define ActDisPstForSWATch (ActSeeFlr+154) -#define ActRcvMsgUsr (ActSeeFlr+155) -#define ActReqDelAllSntMsg (ActSeeFlr+156) -#define ActReqDelAllRcvMsg (ActSeeFlr+157) -#define ActDelAllSntMsg (ActSeeFlr+158) -#define ActDelAllRcvMsg (ActSeeFlr+159) -#define ActDelSntMsg (ActSeeFlr+160) -#define ActDelRcvMsg (ActSeeFlr+161) -#define ActExpSntMsg (ActSeeFlr+162) -#define ActExpRcvMsg (ActSeeFlr+163) -#define ActConSntMsg (ActSeeFlr+164) -#define ActConRcvMsg (ActSeeFlr+165) -#define ActLstBanUsr (ActSeeFlr+166) -#define ActBanUsrMsg (ActSeeFlr+167) -#define ActUnbUsrMsg (ActSeeFlr+168) -#define ActUnbUsrLst (ActSeeFlr+169) -#define ActCht (ActSeeFlr+170) +#define ActReqRemNot (ActSeeFlr+ 20) +#define ActRemNot (ActSeeFlr+ 21) +#define ActSeeNewNtf (ActSeeFlr+ 22) +#define ActMrkNtfSee (ActSeeFlr+ 23) +#define ActSeeForCrsUsr (ActSeeFlr+ 24) +#define ActSeeForCrsTch (ActSeeFlr+ 25) +#define ActSeeForDegUsr (ActSeeFlr+ 26) +#define ActSeeForDegTch (ActSeeFlr+ 27) +#define ActSeeForCtrUsr (ActSeeFlr+ 28) +#define ActSeeForCtrTch (ActSeeFlr+ 29) +#define ActSeeForInsUsr (ActSeeFlr+ 30) +#define ActSeeForInsTch (ActSeeFlr+ 31) +#define ActSeeForGenUsr (ActSeeFlr+ 32) +#define ActSeeForGenTch (ActSeeFlr+ 33) +#define ActSeeForSWAUsr (ActSeeFlr+ 34) +#define ActSeeForSWATch (ActSeeFlr+ 35) +#define ActSeePstForCrsUsr (ActSeeFlr+ 36) +#define ActSeePstForCrsTch (ActSeeFlr+ 37) +#define ActSeePstForDegUsr (ActSeeFlr+ 38) +#define ActSeePstForDegTch (ActSeeFlr+ 39) +#define ActSeePstForCtrUsr (ActSeeFlr+ 40) +#define ActSeePstForCtrTch (ActSeeFlr+ 41) +#define ActSeePstForInsUsr (ActSeeFlr+ 42) +#define ActSeePstForInsTch (ActSeeFlr+ 43) +#define ActSeePstForGenUsr (ActSeeFlr+ 44) +#define ActSeePstForGenTch (ActSeeFlr+ 45) +#define ActSeePstForSWAUsr (ActSeeFlr+ 46) +#define ActSeePstForSWATch (ActSeeFlr+ 47) +#define ActRcvThrForCrsUsr (ActSeeFlr+ 48) +#define ActRcvThrForCrsTch (ActSeeFlr+ 49) +#define ActRcvThrForDegUsr (ActSeeFlr+ 50) +#define ActRcvThrForDegTch (ActSeeFlr+ 51) +#define ActRcvThrForCtrUsr (ActSeeFlr+ 52) +#define ActRcvThrForCtrTch (ActSeeFlr+ 53) +#define ActRcvThrForInsUsr (ActSeeFlr+ 54) +#define ActRcvThrForInsTch (ActSeeFlr+ 55) +#define ActRcvThrForGenUsr (ActSeeFlr+ 56) +#define ActRcvThrForGenTch (ActSeeFlr+ 57) +#define ActRcvThrForSWAUsr (ActSeeFlr+ 58) +#define ActRcvThrForSWATch (ActSeeFlr+ 59) +#define ActRcvRepForCrsUsr (ActSeeFlr+ 60) +#define ActRcvRepForCrsTch (ActSeeFlr+ 61) +#define ActRcvRepForDegUsr (ActSeeFlr+ 62) +#define ActRcvRepForDegTch (ActSeeFlr+ 63) +#define ActRcvRepForCtrUsr (ActSeeFlr+ 64) +#define ActRcvRepForCtrTch (ActSeeFlr+ 65) +#define ActRcvRepForInsUsr (ActSeeFlr+ 66) +#define ActRcvRepForInsTch (ActSeeFlr+ 67) +#define ActRcvRepForGenUsr (ActSeeFlr+ 68) +#define ActRcvRepForGenTch (ActSeeFlr+ 69) +#define ActRcvRepForSWAUsr (ActSeeFlr+ 70) +#define ActRcvRepForSWATch (ActSeeFlr+ 71) +#define ActReqDelThrCrsUsr (ActSeeFlr+ 72) +#define ActReqDelThrCrsTch (ActSeeFlr+ 73) +#define ActReqDelThrDegUsr (ActSeeFlr+ 74) +#define ActReqDelThrDegTch (ActSeeFlr+ 75) +#define ActReqDelThrCtrUsr (ActSeeFlr+ 76) +#define ActReqDelThrCtrTch (ActSeeFlr+ 77) +#define ActReqDelThrInsUsr (ActSeeFlr+ 78) +#define ActReqDelThrInsTch (ActSeeFlr+ 79) +#define ActReqDelThrGenUsr (ActSeeFlr+ 80) +#define ActReqDelThrGenTch (ActSeeFlr+ 81) +#define ActReqDelThrSWAUsr (ActSeeFlr+ 82) +#define ActReqDelThrSWATch (ActSeeFlr+ 83) +#define ActDelThrForCrsUsr (ActSeeFlr+ 84) +#define ActDelThrForCrsTch (ActSeeFlr+ 85) +#define ActDelThrForDegUsr (ActSeeFlr+ 86) +#define ActDelThrForDegTch (ActSeeFlr+ 87) +#define ActDelThrForCtrUsr (ActSeeFlr+ 88) +#define ActDelThrForCtrTch (ActSeeFlr+ 89) +#define ActDelThrForInsUsr (ActSeeFlr+ 90) +#define ActDelThrForInsTch (ActSeeFlr+ 91) +#define ActDelThrForGenUsr (ActSeeFlr+ 92) +#define ActDelThrForGenTch (ActSeeFlr+ 93) +#define ActDelThrForSWAUsr (ActSeeFlr+ 94) +#define ActDelThrForSWATch (ActSeeFlr+ 95) +#define ActCutThrForCrsUsr (ActSeeFlr+ 96) +#define ActCutThrForCrsTch (ActSeeFlr+ 97) +#define ActCutThrForDegUsr (ActSeeFlr+ 98) +#define ActCutThrForDegTch (ActSeeFlr+ 99) +#define ActCutThrForCtrUsr (ActSeeFlr+100) +#define ActCutThrForCtrTch (ActSeeFlr+101) +#define ActCutThrForInsUsr (ActSeeFlr+102) +#define ActCutThrForInsTch (ActSeeFlr+103) +#define ActCutThrForGenUsr (ActSeeFlr+104) +#define ActCutThrForGenTch (ActSeeFlr+105) +#define ActCutThrForSWAUsr (ActSeeFlr+106) +#define ActCutThrForSWATch (ActSeeFlr+107) +#define ActPasThrForCrsUsr (ActSeeFlr+108) +#define ActPasThrForCrsTch (ActSeeFlr+109) +#define ActPasThrForDegUsr (ActSeeFlr+110) +#define ActPasThrForDegTch (ActSeeFlr+111) +#define ActPasThrForCtrUsr (ActSeeFlr+112) +#define ActPasThrForCtrTch (ActSeeFlr+113) +#define ActPasThrForInsUsr (ActSeeFlr+114) +#define ActPasThrForInsTch (ActSeeFlr+115) +#define ActPasThrForGenUsr (ActSeeFlr+116) +#define ActPasThrForGenTch (ActSeeFlr+117) +#define ActPasThrForSWAUsr (ActSeeFlr+118) +#define ActPasThrForSWATch (ActSeeFlr+119) +#define ActDelPstForCrsUsr (ActSeeFlr+120) +#define ActDelPstForCrsTch (ActSeeFlr+121) +#define ActDelPstForDegUsr (ActSeeFlr+122) +#define ActDelPstForDegTch (ActSeeFlr+123) +#define ActDelPstForCtrUsr (ActSeeFlr+124) +#define ActDelPstForCtrTch (ActSeeFlr+125) +#define ActDelPstForInsUsr (ActSeeFlr+126) +#define ActDelPstForInsTch (ActSeeFlr+127) +#define ActDelPstForGenUsr (ActSeeFlr+128) +#define ActDelPstForGenTch (ActSeeFlr+129) +#define ActDelPstForSWAUsr (ActSeeFlr+130) +#define ActDelPstForSWATch (ActSeeFlr+131) +#define ActEnbPstForCrsUsr (ActSeeFlr+132) +#define ActEnbPstForCrsTch (ActSeeFlr+133) +#define ActEnbPstForDegUsr (ActSeeFlr+134) +#define ActEnbPstForDegTch (ActSeeFlr+135) +#define ActEnbPstForCtrUsr (ActSeeFlr+136) +#define ActEnbPstForCtrTch (ActSeeFlr+137) +#define ActEnbPstForInsUsr (ActSeeFlr+138) +#define ActEnbPstForInsTch (ActSeeFlr+139) +#define ActEnbPstForGenUsr (ActSeeFlr+140) +#define ActEnbPstForGenTch (ActSeeFlr+141) +#define ActEnbPstForSWAUsr (ActSeeFlr+142) +#define ActEnbPstForSWATch (ActSeeFlr+143) +#define ActDisPstForCrsUsr (ActSeeFlr+144) +#define ActDisPstForCrsTch (ActSeeFlr+145) +#define ActDisPstForDegUsr (ActSeeFlr+146) +#define ActDisPstForDegTch (ActSeeFlr+147) +#define ActDisPstForCtrUsr (ActSeeFlr+148) +#define ActDisPstForCtrTch (ActSeeFlr+149) +#define ActDisPstForInsUsr (ActSeeFlr+150) +#define ActDisPstForInsTch (ActSeeFlr+151) +#define ActDisPstForGenUsr (ActSeeFlr+152) +#define ActDisPstForGenTch (ActSeeFlr+153) +#define ActDisPstForSWAUsr (ActSeeFlr+154) +#define ActDisPstForSWATch (ActSeeFlr+155) +#define ActRcvMsgUsr (ActSeeFlr+156) +#define ActReqDelAllSntMsg (ActSeeFlr+157) +#define ActReqDelAllRcvMsg (ActSeeFlr+158) +#define ActDelAllSntMsg (ActSeeFlr+159) +#define ActDelAllRcvMsg (ActSeeFlr+160) +#define ActDelSntMsg (ActSeeFlr+161) +#define ActDelRcvMsg (ActSeeFlr+162) +#define ActExpSntMsg (ActSeeFlr+163) +#define ActExpRcvMsg (ActSeeFlr+164) +#define ActConSntMsg (ActSeeFlr+165) +#define ActConRcvMsg (ActSeeFlr+166) +#define ActLstBanUsr (ActSeeFlr+167) +#define ActBanUsrMsg (ActSeeFlr+168) +#define ActUnbUsrMsg (ActSeeFlr+169) +#define ActUnbUsrLst (ActSeeFlr+170) +#define ActCht (ActSeeFlr+171) /*****************************************************************************/ /****************************** Statistics tab *******************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 440935eac..0011605fc 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -103,17 +103,20 @@ // TODO: Put headers Content-type and Content-disposition when redirecting with Location: // TODO: System admin should be able to remove/edit user's mail (when he/she detects a recipient does not exists, for example) // TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty -// TODO: Ask for notice removal /*****************************************************************************/ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 15.34.4 (2015/11/03)" +#define Log_PLATFORM_VERSION "SWAD 15.35 (2015/11/03)" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 /* + Version 15.35: Nov 03, 2015 Request confirmation on notice removal. (186944 lines) + 1 change necessary in database: +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1472','es','N','Solicitar elim. aviso'); + Version 15.34.4: Nov 03, 2015 Fixed bug in account creation, reported by Héctor García Marcos. (186881 lines) Version 15.34.3: Nov 03, 2015 Fixed bug in photo uploading, reported by Fernando Rojas Ruiz. (186879 lines) Version 15.34.2: Nov 02, 2015 Fixed bugs in date forms. (186878 lines) diff --git a/swad_layout.c b/swad_layout.c index 20ce69f75..3d68c8266 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -947,7 +947,8 @@ static void Lay_ShowLeftColumn (void) { fprintf (Gbl.F.Out,"" ""); - Not_ShowNotices (Not_LIST_BRIEF_NOTICES); + Not_ShowNotices (Not_LIST_BRIEF_NOTICES, + false); // Nobody can not edit notices here fprintf (Gbl.F.Out,"" ""); } diff --git a/swad_notice.c b/swad_notice.c index 544c73525..90be2040f 100644 --- a/swad_notice.c +++ b/swad_notice.c @@ -65,6 +65,7 @@ const unsigned Not_MaxCharsURLOnScreen[Not_NUM_TYPES_LISTING] = /***************************** Private prototypes ****************************/ /*****************************************************************************/ +static void Not_GetDataAndShowNotice (long NotCod,bool ICanEditNotices); static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, long NotCod, time_t TimeUTC, @@ -89,6 +90,7 @@ void Not_ShowFormNotice (void) extern const char *Txt_MSG_Message; extern const char *Txt_Create_notice; + /***** Help message *****/ sprintf (Gbl.Message,Txt_The_notice_you_enter_here_will_appear_as_a_yellow_note_, Gbl.CurrentCrs.Crs.FullName); Lay_ShowAlert (Lay_INFO,Gbl.Message); @@ -117,6 +119,10 @@ void Not_ShowFormNotice (void) /***** End form *****/ Act_FormEnd (); + + /***** Show all notices *****/ + Not_ShowNotices (Not_LIST_FULL_NOTICES, + true); // I can create a new notice ==> I can edit notices } /*****************************************************************************/ @@ -185,7 +191,23 @@ static void Not_UpdateNumUsrsNotifiedByEMailAboutNotice (long NotCod,unsigned Nu void Not_ListNotices (void) { - Not_ShowNotices (Not_LIST_FULL_NOTICES); + extern const char *Txt_New_notice; + bool ICanEditNotices = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || + Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); + + if (ICanEditNotices) + { + fprintf (Gbl.F.Out,"
"); + Act_PutContextualLink (ActWriNot,NULL,"new",Txt_New_notice); + fprintf (Gbl.F.Out,"
"); + } + + /***** Show highlighted notice *****/ + if (Gbl.CurrentCrs.Notices.HighlightNotCod > 0) + Not_GetDataAndShowNotice (Gbl.CurrentCrs.Notices.HighlightNotCod,ICanEditNotices); + + /***** Show all notices *****/ + Not_ShowNotices (Not_LIST_FULL_NOTICES,ICanEditNotices); } /*****************************************************************************/ @@ -234,16 +256,43 @@ void Not_RevealHiddenNotice (void) RSS_UpdateRSSFileForACrs (&Gbl.CurrentCrs.Crs); } +/*****************************************************************************/ +/********************* Request the removal of a notice ***********************/ +/*****************************************************************************/ + +void Not_RequestRemNotice (void) + { + extern const char *Txt_Do_you_really_want_to_remove_the_following_notice; + extern const char *Txt_Remove; + long NotCod; + + /***** Get the code of the notice to remove *****/ + NotCod = Not_GetParamNotCod (); + + /***** Form to ask for confirmation to remove this notice *****/ + Act_FormStart (ActRemNot); + Not_PutHiddenParamNotCod (NotCod); + Lay_ShowAlert (Lay_WARNING,Txt_Do_you_really_want_to_remove_the_following_notice); + Not_GetDataAndShowNotice (NotCod, + false); // Do not edit this notice + Lay_PutRemoveButton (Txt_Remove); + Act_FormEnd (); + + /***** Show all notices *****/ + Not_ShowNotices (Not_LIST_FULL_NOTICES, + true); // I can remove notices ==> I can edit notices + } + /*****************************************************************************/ /******************************* Remove a notice *****************************/ /*****************************************************************************/ -void Not_DeleteNotice (void) +void Not_RemoveNotice (void) { char Query[512]; long NotCod; - /***** Get the code of the notice to delete *****/ + /***** Get the code of the notice to remove *****/ NotCod = Not_GetParamNotCod (); /***** Remove notice *****/ @@ -269,10 +318,10 @@ void Not_DeleteNotice (void) } /*****************************************************************************/ -/**************************** Show (expand) a notice *************************/ +/********************* Get notice to show highlighted ************************/ /*****************************************************************************/ -void Not_ShowANotice (void) +void Not_GetNotToShowHighlighted (void) { /***** Get the code of the notice to highlight *****/ Gbl.CurrentCrs.Notices.HighlightNotCod = Not_GetParamNotCod (); @@ -282,9 +331,8 @@ void Not_ShowANotice (void) /***************************** Show the notices ******************************/ /*****************************************************************************/ -void Not_ShowNotices (Not_Listing_t TypeNoticesListing) +void Not_ShowNotices (Not_Listing_t TypeNoticesListing,bool ICanEditNotices) { - extern const char *Txt_New_notice; extern const char *Txt_All_notices; extern const char *Txt_No_notices; char Query[512]; @@ -300,65 +348,10 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing) long UsrCod; unsigned UnsignedNum; Not_Status_t Status; - bool ICanEditNotices; /***** A course must be selected (Gbl.CurrentCrs.Crs.CrsCod > 0) *****/ if (Gbl.CurrentCrs.Crs.CrsCod > 0) { - ICanEditNotices = (TypeNoticesListing == Not_LIST_FULL_NOTICES && - (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER || - Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)); - - if (ICanEditNotices) - { - fprintf (Gbl.F.Out,"
"); - Act_PutContextualLink (ActWriNot,NULL,"new",Txt_New_notice); - fprintf (Gbl.F.Out,"
"); - } - - /***** Show highlighted notice *****/ - if (TypeNoticesListing == Not_LIST_FULL_NOTICES && - Gbl.CurrentCrs.Notices.HighlightNotCod > 0) - { - sprintf (Query,"SELECT UNIX_TIMESTAMP(CreatTime) AS F,UsrCod,Content,Status" - " FROM notices" - " WHERE NotCod='%ld' AND CrsCod='%ld'", - Gbl.CurrentCrs.Notices.HighlightNotCod, - Gbl.CurrentCrs.Crs.CrsCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get notice from database")) - { - row = mysql_fetch_row (mysql_res); - - /* Get creation time (row[0] holds the UTC date-time) */ - TimeUTC = Dat_GetUNIXTimeFromStr (row[0]); - - /* Get user code (row[1]) */ - UsrCod = Str_ConvertStrCodToLongCod (row[1]); - - /* Get the content (row[2]) and insert links*/ - strncpy (Content,row[2],Cns_MAX_BYTES_TEXT); - Str_InsertLinkInURLs (Content,Cns_MAX_BYTES_TEXT, - Not_MaxCharsURLOnScreen[TypeNoticesListing]); - if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES) - Str_LimitLengthHTMLStr (Content,Not_MAX_CHARS_ON_NOTICE); - - /* Get status of the notice (row[3]) */ - Status = Not_OBSOLETE_NOTICE; - if (sscanf (row[3],"%u",&UnsignedNum) == 1) - if (UnsignedNum < Not_NUM_STATUS) - Status = (Not_Status_t) UnsignedNum; - - /* Draw the notice */ - Not_DrawANotice (TypeNoticesListing, - Gbl.CurrentCrs.Notices.HighlightNotCod, - TimeUTC,Content,UsrCod,Status, - ICanEditNotices); - } - - /* Free structure that stores the query result */ - DB_FreeMySQLResult (&mysql_res); - } - /***** Get notices from database *****/ switch (TypeNoticesListing) { @@ -466,6 +459,59 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing) } } +/*****************************************************************************/ +/******************** Get data of a notice and show it ***********************/ +/*****************************************************************************/ + +static void Not_GetDataAndShowNotice (long NotCod,bool ICanEditNotices) + { + char Query[512]; + MYSQL_RES *mysql_res; + MYSQL_ROW row; + char Content[Cns_MAX_BYTES_TEXT+1]; + time_t TimeUTC; + long UsrCod; + unsigned UnsignedNum; + Not_Status_t Status; + + /***** Get notice data from database *****/ + sprintf (Query,"SELECT UNIX_TIMESTAMP(CreatTime) AS F,UsrCod,Content,Status" + " FROM notices" + " WHERE NotCod='%ld' AND CrsCod='%ld'", + NotCod, + Gbl.CurrentCrs.Crs.CrsCod); + if (DB_QuerySELECT (Query,&mysql_res,"can not get notice from database")) + { + row = mysql_fetch_row (mysql_res); + + /* Get creation time (row[0] holds the UTC date-time) */ + TimeUTC = Dat_GetUNIXTimeFromStr (row[0]); + + /* Get user code (row[1]) */ + UsrCod = Str_ConvertStrCodToLongCod (row[1]); + + /* Get the content (row[2]) and insert links*/ + strncpy (Content,row[2],Cns_MAX_BYTES_TEXT); + Str_InsertLinkInURLs (Content,Cns_MAX_BYTES_TEXT, + Not_MaxCharsURLOnScreen[Not_LIST_FULL_NOTICES]); + + /* Get status of the notice (row[3]) */ + Status = Not_OBSOLETE_NOTICE; + if (sscanf (row[3],"%u",&UnsignedNum) == 1) + if (UnsignedNum < Not_NUM_STATUS) + Status = (Not_Status_t) UnsignedNum; + + /***** Draw the notice *****/ + Not_DrawANotice (Not_LIST_FULL_NOTICES, + NotCod, + TimeUTC,Content,UsrCod,Status, + ICanEditNotices); + } + + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); + } + /*****************************************************************************/ /********************* Draw a notice as a yellow note ************************/ /*****************************************************************************/ @@ -520,7 +566,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing, if (ICanEditNotices) { /* Form to remove notice */ - Act_FormStart (ActRemNot); + Act_FormStart (ActReqRemNot); Not_PutHiddenParamNotCod (NotCod); fprintf (Gbl.F.Out,"
" "%s e todo o seu conteúdo?"; #endif +const char *Txt_Do_you_really_want_to_remove_the_following_notice = +#if L==0 + "¿Realmente desea eliminar el siguiente aviso?"; // Necessita traduccio +#elif L==1 + "Do you really want to remove the following notice?"; // Need Übersetzung +#elif L==2 + "Do you really want to remove the following notice?"; +#elif L==3 + "¿Realmente desea eliminar el siguiente aviso?"; +#elif L==4 + "Do you really want to remove the following notice?"; // Besoin de traduction +#elif L==5 + "¿Realmente desea eliminar el siguiente aviso?"; // Okoteve traducción +#elif L==6 + "Vuoi realmente rimuovere il seguente avviso?"; +#elif L==7 + "Czy na pewno chcesz usunac nastepujace obwieszczenie?"; +#elif L==8 + "Do you really want to remove the following notice>?"; // Necessita de tradução +#endif + const char *Txt_Do_you_really_want_to_remove_the_following_user_as_an_administrator_of_the_centre_X = // Warning: it is very important to include %s in the following sentences #if L==0 "¿Realmente desea eliminar el siguiente usuario"