From b5f15eed0304083017aea9a9c6a8744a6d57b450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Wed, 8 Jan 2020 14:04:25 +0100 Subject: [PATCH] Version19.113 --- swad_action.c | 684 +-------------------- swad_centre.c | 72 +-- swad_centre.h | 8 +- swad_centre_config.c | 8 +- swad_changelog.h | 5 +- swad_country.c | 78 +-- swad_country.h | 13 +- swad_course.c | 28 +- swad_course.h | 6 + swad_course_config.c | 10 +- swad_degree.c | 32 +- swad_degree.h | 5 - swad_degree_config.c | 8 +- swad_department.c | 16 +- swad_enrolment.h | 1 + swad_file_browser.h | 1 + swad_global.c | 32 +- swad_global.h | 7 +- swad_institution.c | 78 +-- swad_institution.h | 13 +- swad_institution_config.c | 8 +- swad_record.c | 36 +- swad_system.h | 48 -- swad_text_action.c | 1216 ++++++++++++++++++------------------- 24 files changed, 841 insertions(+), 1572 deletions(-) delete mode 100644 swad_system.h diff --git a/swad_action.c b/swad_action.c index 31d0d1da..29a9511d 100644 --- a/swad_action.c +++ b/swad_action.c @@ -93,664 +93,6 @@ extern struct Globals Gbl; /*****************************************************************************/ /************************* Private global variables **************************/ /*****************************************************************************/ -/* -Files: - 706. ActAdmDocGrp Admin the files of the documents zone of a group - 707. ActReqRemFilDocGrp Request removal of a file in the documents zone of a group - 708. ActRemFilDocGrp Remove a file in the documents zone of a group - 709. ActRemFolDocGrp Remove a folder empty in the documents zone of a group - 710. ActCopDocGrp Set source of copy in the documents zone of a group - 711. ActPasDocGrp Paste a folder or file in the documents zone of a group - 712. ActRemTreDocGrp Remove a folder no empty in the documents zone of a group - 713. ActFrmCreDocGrp Form to crear a folder or file in the documents zone of a group - 714. ActCreFolDocGrp Create a new folder in the documents zone of a group - 715. ActCreLnkDocGrp Create a new link in the documents zone of a group - 716. ActRenFolDocGrp Rename a folder in the documents zone of a group - 717. ActRcvFilDocGrpDZ Receive a file in the documents zone of a group using Dropzone.js - 718. ActRcvFilDocGrpCla Receive a file in the documents zone of a group using the classic way - 719. ActExpAdmDocGrp Expand a folder when administrating the documents zone of a group - 720. ActConAdmDocGrp Contract a folder when administrating the documents zone of a group - 721. ActZIPAdmDocGrp Compress a folder when administrating the documents zone of a group - 722. ActShoDocGrp Show hidden folder or file of download - 723. ActHidDocGrp Hide folder or file of download - 724. ActReqDatAdmDocGrp Ask for metadata of a file of the documents zone of a group - 725. ActChgDatAdmDocGrp Change metadata of a file of the documents zone of a group - 726. ActDowAdmDocGrp Download a file of the documents zone of a group - - 727. ActChgToAdmTch Change to administrate teachers' files of the course/group - - 728. ActAdmTchCrs Admin the teachers' files zone of the course - 729. ActReqRemFilTchCrs Request removal of a teachers' file of the course - 730. ActRemFilTchCrs Remove a teachers' file of the course - 731. ActRemFolTchCrs Remove an empty teachers' folder of the course - 732. ActCopTchCrs Set source of teachers' zone of the course - 733. ActPasTchCrs Paste a folder or file in teachers' zone of the course - 734. ActRemTreTchCrs Remove a folder no empty of teachers' zone of the course - 735. ActFrmCreTchCrs Form to crear a folder or file in teachers' zone of the course - 736. ActCreFolTchCrs Create a new folder in teachers' zone of the course - 737. ActCreLnkTchCrs Create a new link in teachers' zone of the course - 738. ActRenFolTchCrs Rename a folder in teachers' zone of the course - 739. ActRcvFilTchCrsDZ Receive a file in teachers' zone of the course using Dropzone.js - 740. ActRcvFilTchCrsCla Receive a file in teachers' zone of the course using the classic way - 741. ActExpTchCrs Expand a folder in teachers' zone of the course - 742. ActConTchCrs Contract a folder in teachers' zone of the course - 743. ActZIPTchCrs Compress a folder in teachers' zone of the course - 744. ActReqDatTchCrs Ask for metadata of a file of the teachers' zone of the course - 745. ActChgDatTchCrs Change metadata of a file of the teachers' zone of the course - 746. ActDowTchCrs Download a file of the teachers' zone of the course - - 747. ActAdmTchGrp Admin the teachers' files zone of a group - 748. ActReqRemFilTchGrp Request removal of a teachers' file of a group - 749. ActRemFilTchGrp Remove a teachers' file of a group - 750. ActRemFolTchGrp Remove an empty teachers' folder of a group - 751. ActCopTchGrp Set source of copy in teachers' zone of a group - 752. ActPasTchGrp Paste a folder or file in teachers' zone of a group - 753. ActRemTreTchGrp Remove a folder no empty of teachers' zone of a group - 754. ActFrmCreTchGrp Form to crear a folder or file in teachers' zone of a group - 755. ActCreFolTchGrp Create a new folder in teachers' zone of a group - 756. ActCreLnkTchGrp Create a new link in teachers' zone of a group - 757. ActRenFolTchGrp Rename a folder in teachers' zone of a group - 758. ActRcvFilTchGrpDZ Receive a file in teachers' zone of a group using Dropzone.js - 759. ActRcvFilTchGrpCla Receive a file in teachers' zone of a group using the classic way - 760. ActExpTchGrp Expand a folder in teachers' zone of a group - 761. ActConTchGrp Contract a folder in teachers' zone of a group - 762. ActZIPTchGrp Compress a folder in teachers' zone of a group - 763. ActReqDatTchGrp Ask for metadata of a file of the teachers' zone of a group - 764. ActChgDatTchGrp Change metadata of a file of the teachers' zone of a group - 765. ActDowTchGrp Download a file of the teachers' zone of a group - - 766. ActChgToAdmSha Change to administrate shared files of the course/group - - 767. ActAdmShaCrs Admin the shared files zone of the course - 768. ActReqRemFilShaCrs Request removal of a shared file of the course - 769. ActRemFilShaCrs Remove a shared file of the course - 770. ActRemFolShaCrs Remove a empty shared folder of the course - 771. ActCopShaCrs Set source of copy in shared zone of the course - 772. ActPasShaCrs Paste a folder or file in shared zone of the course - 773. ActRemTreShaCrs Remove a folder no empty of shared zone of the course - 774. ActFrmCreShaCrs Form to crear a folder or file in shared zone of the course - 775. ActCreFolShaCrs Create a new folder in shared zone of the course - 776. ActCreLnkShaCrs Create a new link in shared zone of the course - 777. ActRenFolShaCrs Rename a folder in shared zone of the course - 778. ActRcvFilShaCrsDZ Receive a file in shared zone of the course using Dropzone.js - 779. ActRcvFilShaCrsCla Receive a file in shared zone of the course using the classic way - 780. ActExpShaCrs Expand a folder in shared zone of the course - 781. ActConShaCrs Contract a folder in shared zone of the course - 782. ActZIPShaCrs Compress a folder in shared zone of the course - 783. ActReqDatShaCrs Ask for metadata of a file of the shared zone of the course - 784. ActChgDatShaCrs Change metadata of a file of the shared zone of the course - 785. ActDowShaCrs Download a file of the shared zone of the course - - 786. ActAdmShaGrp Admin the shared files zone of a group - 787. ActReqRemFilShaGrp Request removal of a shared file of a group - 788. ActRemFilShaGrp Remove a shared file of a group - 789. ActRemFolShaGrp Remove a folder empty común of a group - 790. ActCopShaGrp Set source of copy in shared zone of a group - 791. ActPasShaGrp Paste a folder or file in shared zone of a group - 792. ActRemTreShaGrp Remove a folder no empty of shared zone of a group - 793. ActFrmCreShaGrp Form to crear a folder or file in shared zone of a group - 794. ActCreFolShaGrp Create a new folder in shared zone of a group - 795. ActCreLnkShaGrp Create a new link in shared zone of a group - 796. ActRenFolShaGrp Rename a folder in shared zone of a group - 797. ActRcvFilShaGrpDZ Receive a file in shared zone of a group using Dropzone.js - 798. ActRcvFilShaGrpCla Receive a file in shared zone of a group using the classic way - 799. ActExpShaGrp Expand a folder in shared zone of a group - 800. ActConShaGrp Contract a folder in shared zone of a group - 801. ActZIPShaGrp Compress a folder in shared zone of a group - 802. ActReqDatShaGrp Ask for metadata of a file of the shared zone of a group - 803. ActChgDatShaGrp Change metadata of a file of the shared zone of a group - 804. ActDowShaGrp Download a file of the shared zone of a group - - 805. ActAdmAsgWrkCrs Edit all the works sent to the course - 806. ActReqRemFilAsgUsr Request removal of a file of assignments from a user - 807. ActRemFilAsgUsr Remove a file of assignments from a user - 808. ActRemFolAsgUsr Remove an empty folder of assignments of a user - 809. ActCopAsgUsr Set origin of copy in assignments of a user - 810. ActPasAsgUsr Paste a file or folder of assignments of a user - 811. ActRemTreAsgUsr Remove a not empty folder of assignments of a user - 812. ActFrmCreAsgUsr Form to create a new folder or file of assignments of a user - 813. ActCreFolAsgUsr Create a new folder of assignments of a user - 814. ActCreLnkAsgUsr Create a new link of assignments of a user - 815. ActRenFolAsgUsr Rename a folder of assignments of a user - 816. ActRcvFilAsgUsrDZ Receive a new file of assignments of a user using Dropzone.js - 817. ActRcvFilAsgUsrCla Receive a new file of assignments of a user using the classic way - 818. ActExpAsgUsr Expand a folder of assignments of a user - 819. ActConAsgUsr Contract a folder of assignments of a user - 820. ActZIPAsgUsr Compress a folder of assignments of a user - 821. ActReqDatAsgUsr Ask for metadata of a file of assignments of a user - 822. ActChgDatAsgUsr Change metadata of a file of assignments of a user - 823. ActDowAsgUsr Download a file of assignments of a user - 824. ActReqRemFilWrkUsr Request removal of a file of works from a user - 825. ActRemFilWrkUsr Remove a file of works from a user - 826. ActRemFolWrkUsr Remove an empty folder of works of a user - 827. ActCopWrkUsr Set origin of copy in works of a user - 828. ActPasWrkUsr Paste a file or folder of works of a user - 829. ActRemTreWrkUsr Remove a not empty folder of works of a user - 830. ActFrmCreWrkUsr Form to create a new folder or file of works of a user - 831. ActCreFolWrkUsr Create a new folder of works of a user - 832. ActCreLnkWrkUsr Create a new link of works of a user - 833. ActRenFolWrkUsr Rename a folder of works of a user - 834. ActRcvFilWrkUsrDZ Receive a new file of works of a user using Dropzone.js - 835. ActRcvFilWrkUsrCla Receive a new file of works of a user using the classic way - 836. ActExpWrkUsr Expand a folder of works of a user - 837. ActConWrkUsr Contract a folder of works of a user - 838. ActZIPWrkUsr Compress a folder of works of a user - 839. ActReqDatWrkUsr Ask for metadata of a file of works of a user - 840. ActChgDatWrkUsr Change metadata of a file of works of a user - 841. ActDowWrkUsr Download a file of works of a user - 842. ActReqRemFilAsgCrs Request removal of a file of assignments in the course - 843. ActRemFilAsgCrs Remove a file of assignments in the course - 844. ActRemFolAsgCrs Remove an empty folder of assignments in the course - 845. ActCopAsgCrs Set origin of copy in assignments in the course - 846. ActPasAsgCrs Paste a file or folder of assignments in the course - 847. ActRemTreAsgCrs Remove a not empty folder of assignments in the course - 848. ActFrmCreAsgCrs Form to create a new folder or file of assignments in the course - 849. ActCreFolAsgCrs Create a new folder of assignments in the course - 850. ActCreLnkAsgCrs Create a new link of assignments in the course - 851. ActRenFolAsgCrs Rename a folder of assignments in the course - 852. ActRcvFilAsgCrsDZ Receive a file of assignments in the course using Dropzone.js - 853. ActRcvFilAsgCrsCla Receive a file of assignments in the course using the classic way - 854. ActExpAsgCrs Expand a folder of assignments in a course - 855. ActConAsgCrs Contract a folder of assignments in a course - 856. ActZIPAsgCrs Compress a folder of assignments in a course - 857. ActReqDatAsgCrs Ask for metadata of a file of assignments in a course - 858. ActChgDatAsgCrs Change metadata of a file of assignments in a course - 859. ActDowAsgCrs Download a file of assignments in a course - 860. ActReqRemFilWrkCrs Request removal of a file of works in the course - 861. ActRemFilWrkCrs Remove a file of works in the course - 862. ActRemFolWrkCrs Remove an empty folder of works in the course - 863. ActCopWrkCrs Set origin of copy in works in the course - 864. ActPasWrkCrs Paste a file or folder of works in the course - 865. ActRemTreWrkCrs Remove a not empty folder of works in the course - 866. ActFrmCreWrkCrs Form to create a new folder or file of works in the course - 867. ActCreFolWrkCrs Create a new folder of works in the course - 868. ActCreLnkWrkCrs Create a new link of works in the course - 869. ActRenFolWrkCrs Rename a folder of works in the course - 870. ActRcvFilWrkCrsDZ Receive a file of works in the course using Dropzone.js - 871. ActRcvFilWrkCrsCla Receive a file of works in the course using the classic way - 872. ActExpWrkCrs Expand a folder of works in a course - 873. ActConWrkCrs Contract a folder of works in a course - 874. ActZIPWrkCrs Compress a folder of works in a course - 875. ActReqDatWrkCrs Ask for metadata of a file of works in a course - 876. ActChgDatWrkCrs Change metadata of a file of works in a course - 877. ActDowWrkCrs Download a file of works in a course - - 878. ActChgToSeeMrk Change to see marks in course/group - - 879. ActSeeMrkCrs See marks in course - 880. ActExpSeeMrkCrs Expand a folder in marks in course - 881. ActConSeeMrkCrs Contract a folder in marks in course - 882. ActReqDatSeeMrkCrs Ask for metadata of a file of the marks zone of the course - 883. ActSeeMyMrkCrs Individualized access to marks in course - - 884. ActSeeMrkGrp See marks in group - 885. ActExpSeeMrkGrp Expand a folder in marks in group - 886. ActConSeeMrkGrp Contract a folder in marks in group - 887. ActReqDatSeeMrkGrp Ask for metadata of a file of the marks zone of a group - 888. ActSeeMyMrkGrp Individualized access to marks in group - - 889. ActChgToAdmMrk Change to admin marks in course/group - - 890. ActAdmMrkCrs Admin the files of the zone of marks in course - 891. ActReqRemFilMrkCrs Request removal of a file of marks in course - 892. ActRemFilMrkCrs Remove a file of marks in course - 893. ActRemFolMrkCrs Remove a folder empty of marks in course - 894. ActCopMrkCrs Set source of copy in marks in course - 895. ActPasMrkCrs Paste a folder or file in marks in course - 896. ActRemTreMrkCrs Remove a folder no empty of marks in course - 897. ActFrmCreMrkCrs Form to crear a folder or file in marks in course - 898. ActCreFolMrkCrs Create a new folder in marks in course - 899. ActRenFolMrkCrs Rename a folder in marks in course - 900. ActRcvFilMrkCrsDZ Receive a file of marks in course using Dropzone.js - 901. ActRcvFilMrkCrsCla Receive a file of marks in course using the classic way - 902. ActExpAdmMrkCrs Expand a folder in marks administration in course - 903. ActConAdmMrkCrs Contract a folder in marks administration in course - 904. ActZIPAdmMrkCrs Compress a folder in marks administration in course - 905. ActShoMrkCrs Show hidden folder or file of the marks administration in course - 906. ActHidMrkCrs Hide folder or file of the marks administration in course - 907. ActReqDatAdmMrkCrs Ask for metadata of a file in marks administration in course - 908. ActChgDatAdmMrkCrs Change metadata of a file in marks administration in course - 909. ActDowAdmMrkCrs Download a file in marks administration in course - 910. ActChgNumRowHeaCrs Change the number of rows of cabecera of a file of marks in course - 911. ActChgNumRowFooCrs Change the number of rows of pie of a file of marks in course - - 912. ActAdmMrkGrp Admin the files of the zone of marks in group - 913. ActReqRemFilMrkGrp Request removal of a file of marks in group - 914. ActRemFilMrkGrp Remove a file of marks in group - 915. ActRemFolMrkGrp Remove a folder empty of marks in group - 916. ActCopMrkGrp Set source of copy in marks in group - 917. ActPasMrkGrp Paste a folder or file in marks in group - 918. ActRemTreMrkGrp Remove a folder no empty of marks in group - 919. ActFrmCreMrkGrp Form to crear a folder or file in marks in group - 920. ActCreFolMrkGrp Create a new folder in marks in group - 921. ActRenFolMrkGrp Rename a folder in marks in group - 922. ActRcvFilMrkGrpDZ Receive a file to marks in group using Dropzone.js - 923. ActRcvFilMrkGrpCla Receive a file to marks in group using the classic way - 924. ActExpAdmMrkGrp Expand a folder in marks administration in group - 925. ActConAdmMrkGrp Contract a folder in marks administration in group - 926. ActZIPAdmMrkGrp Compress a folder in marks administration in group - 927. ActShoMrkGrp Show hidden folder or file of the marks administration in group - 928. ActHidMrkGrp Hide folder or file of the marks administration in group - 929. ActReqDatAdmMrkGrp Ask for metadata of a file in marks administration in group - 930. ActChgDatAdmMrkGrp Change metadata of a file in marks administration in group - 931. ActDowAdmMrkGrp Download a file in marks administration in group - 932. ActChgNumRowHeaGrp Change the number of rows of cabecera of a file of marks in group - 933. ActChgNumRowFooGrp Change the number of rows of pie of a file of marks in group - - 934. ActReqRemFilBrf Request removal of a file of the briefcase - 935. ActRemFilBrf Remove a file of the briefcase - 936. ActRemFolBrf Remove a folder empty of the briefcase - 937. ActCopBrf Set source of copy in the briefcase - 938. ActPasBrf Paste a folder or file in the briefcase - 939. ActRemTreBrf Remove a folder no empty of the briefcase - 940. ActFrmCreBrf Form to crear a folder or file in the briefcase - 941. ActCreFolBrf Create a new folder in the briefcase - 942. ActCreLnkBrf Create a new link in the briefcase - 943. ActRenFolBrf Rename a folder of the briefcase - 944. ActRcvFilBrfDZ Receive a file in the briefcase using Dropzone.js - 945. ActRcvFilBrfCla Receive a file in the briefcase using the classic way - 946. ActExpBrf Expand a folder in briefcase - 947. ActConBrf Contract a folder in briefcase - 948. ActZIPBrf Compress a folder in briefcase - 949. ActReqDatBrf Ask for metadata of a file in the briefcase - 950. ActChgDatBrf Change metadata of a file in the briefcase - 951. ActDowBrf Download a file in the briefcase - 952. ActReqRemOldBrf Ask for removing old files in the briefcase - 953. ActRemOldBrf Remove old files in the briefcase -Users: - 954. ActReqSelGrp Request the selection of groups of students - 955. ActLstStd Show class photo or list of students - 956. ActLstTch Show class photo or list of teachers - 957. ActLstOth Show class photo or list of guests - 958. ActSeeAtt Show attendance events - 959. ActReqSignUp Apply for my enrolment - 960. ActSeeSignUpReq Show pending requests for inscription in the current course - 961. ActLstCon List connected users - - 962. ActChgGrp Change my groups - 963. ActReqEdiGrp Request the edition of groups - 964. ActNewGrpTyp Request the creation of a type of group - 965. ActReqRemGrpTyp Request the removal of a type of group - 966. ActRemGrpTyp Remove a type of group of students - 967. ActRenGrpTyp Request renaming of a type of group of students - 968. ActChgMdtGrpTyp Request change if it is mandatory to register in groups of a type - 969. ActChgMulGrpTyp Request change if it is possible to register in multiple groups of a type - 970. ActChgTimGrpTyp Request change when the groups of a type will be open - 971. ActNewGrp Request the creation of a group - 972. ActReqRemGrp Request the removal of a group - 973. ActRemGrp Remove a group - 974. ActOpeGrp Open a group - 975. ActCloGrp Close a group - 976. ActEnaFilZonGrp Enable filezones of a group - 977. ActDisFilZonGrp Disable filezones of a group - 978. ActChgGrpTyp Change the type of group of a group - 979. ActRenGrp Rename a group - 980. ActChgGrpCla Change the classroom of a group - 981. ActChgMaxStdGrp Change the maximum number of students in a group - - 982. ActLstGst List main data of administrators - - 983. ActPrnGstPho Show the class photo of guests ready to be printed - 984. ActPrnStdPho Show the class photo of students ready to be printed - 985. ActPrnTchPho Show the class photo of teachers ready to be printed - 986. ActLstGstAll List in another window the full data of guests - 987. ActLstStdAll List in another window the full data of students - 988. ActLstTchAll List in another window the full data of teachers - - 989. ActSeeRecOneStd Show record of one selected student - 990. ActSeeRecOneTch Show record of one selected teacher - 991. ActDoActOnSevGst Do action on several selected guests - 992. ActDoActOnSevStd Do action on several selected students - 993. ActDoActOnSevTch Do action on several selected teachers - 994. ActPrnRecSevGst Show records of several selected guests - 995. ActPrnRecSevStd Show records of several selected students - 996. ActPrnRecSevTch Show records of several selected teachers - 997. ActPrnRecSevGst Show records of several selected guests ready to be printed - 998. ActPrnRecSevStd Show records of several selected students ready to be printed - 999. ActPrnRecSevTch Show records of several selected teachers ready to be printed - 1000. ActRcvRecOthUsr Update record fields of a student in this course - 1001. ActEdiRecFie Request the edition of record fields of students - 1002. ActNewFie Request the creation of a record field - 1003. ActReqRemFie Request the removal of record field - 1004. ActRemFie Remove a record field - 1005. ActRenFie Request renaming of record field - 1006. ActChgRowFie Request change in number of lines of form of a record field - 1007. ActChgVisFie Request change in visibility of a record field - 1008. ActRcvRecCrs Receive and update fields of my record in this course - - 1009. ActFrmLogInUsrAgd Put form to log in to show another user's public agenda - 1010. ActLogInUsrAgd Show another user's public agenda after log in - 1011. ActLogInUsrAgdLan Show another user's public agenda after change language - 1012. ActSeeUsrAgd Show another user's public agenda - - 1013. ActReqEnrSevStd Request the enrolment/removing of several students to / from current course - 1014. ActReqEnrSevNET Request the enrolment/removing of several non-editing teachers to / from current course - 1015. ActReqEnrSevTch Request the enrolment/removing of several teachers to / from current course - - 1016. ActReqLstUsrAtt Request listing of attendance of several students to several events - 1017. ActSeeLstMyAtt List my attendance as student to several events - 1018. ActPrnLstMyAtt Print my attendance as student to several events - 1019. ActSeeLstUsrAtt List attendance of several students to several events - 1020. ActPrnLstUsrAtt Print attendance of several students to several events - 1021. ActFrmNewAtt Form to create a new attendance event - 1022. ActEdiOneAtt Edit one attendance event - 1023. ActNewAtt Create new attendance event - 1024. ActChgAtt Modify data of an existing attendance event - 1025. ActReqRemAtt Request the removal of an attendance event - 1026. ActRemAtt Remove attendance event - 1027. ActHidAtt Hide attendance event - 1028. ActShoAtt Show attendance event - 1029. ActSeeOneAtt List students who attended to an event - 1030. ActRecAttStd Save students who attended to an event and comments - 1031. ActRecAttMe Save my comments as student in an attendance event - - 1032. ActSignUp Apply for my enrolment - 1033. ActUpdSignUpReq Update pending requests for inscription in the current course - 1034. ActReqRejSignUp Ask if reject the enrolment of a user in a course - 1035. ActRejSignUp Reject the enrolment of a user in a course - - 1036. ActReqMdfOneOth Request a user's ID for enrolment/removing - 1037. ActReqMdfOneStd Request a student's ID for enrolment/removing - 1038. ActReqMdfOneTch Request a teacher's ID for enrolment/removing - 1039. ActReqMdfOth Request enrolment/removing of a user - 1040. ActReqMdfStd Request enrolment/removing of a student - 1041. ActReqMdfNET Request enrolment/removing of a non-editing teacher - 1042. ActReqMdfTch Request enrolment/removing of a teacher - 1043. ActReqOthPho Show form to send the photo of another user - 1044. ActReqStdPho Show form to send the photo of another user - 1045. ActReqTchPho Show form to send the photo of another user - 1046. ActDetOthPho Receive other user's photo and detect faces on it - 1047. ActDetStdPho Receive other user's photo and detect faces on it - 1048. ActDetTchPho Receive other user's photo and detect faces on it - 1049. ActUpdOthPho Update other user's photo - 1050. ActUpdStdPho Update other user's photo - 1051. ActUpdTchPho Update other user's photo - 1052. ActRemOthPho Request the removal of other user's photo - 1053. ActRemStdPho Request the removal of student's photo - 1054. ActRemTchPho Request the removal of teacher's photo - 1055. ActRemOthPho Remove other user's photo - 1056. ActRemStdPho Remove student's photo - 1057. ActRemTchPho Remove teacher's photo - 1058. ActCreOth Create a new guest - 1059. ActCreStd Create a new student - 1060. ActCreNET Create a new non.editing teacher - 1061. ActCreTch Create a new teacher - 1062. ActUpdOth Update another user's data and groups - 1063. ActUpdStd Update another student's data and groups - 1064. ActUpdNET Update another non-editing teacher's data and groups - 1065. ActUpdTch Update another teacher's data and groups - 1066. ActReqAccEnrStd Confirm acceptation / refusion of enrolment as student in current course - 1067. ActReqAccEnrNET Confirm acceptation / refusion of enrolment as non-editing teacher in current course - 1068. ActReqAccEnrTch Confirm acceptation / refusion of enrolment as teacher in current course - 1069. ActAccEnrStd Accept enrolment as student in current course - 1070. ActAccEnrNET Accept enrolment as non-editing teacher in current course - 1071. ActAccEnrTch Accept enrolment as teacher in current course - 1072. ActRemMe_Std Reject enrolment as student in current course - 1073. ActRemMe_NET Reject enrolment as non-editing teacher in current course - 1074. ActRemMe_Tch Reject enrolment as teacher in current course - - 1075. ActNewAdmIns Register an administrador in this institution - 1076. ActRemAdmIns Remove an administrador of this institution - 1077. ActNewAdmCtr Register an administrador in this centre - 1078. ActRemAdmCtr Remove an administrador of this centre - 1079. ActNewAdmDeg Register an administrador in this degree - 1080. ActRemAdmDeg Remove an administrador of this degree - - 1081. ActRcvFrmEnrSevStd Receive a form with IDs of students to be registered/removed to/from current course - 1082. ActRcvFrmEnrSevNET Receive a form with IDs of non-editing teachers to be registered/removed to/from current course - 1083. ActRcvFrmEnrSevTch Receive a form with IDs of teachers to be registered/removed to/from current course - - 1084. ActCnfID_Oth Confirm another user's ID - 1085. ActCnfID_Std Confirm another user's ID - 1086. ActCnfID_Tch Confirm another user's ID - - 1087. ActFrmAccOth Show forms to the change another user's account - 1088. ActFrmAccStd Show forms to the change another user's account - 1089. ActFrmAccTch Show forms to the change another user's account - - 1090. ActRemOldNicOth Remove one of another user's old nicknames - 1091. ActRemOldNicStd Remove one of another user's old nicknames - 1092. ActRemOldNicTch Remove one of another user's old nicknames - 1093. ActChgNicOth Change another user's nickname - 1094. ActChgNicStd Change another user's nickname - 1095. ActChgNicTch Change another user's nickname - - 1096. ActRemID_Oth Remove one of the IDs of another user - 1097. ActRemID_Std Remove one of the IDs of another user - 1098. ActRemID_Tch Remove one of the IDs of another user - 1099. ActNewID_Oth Create a new user's ID for another user - 1100. ActNewID_Std Create a new user's ID for another user - 1101. ActNewID_Tch Create a new user's ID for another user - - 1102. ActChgPwdOth Change the password of another user - 1103. ActChgPwdStd Change the password of another user - 1104. ActChgPwdTch Change the password of another user - - 1105. ActRemMaiOth Remove one of the email of another user - 1106. ActRemMaiStd Remove one of the email of another user - 1107. ActRemMaiTch Remove one of the email of another user - 1108. ActNewMaiOth Create a new user's email for another user - 1109. ActNewMaiStd Create a new user's email for another user - 1110. ActNewMaiTch Create a new user's email for another user - - 1111. ActRemStdCrs Remove a student from the current course - 1112. ActRemNETCrs Remove a non-editing teacher from the current course - 1113. ActRemTchCrs Remove a teacher from the current course - 1114. ActRemUsrGbl Eliminate completely a user from the platform - 1115. ActReqRemAllStdCrs Request the removal of all the students from the current course - 1116. ActRemAllStdCrs Remove all the students from the current course - 1117. ActReqRemOldUsr Request the complete elimination of old users - 1118. ActRemOldUsr Eliminate completely old users - - 1119. ActLstDupUsr List possible duplicate users - 1120. ActLstSimUsr List users similar to a given one (possible duplicates) - 1121. ActRemDupUsr Remove user from list of possible duplicate users - - 1122. ActReqFolSevStd Request follow several students - 1123. ActReqFolSevTch Request follow several teachers - 1124. ActReqUnfSevStd Request unfollow several students - 1125. ActReqUnfSevTch Request unfollow several teachers - 1126. ActFolSevStd Follow several students - 1127. ActFolSevTch Follow several teachers - 1128. ActUnfSevStd Unfollow several students - 1129. ActUnfSevTch Unfollow several teachers - -Messages: - 1130. ActSeeAnn Show global announcements - 1131. ActSeeAllNot Show all notices - 1132. ActSeeFor Show the level superior of the forums - 1133. ActSeeChtRms Show the chat rooms - 1134. ActReqMsgUsr Write message to several users - 1135. ActSeeRcvMsg Show the messages received from other users (link in menu) - 1136. ActSeeSntMsg Show the messages sent to other users - 1137. ActReqMaiUsr Select users to send an email to them - 1138. ActMaiUsr Send an email to users - 1139. ActWriAnn Show form to create a new global announcement - 1140. ActRcvAnn Receive and create a new global announcement - 1141. ActHidAnn Hide a global announcement that was active - 1142. ActRevAnn Reveal a global announcement that was hidden - 1143. ActRemAnn Remove global announcement - 1144. ActSeeOneNot Show (expand) a notice - 1145. ActWriNot Write a new notice - 1146. ActRcvNot Receive and create a new notice - 1147. ActHidNot Hide a notice that was active - 1148. ActRevNot Reveal a notice that was hidden - 1149. ActReqRemNot Request removal of a notice - 1150. ActRemNot Remove a notice - - 1151. ActSeeForCrsUsr Show top level of forum of users of the course - 1152. ActSeeForCrsTch Show top level of forum of teachers of the course - 1153. ActSeeForDegUsr Show top level of forum of users of the degree - 1154. ActSeeForDegTch Show top level of forum of teachers of the degree - 1155. ActSeeForCtrUsr Show top level of forum of users of the centre - 1156. ActSeeForCtrTch Show top level of forum of teachers of the centre - 1157. ActSeeForInsUsr Show top level of forum of users of the institution - 1158. ActSeeForInsTch Show top level of forum of teachers of the institution - 1159. ActSeeForGenUsr Show top level of forum of users general - 1160. ActSeeForGenTch Show top level of forum of teachers general - 1161. ActSeeForSWAUsr Show top level of forum of users of the platform - 1162. ActSeeForSWATch Show top level of forum of teachers of the platform - 1163. ActSeePstForCrsUsr Show the messages of a thread of the forum of users of the course - 1164. ActSeePstForCrsTch Show the messages of a thread of the forum of teachers of the course - 1165. ActSeePstForDegUsr Show the messages of a thread of the forum of users of the degree - 1166. ActSeePstForDegTch Show the messages of a thread of the forum of teachers of the degree - 1167. ActSeePstForCtrUsr Show the messages of a thread of the forum of users of the centre - 1168. ActSeePstForCtrTch Show the messages of a thread of the forum of teachers of the centre - 1169. ActSeePstForInsUsr Show the messages of a thread of the forum of users of the institution - 1170. ActSeePstForInsTch Show the messages of a thread of the forum of teachers of the institution - 1171. ActSeePstForGenUsr Show the messages of a thread of the forum of users general - 1172. ActSeePstForGenTch Show the messages of a thread of the forum of teachers general - 1173. ActSeePstForSWAUsr Show the messages of a thread of the forum of users of the platform - 1174. ActSeePstForSWATch Show the messages of a thread of the forum of teachers of the platform - 1175. ActRcvThrForCrsUsr Receive the first message of a new thread of forum of users of the course - 1176. ActRcvThrForCrsTch Receive the first message of a new thread of forum of teachers of the course - 1177. ActRcvThrForDegUsr Receive the first message of a new thread of forum of users of the degree - 1178. ActRcvThrForDegTch Receive the first message of a new thread of forum of teachers of the degree - 1179. ActRcvThrForCtrUsr Receive the first message of a new thread of forum of users of centre - 1180. ActRcvThrForCtrTch Receive the first message of a new thread of forum of teachers of centre - 1181. ActRcvThrForInsUsr Receive the first message of a new thread of forum of users of the institution - 1182. ActRcvThrForInsTch Receive the first message of a new thread of forum of teachers of the institution - 1183. ActRcvThrForGenUsr Receive the first message of a new thread of forum of users general - 1184. ActRcvThrForGenTch Receive the first message of a new thread of forum of teachers general - 1185. ActRcvThrForSWAUsr Receive the first message of a new thread of forum of users of the platform - 1186. ActRcvThrForSWATch Receive the first message of a new thread of forum of teachers of the platform - 1187. ActRcvRepForCrsUsr Receive a message of answer in a thread existente in the forum of users of the course - 1188. ActRcvRepForCrsTch Receive a message of answer in a thread existente in the forum of teachers of the course - 1189. ActRcvRepForDegUsr Receive a message of answer in a thread existente in the forum of users of the degree - 1190. ActRcvRepForDegTch Receive a message of answer in a thread existente in the forum of teachers of the degree - 1191. ActRcvRepForCtrUsr Receive a message of answer in a thread existente in the forum of users of centre - 1192. ActRcvRepForCtrTch Receive a message of answer in a thread existente in the forum of teachers of centre - 1193. ActRcvRepForInsUsr Receive a message of answer in a thread existente in the forum of users of the institution - 1194. ActRcvRepForInsTch Receive a message of answer in a thread existente in the forum of teachers of the institution - 1195. ActRcvRepForGenUsr Receive a message of answer in a thread existente in the forum of users general - 1196. ActRcvRepForGenTch Receive a message of answer in a thread existente in the forum of teachers general - 1197. ActRcvRepForSWAUsr Receive a message of answer in a thread existente in the forum of users of the platform - 1198. ActRcvRepForSWATch Receive a message of answer in a thread existente in the forum of teachers of the platform - 1199. ActReqDelThrCrsUsr Request the removal of a thread of forum of users of the course - 1200. ActReqDelThrCrsTch Request the removal of a thread of forum of teachers of the course - 1201. ActReqDelThrDegUsr Request the removal of a thread of forum of users of the degree - 1202. ActReqDelThrDegTch Request the removal of a thread of forum of teachers of the degree - 1203. ActReqDelThrCtrUsr Request the removal of a thread of forum of users of centre - 1204. ActReqDelThrCtrTch Request the removal of a thread of forum of teachers of centre - 1205. ActReqDelThrInsUsr Request the removal of a thread of forum of users of the institution - 1206. ActReqDelThrInsTch Request the removal of a thread of forum of teachers of the institution - 1207. ActReqDelThrGenUsr Request the removal of a thread of forum of users general - 1208. ActReqDelThrGenTch Request the removal of a thread of forum of teachers general - 1209. ActReqDelThrSWAUsr Request the removal of a thread of forum of users of the platform - 1210. ActReqDelThrSWATch Request the removal of a thread of forum of teachers of the platform - 1211. ActDelThrForCrsUsr Remove a thread of forum of users of the course - 1212. ActDelThrForCrsTch Remove a thread of forum of teachers of the course - 1213. ActDelThrForDegUsr Remove a thread of forum of users of the degree - 1214. ActDelThrForDegTch Remove a thread of forum of teachers of the degree - 1215. ActDelThrForCtrUsr Remove a thread of forum of users of centre - 1216. ActDelThrForCtrTch Remove a thread of forum of teachers of centre - 1217. ActDelThrForInsUsr Remove a thread of forum of users of the institution - 1218. ActDelThrForInsTch Remove a thread of forum of teachers of the institution - 1219. ActDelThrForGenUsr Remove a thread of forum of users general - 1220. ActDelThrForGenTch Remove a thread of forum of teachers general - 1221. ActDelThrForSWAUsr Remove a thread of forum of users of the platform - 1222. ActDelThrForSWATch Remove a thread of forum of teachers of the platform - 1223. ActCutThrForCrsUsr Cut a thread of forum of users of the course - 1224. ActCutThrForCrsTch Cut a thread of forum of teachers of the course - 1225. ActCutThrForDegUsr Cut a thread of forum of users of the degree - 1226. ActCutThrForDegTch Cut a thread of forum of teachers of the degree - 1227. ActCutThrForCtrUsr Cut a thread of forum of users of centre - 1228. ActCutThrForCtrTch Cut a thread of forum of teachers of centre - 1229. ActCutThrForInsUsr Cut a thread of forum of users of the institution - 1230. ActCutThrForInsTch Cut a thread of forum of teachers of the institution - 1231. ActCutThrForGenUsr Cut a thread of forum of users general - 1232. ActCutThrForGenTch Cut a thread of forum of teachers general - 1233. ActCutThrForSWAUsr Cut a thread of forum of users of the platform - 1234. ActCutThrForSWATch Cut a thread of forum of teachers of the platform - 1235. ActPasThrForCrsUsr Paste a thread of forum of users of the course - 1236. ActPasThrForCrsTch Paste a thread of forum of teachers of the course - 1237. ActPasThrForDegUsr Paste a thread of forum of users of the degree - 1238. ActPasThrForDegTch Paste a thread of forum of teachers of the degree - 1239. ActPasThrForCtrUsr Paste a thread of forum of users of centre - 1240. ActPasThrForCtrTch Paste a thread of forum of teachers of centre - 1241. ActPasThrForInsUsr Paste a thread of forum of users of the institution - 1242. ActPasThrForInsTch Paste a thread of forum of teachers of the institution - 1243. ActPasThrForGenUsr Paste a thread of forum of users general - 1244. ActPasThrForGenTch Paste a thread of forum of teachers general - 1245. ActPasThrForSWAUsr Paste a thread of forum of users of the platform - 1246. ActPasThrForSWATch Paste a thread of forum of teachers of the platform - 1247. ActDelPstForCrsUsr Remove a message of forum of users of the course - 1248. ActDelPstForCrsTch Remove a message of forum of teachers of the course - 1249. ActDelPstForDegUsr Remove a message of forum of users of the degree - 1250. ActDelPstForDegTch Remove a message of forum of teachers of the degree - 1251. ActDelPstForCtrUsr Remove a message of forum of users of centre - 1252. ActDelPstForCtrTch Remove a message of forum of teachers of centre - 1253. ActDelPstForInsUsr Remove a message of forum of users of the institution - 1254. ActDelPstForInsTch Remove a message of forum of teachers of the institution - 1255. ActDelPstForGenUsr Remove a message of forum of users general - 1256. ActDelPstForGenTch Remove a message of forum of teachers general - 1257. ActDelPstForSWAUsr Remove a message of forum of users of the platform - 1258. ActDelPstForSWATch Remove a message of forum of teachers of the platform - 1259. ActEnbPstForCrsUsr Enable a message of forum of users of the course - 1260. ActEnbPstForCrsTch Enable a message of forum of teachers of the course - 1261. ActEnbPstForDegUsr Enable a message of forum of users of the degree - 1262. ActEnbPstForDegTch Enable a message of forum of teachers of the degree - 1263. ActEnbPstForCtrUsr Enable a message of forum of users of centre - 1264. ActEnbPstForCtrTch Enable a message of forum of teachers of centre - 1265. ActEnbPstForInsUsr Enable a message of forum of users of the institution - 1266. ActEnbPstForInsTch Enable a message of forum of teachers of the institution - 1267. ActEnbPstForGenUsr Enable a message of forum of users general - 1268. ActEnbPstForGenTch Enable a message of forum of teachers general - 1269. ActEnbPstForSWAUsr Enable a message of forum of users of the platform - 1270. ActEnbPstForSWATch Enable a message of forum of teachers of the platform - 1271. ActDisPstForCrsUsr Disable a message of forum of users of the course - 1272. ActDisPstForCrsTch Disable a message of forum of teachers of the course - 1273. ActDisPstForDegUsr Disable a message of forum of users of the degree - 1274. ActDisPstForDegTch Disable a message of forum of teachers of the degree - 1275. ActDisPstForCtrUsr Disable a message of forum of users of centre - 1276. ActDisPstForCtrTch Disable a message of forum of teachers of centre - 1277. ActDisPstForInsUsr Disable a message of forum of users of the institution - 1278. ActDisPstForInsTch Disable a message of forum of teachers of the institution - 1279. ActDisPstForGenUsr Disable a message of forum of users general - 1280. ActDisPstForGenTch Disable a message of forum of teachers general - 1281. ActDisPstForSWAUsr Disable a message of forum of users of the platform - 1282. ActDisPstForSWATch Disable a message of forum of teachers of the platform - - 1283. ActCht Enter in a chat room to chat - - 1284. ActRcvMsgUsr Sent/Receive a message of a user - 1285. ActReqDelAllSntMsg Request the removal of todos the messages sent to other users - 1286. ActReqDelAllRcvMsg Request the removal of todos the messages received from other users - 1287. ActDelAllSntMsg Remove todos the messages sent to other users - 1288. ActDelAllRcvMsg Remove todos the messages received from other users - 1289. ActDelSntMsg Remove a message sent to other users - 1290. ActDelRcvMsg Remove a message received from other user - 1291. ActExpSntMsg See (expand) sent message - 1292. ActExpRcvMsg See (expand) received message - 1293. ActConSntMsg Hide (contract) sent message - 1294. ActConRcvMsg Hide (contract) received message - 1295. ActLstBanUsr List banned users - 1296. ActBanUsrMsg Ban the sender of a message when showing received messages - 1297. ActUnbUsrMsg Unban the sender of a message when showing received messages - 1298. ActUnbUsrLst Unban a user when listing banned users - -Statistics: - 1299. ActReqUseGbl Request showing use of the platform - 1300. ActSeePhoDeg Show a class photo with the average photos of the students of each degree - 1301. ActReqStaCrs Request statistics of courses - 1302. ActReqAccGbl Request query of clicks to the complete platform - 1303. ActReqMyUsgRep Request my usage report - 1304. ActMFUAct Show most frequently used actions - - 1305. ActSeeUseGbl Show use of the platform - 1306. ActPrnPhoDeg Show vista of impresión of the class photo with the average photos of the students of each degree. - 1307. ActCalPhoDeg Compute the average photos of the students of each degree - 1308. ActSeeAccGbl Query clicks to the complete platform - 1309. ActReqAccCrs Request query of clicks in the course - 1310. ActSeeAccCrs Query clicks to current course - 1311. ActSeeAllStaCrs Show statistics of courses - - 1312. ActLstClk List last clicks - 1313. ActRefLstClk Refresh last clicks in real time via AJAX - - 1314. ActSeeMyUsgRep Show my usage report - -*/ #define Act_DEFAULT_ACTION_AFTER_LOGIN ActSeeSocTmlGbl @@ -2289,7 +1631,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActSeeMyAgd ] = {1602, 3,TabPrf,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ShowMyAgenda ,"calendar" }, [ActFrmMyAcc ] = { 36, 4,TabPrf,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_ShowFormMyAccount ,"at" }, [ActReqEdiRecSha ] = { 285, 5,TabPrf,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ShowMySharedRecordAndMore ,"card" }, - [ActReqEdiSet ] = { 673, 6,TabPrf,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Set_EditSettings ,"cog" }, + [ActReqEdiSet ] = { 673, 6,TabPrf,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Set_EditSettings ,"cog" }, // 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}, @@ -2343,19 +1685,19 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActReqEdiMyNet ] = {1172,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ShowMySharedRecordAndMore ,NULL}, [ActChgMyNet ] = {1173,-1,TabUnk,ActReqEdiRecSha ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Net_UpdateMyWebsAndSocialNets ,NULL}, - [ActChgThe ] = { 841,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,The_ChangeTheme ,Set_EditSettings ,NULL}, + [ActChgThe ] = { 841,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,The_ChangeTheme ,Set_EditSettings ,NULL}, [ActReqChgLan ] = { 992,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lan_AskChangeLanguage ,NULL}, - [ActChgLan ] = { 654,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Lan_ChangeLanguage ,Set_EditSettings ,NULL}, - [ActChg1stDay ] = {1484,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Cal_ChangeFirstDayOfWeek ,Set_EditSettings ,NULL}, - [ActChgDatFmt ] = {1638,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_ChangeDateFormat ,Set_EditSettings ,NULL}, - [ActChgCol ] = { 674,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Set_ChangeSideCols ,Set_EditSettings ,NULL}, - [ActChgIco ] = {1092,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Ico_ChangeIconSet ,Set_EditSettings ,NULL}, - [ActChgMnu ] = {1243,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Mnu_ChangeMenu ,Set_EditSettings ,NULL}, + [ActChgLan ] = { 654,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Lan_ChangeLanguage ,Set_EditSettings ,NULL}, + [ActChg1stDay ] = {1484,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Cal_ChangeFirstDayOfWeek ,Set_EditSettings ,NULL}, + [ActChgDatFmt ] = {1638,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_ChangeDateFormat ,Set_EditSettings ,NULL}, + [ActChgCol ] = { 674,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Set_ChangeSideCols ,Set_EditSettings ,NULL}, + [ActChgIco ] = {1092,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Ico_ChangeIconSet ,Set_EditSettings ,NULL}, + [ActChgMnu ] = {1243,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Mnu_ChangeMenu ,Set_EditSettings ,NULL}, [ActChgPriPho ] = { 774,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pho_ChangePhotoVisibility ,NULL}, [ActChgBasPriPrf ] = {1404,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ChangeBasicProfileVis ,NULL}, [ActChgExtPriPrf ] = {1765,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prf_ChangeExtendedProfileVis ,NULL}, [ActChgCooPrf ] = {1764,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Coo_ChangeMyPrefsCookies ,NULL}, - [ActChgNtfPrf ] = { 775,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Ntf_ChangeNotifyEvents ,Set_EditSettings ,NULL}, + [ActChgNtfPrf ] = { 775,-1,TabUnk,ActReqEdiSet ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Ntf_ChangeNotifyEvents ,Set_EditSettings ,NULL}, [ActPrnUsrQR ] = {1022,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_PrintUsrQRCode ,NULL}, @@ -2412,7 +1754,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActLstStdAll, // #42 -1, // #43 (obsolete action) ActEdiSylLec, // #44 - ActEdiCrsTT, // #45 + ActEdiCrsTT, // #45 -1, // #46 (obsolete action) -1, // #47 (obsolete action) ActChgTut, // #48 @@ -2420,7 +1762,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un -1, // #50 (obsolete action) ActSeeChtRms, // #51 ActCht, // #52 - ActChgCrsTT, // #53 + ActChgCrsTT, // #53 ActSeeFAQ, // #54 -1, // #55 (obsolete action) -1, // #56 (obsolete action) @@ -2452,7 +1794,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un -1, // #82 (obsolete action) -1, // #83 (obsolete action) ActSeeUseGbl, // #84 - ActSeeAllExaAnn, // #85 + ActSeeAllExaAnn, // #85 -1, // #86 (obsolete action) ActRemAllStdCrs, // #87 ActReqRemAllStdCrs, // #88 @@ -2519,7 +1861,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un -1, // #149 (obsolete action) ActFrmCreWrkUsr, // #150 -1, // #151 (obsolete action) - ActPrnCrsTT, // #152 + ActPrnCrsTT, // #152 ActRcvFilBrfCla, // #153 -1, // #154 (obsolete action) ActRemFilBrf, // #155 diff --git a/swad_centre.c b/swad_centre.c index 6eee9e52..cd6c2b42 100644 --- a/swad_centre.c +++ b/swad_centre.c @@ -271,7 +271,7 @@ static void Ctr_ListCentres (void) Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE); Str_FreeString (); - if (Gbl.Hierarchy.Ins.Ctrs.Num) // There are centres in the current institution + if (Gbl.Hierarchy.Ctrs.Num) // There are centres in the current institution { /***** Begin table *****/ HTM_TABLE_BeginWideMarginPadding (2); @@ -279,9 +279,9 @@ static void Ctr_ListCentres (void) /***** Write all the centres and their nuber of teachers *****/ for (NumCtr = 0; - NumCtr < Gbl.Hierarchy.Ins.Ctrs.Num; + NumCtr < Gbl.Hierarchy.Ctrs.Num; NumCtr++) - Ctr_ListOneCentreForSeeing (&(Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr]),NumCtr + 1); + Ctr_ListOneCentreForSeeing (&(Gbl.Hierarchy.Ctrs.Lst[NumCtr]),NumCtr + 1); /***** End table *****/ HTM_TABLE_End (); @@ -293,7 +293,7 @@ static void Ctr_ListCentres (void) if (Ctr_CheckIfICanCreateCentres ()) { Frm_StartForm (ActEdiCtr); - Btn_PutConfirmButton (Gbl.Hierarchy.Ins.Ctrs.Num ? Txt_Create_another_centre : + Btn_PutConfirmButton (Gbl.Hierarchy.Ctrs.Num ? Txt_Create_another_centre : Txt_Create_centre); Frm_EndForm (); } @@ -438,11 +438,11 @@ static void Ctr_ListOneCentreForSeeing (struct Centre *Ctr,unsigned NumCtr) static void Ctr_GetParamCtrOrder (void) { - Gbl.Hierarchy.Ins.Ctrs.SelectedOrder = (Ctr_Order_t) - Par_GetParToUnsignedLong ("Order", - 0, - Ctr_NUM_ORDERS - 1, - (unsigned long) Ctr_ORDER_DEFAULT); + Gbl.Hierarchy.Ctrs.SelectedOrder = (Ctr_Order_t) + Par_GetParToUnsignedLong ("Order", + 0, + Ctr_NUM_ORDERS - 1, + (unsigned long) Ctr_ORDER_DEFAULT); } /*****************************************************************************/ @@ -471,7 +471,7 @@ static void Ctr_EditCentresInternal (void) Plc_GetListPlaces (); /***** Get list of centres *****/ - Gbl.Hierarchy.Ins.Ctrs.SelectedOrder = Ctr_ORDER_BY_CENTRE; + Gbl.Hierarchy.Ctrs.SelectedOrder = Ctr_ORDER_BY_CENTRE; Ctr_GetFullListOfCentres (Gbl.Hierarchy.Ins.InsCod); /***** Write menu to select country and institution *****/ @@ -488,7 +488,7 @@ static void Ctr_EditCentresInternal (void) Ctr_PutFormToCreateCentre (); /***** List current centres *****/ - if (Gbl.Hierarchy.Ins.Ctrs.Num) + if (Gbl.Hierarchy.Ctrs.Num) Ctr_ListCentresForEdition (); /***** End box *****/ @@ -560,19 +560,19 @@ void Ctr_GetBasicListOfCentres (long InsCod) if (NumRows) // Centres found... { // NumRows should be equal to Deg->NumCourses - Gbl.Hierarchy.Ins.Ctrs.Num = (unsigned) NumRows; + Gbl.Hierarchy.Ctrs.Num = (unsigned) NumRows; /***** Create list with courses in degree *****/ - if ((Gbl.Hierarchy.Ins.Ctrs.Lst = (struct Centre *) calloc (NumRows, + if ((Gbl.Hierarchy.Ctrs.Lst = (struct Centre *) calloc (NumRows, sizeof (struct Centre))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the centres *****/ for (NumCtr = 0; - NumCtr < Gbl.Hierarchy.Ins.Ctrs.Num; + NumCtr < Gbl.Hierarchy.Ctrs.Num; NumCtr++) { - Ctr = &(Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr]); + Ctr = &(Gbl.Hierarchy.Ctrs.Lst[NumCtr]); /* Get centre data */ row = mysql_fetch_row (mysql_res); @@ -580,14 +580,10 @@ void Ctr_GetBasicListOfCentres (long InsCod) /* Reset number of users who claim to belong to this centre */ Ctr->NumUsrsWhoClaimToBelongToCtr.Valid = false; - - /* Reset other fields */ - Ctr->Degs.Num = 0; - Ctr->Degs.Lst = NULL; } } else - Gbl.Hierarchy.Ins.Ctrs.Num = 0; + Gbl.Hierarchy.Ctrs.Num = 0; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -648,24 +644,24 @@ void Ctr_GetFullListOfCentres (long InsCod) " (SELECT DISTINCT CtrCod FROM usr_data))" " ORDER BY %s", InsCod,InsCod, - OrderBySubQuery[Gbl.Hierarchy.Ins.Ctrs.SelectedOrder]); + OrderBySubQuery[Gbl.Hierarchy.Ctrs.SelectedOrder]); if (NumRows) // Centres found... { // NumRows should be equal to Deg->NumCourses - Gbl.Hierarchy.Ins.Ctrs.Num = (unsigned) NumRows; + Gbl.Hierarchy.Ctrs.Num = (unsigned) NumRows; /***** Create list with courses in degree *****/ - if ((Gbl.Hierarchy.Ins.Ctrs.Lst = (struct Centre *) calloc (NumRows, + if ((Gbl.Hierarchy.Ctrs.Lst = (struct Centre *) calloc (NumRows, sizeof (struct Centre))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the centres *****/ for (NumCtr = 0; - NumCtr < Gbl.Hierarchy.Ins.Ctrs.Num; + NumCtr < Gbl.Hierarchy.Ctrs.Num; NumCtr++) { - Ctr = &(Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr]); + Ctr = &(Gbl.Hierarchy.Ctrs.Lst[NumCtr]); /* Get centre data */ row = mysql_fetch_row (mysql_res); @@ -675,14 +671,10 @@ void Ctr_GetFullListOfCentres (long InsCod) Ctr->NumUsrsWhoClaimToBelongToCtr.Valid = false; if (sscanf (row[11],"%u",&(Ctr->NumUsrsWhoClaimToBelongToCtr.NumUsrs)) == 1) Ctr->NumUsrsWhoClaimToBelongToCtr.Valid = true; - - /* Reset other fields */ - Ctr->Degs.Num = 0; - Ctr->Degs.Lst = NULL; } } else - Gbl.Hierarchy.Ins.Ctrs.Num = 0; + Gbl.Hierarchy.Ctrs.Num = 0; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -707,8 +699,6 @@ bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr) Ctr->ShrtName[0] = '\0'; Ctr->FullName[0] = '\0'; Ctr->WWW[0] = '\0'; - Ctr->Degs.Num = 0; - Ctr->Degs.Lst = NULL; Ctr->NumUsrsWhoClaimToBelongToCtr.Valid = false; /***** Check if centre code is correct *****/ @@ -857,12 +847,12 @@ void Ctr_GetShortNameOfCentreByCod (struct Centre *Ctr) void Ctr_FreeListCentres (void) { - if (Gbl.Hierarchy.Ins.Ctrs.Lst) + if (Gbl.Hierarchy.Ctrs.Lst) { /***** Free memory used by the list of courses in degree *****/ - free (Gbl.Hierarchy.Ins.Ctrs.Lst); - Gbl.Hierarchy.Ins.Ctrs.Lst = NULL; - Gbl.Hierarchy.Ins.Ctrs.Num = 0; + free (Gbl.Hierarchy.Ctrs.Lst); + Gbl.Hierarchy.Ctrs.Lst = NULL; + Gbl.Hierarchy.Ctrs.Num = 0; } } @@ -958,10 +948,10 @@ static void Ctr_ListCentresForEdition (void) /***** Write all the centres *****/ for (NumCtr = 0; - NumCtr < Gbl.Hierarchy.Ins.Ctrs.Num; + NumCtr < Gbl.Hierarchy.Ctrs.Num; NumCtr++) { - Ctr = &Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr]; + Ctr = &Gbl.Hierarchy.Ctrs.Lst[NumCtr]; ICanEdit = Ctr_CheckIfICanEditACentre (Ctr); NumUsrsInCrssOfCtr = Usr_GetNumUsrsInCrssOfCtr (Rol_UNK,Ctr->CtrCod); // Here Rol_UNK means "all users" @@ -1734,13 +1724,13 @@ static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable) Order == Ctr_ORDER_BY_CENTRE ? "BT_LINK LM TIT_TBL" : "BT_LINK RM TIT_TBL", NULL); - if (Order == Gbl.Hierarchy.Ins.Ctrs.SelectedOrder) + if (Order == Gbl.Hierarchy.Ctrs.SelectedOrder) HTM_U_Begin (); } HTM_Txt (Txt_CENTRES_ORDER[Order]); if (OrderSelectable) { - if (Order == Gbl.Hierarchy.Ins.Ctrs.SelectedOrder) + if (Order == Gbl.Hierarchy.Ctrs.SelectedOrder) HTM_U_End (); HTM_BUTTON_End (); Frm_EndForm (); @@ -2122,8 +2112,6 @@ static void Ctr_EditingCentreConstructor (void) Ctr_EditingCtr->ShrtName[0] = '\0'; Ctr_EditingCtr->FullName[0] = '\0'; Ctr_EditingCtr->WWW[0] = '\0'; - Ctr_EditingCtr->Degs.Num = 0; - Ctr_EditingCtr->Degs.Lst = NULL; } static void Ctr_EditingCentreDestructor (void) diff --git a/swad_centre.h b/swad_centre.h index 7d369621..61cf994a 100644 --- a/swad_centre.h +++ b/swad_centre.h @@ -71,7 +71,6 @@ struct Centre char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; - struct ListDegrees Degs; // List of degrees in this centre struct { bool Valid; @@ -87,6 +86,13 @@ typedef enum } Ctr_Order_t; #define Ctr_ORDER_DEFAULT Ctr_ORDER_BY_CENTRE +struct ListCentres + { + unsigned Num; // Number of centres + struct Centre *Lst; // List of centres + Ctr_Order_t SelectedOrder; // Order of centres + }; + /*****************************************************************************/ /****************************** Public prototypes ****************************/ /*****************************************************************************/ diff --git a/swad_centre_config.c b/swad_centre_config.c index 2895bb9e..7382a210 100644 --- a/swad_centre_config.c +++ b/swad_centre_config.c @@ -591,11 +591,11 @@ static void CtrCfg_Institution (bool PrintView,bool PutForm) "id=\"OthInsCod\" name=\"OthInsCod\"" " class=\"INPUT_SHORT_NAME\""); for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod, - Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod == Gbl.Hierarchy.Ins.InsCod,false, - "%s",Gbl.Hierarchy.Cty.Inss.Lst[NumIns].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Inss.Lst[NumIns].InsCod, + Gbl.Hierarchy.Inss.Lst[NumIns].InsCod == Gbl.Hierarchy.Ins.InsCod,false, + "%s",Gbl.Hierarchy.Inss.Lst[NumIns].ShrtName); HTM_SELECT_End (); Frm_EndForm (); diff --git a/swad_changelog.h b/swad_changelog.h index bf666a52..13afd4ac 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -492,7 +492,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.112.26 (2020-01-08)" +#define Log_PLATFORM_VERSION "SWAD 19.113 (2020-01-08)" #define CSS_FILE "swad19.112.css" #define JS_FILE "swad19.91.1.js" /* @@ -501,6 +501,9 @@ ps2pdf source.ps destination.pdf // TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué? // TODO: Mapas más estrechos en móvil + Version 19.113: Jan 08, 2020 Code refactoring related to hierarchy. + Changing action descriptions from database to swad-core. Not finished. (278076 lines) + Version 19.112.27:Jan 08, 2020 Changing action descriptions from database to swad-core. Not finished. (278715 lines) Version 19.112.26:Jan 08, 2020 Fixed bug in list of centres. (278755 lines) Version 19.112.25:Jan 07, 2020 Changing action descriptions from database to swad-core. Not finished. (278670 lines) Version 19.112.24:Jan 07, 2020 Fixed bug in edition of institutions. (278815 lines) diff --git a/swad_country.c b/swad_country.c index 896c3870..99c63085 100644 --- a/swad_country.c +++ b/swad_country.c @@ -235,9 +235,9 @@ void Cty_ListCountries2 (void) /***** Write all the countries and their number of users and institutions *****/ for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) - Cty_ListOneCountryForSeeing (&Gbl.Hierarchy.Sys.Ctys.Lst[NumCty],NumCty + 1); + Cty_ListOneCountryForSeeing (&Gbl.Hierarchy.Ctys.Lst[NumCty],NumCty + 1); /***** Separation row *****/ HTM_TR_Begin (NULL); @@ -361,13 +361,13 @@ static void Cty_PutHeadCountriesForSeeing (bool OrderSelectable) Frm_StartForm (ActSeeCty); Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order); HTM_BUTTON_SUBMIT_Begin (Txt_COUNTRIES_HELP_ORDER[Order],"BT_LINK TIT_TBL",NULL); - if (Order == Gbl.Hierarchy.Sys.Ctys.SelectedOrder) + if (Order == Gbl.Hierarchy.Ctys.SelectedOrder) HTM_U_Begin (); } HTM_Txt (Txt_COUNTRIES_ORDER[Order]); if (OrderSelectable) { - if (Order == Gbl.Hierarchy.Sys.Ctys.SelectedOrder) + if (Order == Gbl.Hierarchy.Ctys.SelectedOrder) HTM_U_End (); HTM_BUTTON_End (); Frm_EndForm (); @@ -589,17 +589,17 @@ void Cty_WriteScriptGoogleGeochart (void) /***** Write all the countries and their number of users and institutions *****/ for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) { - NumUsrsWhoClaimToBelongToCty = Usr_GetNumUsrsWhoClaimToBelongToCty (&Gbl.Hierarchy.Sys.Ctys.Lst[NumCty]); + NumUsrsWhoClaimToBelongToCty = Usr_GetNumUsrsWhoClaimToBelongToCty (&Gbl.Hierarchy.Ctys.Lst[NumCty]); if (NumUsrsWhoClaimToBelongToCty) { /* Write data of this country */ HTM_TxtF (" ['%s', %u, %u],\n", - Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].Alpha2, + Gbl.Hierarchy.Ctys.Lst[NumCty].Alpha2, NumUsrsWhoClaimToBelongToCty, - Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].Inss.Num); + Ins_GetNumInssInCty (Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod)); if (NumUsrsWhoClaimToBelongToCty > MaxUsrsInCountry) MaxUsrsInCountry = NumUsrsWhoClaimToBelongToCty; NumCtysWithUsrs++; @@ -628,11 +628,11 @@ void Cty_WriteScriptGoogleGeochart (void) static void Cty_GetParamCtyOrder (void) { - Gbl.Hierarchy.Sys.Ctys.SelectedOrder = (Cty_Order_t) - Par_GetParToUnsignedLong ("Order", - 0, - Cty_NUM_ORDERS - 1, - (unsigned long) Cty_ORDER_DEFAULT); + Gbl.Hierarchy.Ctys.SelectedOrder = (Cty_Order_t) + Par_GetParToUnsignedLong ("Order", + 0, + Cty_NUM_ORDERS - 1, + (unsigned long) Cty_ORDER_DEFAULT); } /*****************************************************************************/ @@ -657,7 +657,7 @@ static void Cty_EditCountriesInternal (void) extern const char *Txt_Countries; /***** Get list of countries *****/ - Gbl.Hierarchy.Sys.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY; + Gbl.Hierarchy.Ctys.SelectedOrder = Cty_ORDER_BY_COUNTRY; Cty_GetFullListOfCountries (); /***** Write menu to select country *****/ @@ -671,7 +671,7 @@ static void Cty_EditCountriesInternal (void) Cty_PutFormToCreateCountry (); /***** Forms to edit current countries *****/ - if (Gbl.Hierarchy.Sys.Ctys.Num) + if (Gbl.Hierarchy.Ctys.Num) Cty_ListCountriesForEdition (); /***** End box *****/ @@ -730,19 +730,19 @@ void Cty_GetBasicListOfCountries (void) Lan_STR_LANG_ID[Gbl.Prefs.Language]); if (NumRows) // Countries found... { - Gbl.Hierarchy.Sys.Ctys.Num = (unsigned) NumRows; + Gbl.Hierarchy.Ctys.Num = (unsigned) NumRows; /***** Create list with countries *****/ - if ((Gbl.Hierarchy.Sys.Ctys.Lst = (struct Country *) + if ((Gbl.Hierarchy.Ctys.Lst = (struct Country *) calloc (NumRows,sizeof (struct Country))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the countries *****/ for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) { - Cty = &(Gbl.Hierarchy.Sys.Ctys.Lst[NumCty]); + Cty = &(Gbl.Hierarchy.Ctys.Lst[NumCty]); /* Get next country */ row = mysql_fetch_row (mysql_res); @@ -769,14 +769,10 @@ void Cty_GetBasicListOfCountries (void) /* Reset number of users who claim to belong to country */ Cty->NumUsrsWhoClaimToBelongToCty.Valid = false; - - /* Reset other fields */ - Cty->Inss.Num = 0; - Cty->Inss.Lst = NULL; } } else - Gbl.Hierarchy.Sys.Ctys.Num = 0; + Gbl.Hierarchy.Ctys.Num = 0; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -843,7 +839,7 @@ void Cty_GetFullListOfCountries (void) } /* Build order subquery */ - if (asprintf (&OrderBySubQuery,OrderBySubQueryFmt[Gbl.Hierarchy.Sys.Ctys.SelectedOrder], + if (asprintf (&OrderBySubQuery,OrderBySubQueryFmt[Gbl.Hierarchy.Ctys.SelectedOrder], Lan_STR_LANG_ID[Gbl.Prefs.Language]) < 0) Lay_NotEnoughMemoryExit (); @@ -868,19 +864,19 @@ void Cty_GetFullListOfCountries (void) if (NumRows) // Countries found... { - Gbl.Hierarchy.Sys.Ctys.Num = (unsigned) NumRows; + Gbl.Hierarchy.Ctys.Num = (unsigned) NumRows; /***** Create list with countries *****/ - if ((Gbl.Hierarchy.Sys.Ctys.Lst = (struct Country *) + if ((Gbl.Hierarchy.Ctys.Lst = (struct Country *) calloc (NumRows,sizeof (struct Country))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the countries *****/ for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) { - Cty = &(Gbl.Hierarchy.Sys.Ctys.Lst[NumCty]); + Cty = &(Gbl.Hierarchy.Ctys.Lst[NumCty]); /* Get next country */ row = mysql_fetch_row (mysql_res); @@ -909,14 +905,10 @@ void Cty_GetFullListOfCountries (void) if (sscanf (row[1 + Lan_NUM_LANGUAGES * 2 + 1],"%u", &(Cty->NumUsrsWhoClaimToBelongToCty.NumUsrs)) == 1) Cty->NumUsrsWhoClaimToBelongToCty.Valid = true; - - /* Reset other fields */ - Cty->Inss.Num = 0; - Cty->Inss.Lst = NULL; } } else - Gbl.Hierarchy.Sys.Ctys.Num = 0; + Gbl.Hierarchy.Ctys.Num = 0; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -1032,9 +1024,6 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty) Cty->Name[Lan][0] = '\0'; Cty->WWW[Lan][0] = '\0'; } - Cty->Inss.Num = 0; - Cty->Inss.Lst = NULL; - Cty->Inss.SelectedOrder = Ins_ORDER_DEFAULT; Cty->NumUsrsWhoClaimToBelongToCty.Valid = false; /***** Check if country code is correct *****/ @@ -1154,12 +1143,12 @@ void Cty_GetCountryName (long CtyCod,Lan_Language_t Language, void Cty_FreeListCountries (void) { - if (Gbl.Hierarchy.Sys.Ctys.Lst) + if (Gbl.Hierarchy.Ctys.Lst) { /***** Free memory used by the list of courses in institution *****/ - free (Gbl.Hierarchy.Sys.Ctys.Lst); - Gbl.Hierarchy.Sys.Ctys.Lst = NULL; - Gbl.Hierarchy.Sys.Ctys.Num = 0; + free (Gbl.Hierarchy.Ctys.Lst); + Gbl.Hierarchy.Ctys.Lst = NULL; + Gbl.Hierarchy.Ctys.Num = 0; } } @@ -1181,10 +1170,10 @@ static void Cty_ListCountriesForEdition (void) /***** Write all countries *****/ for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) { - Cty = &Gbl.Hierarchy.Sys.Ctys.Lst[NumCty]; + Cty = &Gbl.Hierarchy.Ctys.Lst[NumCty]; NumInssInCty = Ins_GetNumInssInCty (Cty->CtyCod); HTM_TR_Begin (NULL); @@ -2059,9 +2048,6 @@ static void Cty_EditingCountryConstructor (void) Cty_EditingCty->Name[Lan][0] = '\0'; Cty_EditingCty->WWW [Lan][0] = '\0'; } - Cty_EditingCty->Inss.Num = 0; - Cty_EditingCty->Inss.Lst = NULL; - Cty_EditingCty->Inss.SelectedOrder = Ins_ORDER_DEFAULT; Cty_EditingCty->NumUsrsWhoClaimToBelongToCty.Valid = false; } diff --git a/swad_country.h b/swad_country.h index 5d25753e..1aa9b26c 100644 --- a/swad_country.h +++ b/swad_country.h @@ -51,12 +51,6 @@ struct Country char Alpha2[2 + 1]; char Name[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1]; char WWW [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]; - struct - { - unsigned Num; // Number of institutions in this country - struct Instit *Lst; // List of institutions in this country - Ins_Order_t SelectedOrder; - } Inss; struct { bool Valid; @@ -72,6 +66,13 @@ typedef enum } Cty_Order_t; #define Cty_ORDER_DEFAULT Cty_ORDER_BY_NUM_USRS +struct ListCountries + { + unsigned Num; // Number of countries + struct Country *Lst; // List of countries + Cty_Order_t SelectedOrder; // Order of countries + }; + /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ diff --git a/swad_course.c b/swad_course.c index f2f3cd84..d5fd6ddc 100644 --- a/swad_course.c +++ b/swad_course.c @@ -676,7 +676,7 @@ static void Crs_GetListCrssInCurrentDeg (Crs_WhatCourses_t WhatCourses) if (NumCrss) // Courses found... { /***** Create list with courses in degree *****/ - if ((Gbl.Hierarchy.Deg.Crss.Lst = (struct Course *) calloc ((size_t) NumCrss, + if ((Gbl.Hierarchy.Crss.Lst = (struct Course *) calloc ((size_t) NumCrss, sizeof (struct Course))) == NULL) Lay_NotEnoughMemoryExit (); @@ -685,7 +685,7 @@ static void Crs_GetListCrssInCurrentDeg (Crs_WhatCourses_t WhatCourses) NumCrs < NumCrss; NumCrs++) { - Crs = &Gbl.Hierarchy.Deg.Crss.Lst[NumCrs]; + Crs = &Gbl.Hierarchy.Crss.Lst[NumCrs]; /* Get next course */ row = mysql_fetch_row (mysql_res); @@ -693,7 +693,7 @@ static void Crs_GetListCrssInCurrentDeg (Crs_WhatCourses_t WhatCourses) } } - Gbl.Hierarchy.Deg.Crss.Num = NumCrss; + Gbl.Hierarchy.Crss.Num = NumCrss; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -705,11 +705,11 @@ static void Crs_GetListCrssInCurrentDeg (Crs_WhatCourses_t WhatCourses) void Crs_FreeListCoursesInCurrentDegree (void) { - if (Gbl.Hierarchy.Deg.Crss.Lst) + if (Gbl.Hierarchy.Crss.Lst) { /***** Free memory used by the list of courses in degree *****/ - free (Gbl.Hierarchy.Deg.Crss.Lst); - Gbl.Hierarchy.Deg.Crss.Lst = NULL; + free (Gbl.Hierarchy.Crss.Lst); + Gbl.Hierarchy.Crss.Lst = NULL; } } @@ -805,7 +805,7 @@ static void Crs_ListCourses (void) Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); Str_FreeString (); - if (Gbl.Hierarchy.Deg.Crss.Num) // There are courses in the current degree + if (Gbl.Hierarchy.Crss.Num) // There are courses in the current degree { /***** Begin table *****/ HTM_TABLE_BeginWideMarginPadding (2); @@ -829,7 +829,7 @@ static void Crs_ListCourses (void) if (Crs_CheckIfICanCreateCourses ()) { Frm_StartForm (ActEdiCrs); - Btn_PutConfirmButton (Gbl.Hierarchy.Deg.Crss.Num ? Txt_Create_another_course : + Btn_PutConfirmButton (Gbl.Hierarchy.Crss.Num ? Txt_Create_another_course : Txt_Create_course); Frm_EndForm (); } @@ -893,10 +893,10 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year) /***** Write all the courses of this year *****/ for (NumCrs = 0; - NumCrs < Gbl.Hierarchy.Deg.Crss.Num; + NumCrs < Gbl.Hierarchy.Crss.Num; NumCrs++) { - Crs = &(Gbl.Hierarchy.Deg.Crss.Lst[NumCrs]); + Crs = &(Gbl.Hierarchy.Crss.Lst[NumCrs]); if (Crs->Year == Year) // The year of the course is this? { ThisYearHasCourses = true; @@ -1020,7 +1020,7 @@ static void Crs_EditCoursesInternal (void) Crs_PutFormToCreateCourse (); /***** Forms to edit current courses *****/ - if (Gbl.Hierarchy.Deg.Crss.Num) + if (Gbl.Hierarchy.Crss.Num) Crs_ListCoursesForEdition (); /***** End box *****/ @@ -1030,7 +1030,7 @@ static void Crs_EditCoursesInternal (void) Crs_FreeListCoursesInCurrentDegree (); /***** Free list of degrees in this centre *****/ - Deg_FreeListDegs (&Gbl.Hierarchy.Ctr.Degs); + Deg_FreeListDegs (&Gbl.Hierarchy.Degs); } /*****************************************************************************/ @@ -1105,10 +1105,10 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year) /***** List courses of a given year *****/ for (NumCrs = 0; - NumCrs < Gbl.Hierarchy.Deg.Crss.Num; + NumCrs < Gbl.Hierarchy.Crss.Num; NumCrs++) { - Crs = &(Gbl.Hierarchy.Deg.Crss.Lst[NumCrs]); + Crs = &(Gbl.Hierarchy.Crss.Lst[NumCrs]); if (Crs->Year == Year) { ICanEdit = Crs_CheckIfICanEdit (Crs); diff --git a/swad_course.h b/swad_course.h index 56b912ad..182943ed 100644 --- a/swad_course.h +++ b/swad_course.h @@ -87,6 +87,12 @@ struct Course char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; // Full name of course }; +struct ListCourses + { + unsigned Num; // Number of courses + struct Course *Lst; // List of courses + }; + /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ diff --git a/swad_course_config.c b/swad_course_config.c index b54cb831..e6f09308 100644 --- a/swad_course_config.c +++ b/swad_course_config.c @@ -237,16 +237,16 @@ static void CrsCfg_Degree (bool PrintView,bool PutForm) "id=\"OthDegCod\" name=\"OthDegCod\"" " class=\"INPUT_SHORT_NAME\""); for (NumDeg = 0; - NumDeg < Gbl.Hierarchy.Ctr.Degs.Num; + NumDeg < Gbl.Hierarchy.Degs.Num; NumDeg++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctr.Degs.Lst[NumDeg].DegCod, - Gbl.Hierarchy.Ctr.Degs.Lst[NumDeg].DegCod == Gbl.Hierarchy.Deg.DegCod,false, - "%s",Gbl.Hierarchy.Ctr.Degs.Lst[NumDeg].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Degs.Lst[NumDeg].DegCod, + Gbl.Hierarchy.Degs.Lst[NumDeg].DegCod == Gbl.Hierarchy.Deg.DegCod,false, + "%s",Gbl.Hierarchy.Degs.Lst[NumDeg].ShrtName); HTM_SELECT_End (); Frm_EndForm (); /* Free list of degrees of the current centre */ - Deg_FreeListDegs (&Gbl.Hierarchy.Ctr.Degs); + Deg_FreeListDegs (&Gbl.Hierarchy.Degs); } else // I can not move course to another degree { diff --git a/swad_degree.c b/swad_degree.c index 7ae22788..813e3841 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -319,7 +319,7 @@ void Deg_ShowDegsOfCurrentCtr (void) Deg_ListDegrees (); /***** Free list of degrees and centres *****/ - Deg_FreeListDegs (&Gbl.Hierarchy.Ctr.Degs); + Deg_FreeListDegs (&Gbl.Hierarchy.Degs); Ctr_FreeListCentres (); } @@ -350,10 +350,10 @@ static void Deg_ListDegreesForEdition (void) /***** List the degrees *****/ for (NumDeg = 0; - NumDeg < Gbl.Hierarchy.Ctr.Degs.Num; + NumDeg < Gbl.Hierarchy.Degs.Num; NumDeg++) { - Deg = &(Gbl.Hierarchy.Ctr.Degs.Lst[NumDeg]); + Deg = &(Gbl.Hierarchy.Degs.Lst[NumDeg]); NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod); @@ -770,7 +770,7 @@ static void Deg_ListDegrees (void) Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE); Str_FreeString (); - if (Gbl.Hierarchy.Ctr.Degs.Num) // There are degrees in the current centre + if (Gbl.Hierarchy.Degs.Num) // There are degrees in the current centre { /***** Write heading *****/ HTM_TABLE_BeginWideMarginPadding (2); @@ -778,9 +778,9 @@ static void Deg_ListDegrees (void) /***** List the degrees *****/ for (NumDeg = 0; - NumDeg < Gbl.Hierarchy.Ctr.Degs.Num; + NumDeg < Gbl.Hierarchy.Degs.Num; NumDeg++) - Deg_ListOneDegreeForSeeing (&(Gbl.Hierarchy.Ctr.Degs.Lst[NumDeg]),NumDeg + 1); + Deg_ListOneDegreeForSeeing (&(Gbl.Hierarchy.Degs.Lst[NumDeg]),NumDeg + 1); /***** End table *****/ HTM_TABLE_End (); @@ -792,7 +792,7 @@ static void Deg_ListDegrees (void) if (Deg_CheckIfICanCreateDegrees ()) { Frm_StartForm (ActEdiDeg); - Btn_PutConfirmButton (Gbl.Hierarchy.Ctr.Degs.Num ? Txt_Create_another_degree : + Btn_PutConfirmButton (Gbl.Hierarchy.Degs.Num ? Txt_Create_another_degree : Txt_Create_degree); Frm_EndForm (); } @@ -959,7 +959,7 @@ static void Deg_EditDegreesInternal (void) Deg_PutFormToCreateDegree (); /***** Forms to edit current degrees *****/ - if (Gbl.Hierarchy.Ctr.Degs.Num) + if (Gbl.Hierarchy.Degs.Num) Deg_ListDegreesForEdition (); } else // No degree types @@ -979,7 +979,7 @@ static void Deg_EditDegreesInternal (void) DT_FreeListDegreeTypes (); /***** Free list of degrees in the current centre *****/ - Deg_FreeListDegs (&Gbl.Hierarchy.Ctr.Degs); + Deg_FreeListDegs (&Gbl.Hierarchy.Degs); } /*****************************************************************************/ @@ -1080,19 +1080,19 @@ void Deg_GetListDegsInCurrentCtr (void) /***** Count number of rows in result *****/ if (NumRows) // Degrees found... { - Gbl.Hierarchy.Ctr.Degs.Num = (unsigned) NumRows; + Gbl.Hierarchy.Degs.Num = (unsigned) NumRows; /***** Create list with degrees of this centre *****/ - if ((Gbl.Hierarchy.Ctr.Degs.Lst = (struct Degree *) calloc (Gbl.Hierarchy.Ctr.Degs.Num, + if ((Gbl.Hierarchy.Degs.Lst = (struct Degree *) calloc (Gbl.Hierarchy.Degs.Num, sizeof (struct Degree))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the degrees of this centre *****/ for (NumDeg = 0; - NumDeg < Gbl.Hierarchy.Ctr.Degs.Num; + NumDeg < Gbl.Hierarchy.Degs.Num; NumDeg++) { - Deg = &Gbl.Hierarchy.Ctr.Degs.Lst[NumDeg]; + Deg = &Gbl.Hierarchy.Degs.Lst[NumDeg]; /* Get next degree */ row = mysql_fetch_row (mysql_res); @@ -1100,7 +1100,7 @@ void Deg_GetListDegsInCurrentCtr (void) } } else - Gbl.Hierarchy.Ctr.Degs.Num = 0; + Gbl.Hierarchy.Degs.Num = 0; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -1294,8 +1294,6 @@ bool Deg_GetDataOfDegreeByCod (struct Degree *Deg) Deg->ShrtName[0] = '\0'; Deg->FullName[0] = '\0'; Deg->WWW[0] = '\0'; - Deg->Crss.Num = 0; - Deg->Crss.Lst = NULL; /***** Check if degree code is correct *****/ if (Deg->DegCod > 0) @@ -2061,8 +2059,6 @@ static void Deg_EditingDegreeConstructor (void) Deg_EditingDeg->ShrtName[0] = '\0'; Deg_EditingDeg->FullName[0] = '\0'; Deg_EditingDeg->WWW[0] = '\0'; - Deg_EditingDeg->Crss.Num = 0; - Deg_EditingDeg->Crss.Lst = NULL; } static void Deg_EditingDegreeDestructor (void) diff --git a/swad_degree.h b/swad_degree.h index e1f4edcc..fa370a85 100644 --- a/swad_degree.h +++ b/swad_degree.h @@ -76,11 +76,6 @@ struct Degree char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; // Short name of degree char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; // Full name of degree char WWW[Cns_MAX_BYTES_WWW + 1]; - struct - { - unsigned Num; // Number of courses in this degree - struct Course *Lst; // List of courses in this degree - } Crss; }; struct ListDegrees diff --git a/swad_degree_config.c b/swad_degree_config.c index 4177bac9..d1ddd565 100644 --- a/swad_degree_config.c +++ b/swad_degree_config.c @@ -231,11 +231,11 @@ static void DegCfg_Centre (bool PrintView,bool PutForm) "id=\"OthCtrCod\" name=\"OthCtrCod\"" " class=\"INPUT_SHORT_NAME\""); for (NumCtr = 0; - NumCtr < Gbl.Hierarchy.Ins.Ctrs.Num; + NumCtr < Gbl.Hierarchy.Ctrs.Num; NumCtr++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr].CtrCod, - Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr].CtrCod == Gbl.Hierarchy.Ctr.CtrCod,false, - "%s",Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod, + Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod == Gbl.Hierarchy.Ctr.CtrCod,false, + "%s",Gbl.Hierarchy.Ctrs.Lst[NumCtr].ShrtName); HTM_SELECT_End (); Frm_EndForm (); diff --git a/swad_department.c b/swad_department.c index 1fb0d763..12c321d9 100644 --- a/swad_department.c +++ b/swad_department.c @@ -541,11 +541,11 @@ static void Dpt_ListDepartmentsForEdition (void) HTM_OPTION (HTM_Type_STRING,"0",Dpt->InsCod == 0,false, "%s",Txt_Another_institution); for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod, - Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod == Dpt->InsCod,false, - "%s",Gbl.Hierarchy.Cty.Inss.Lst[NumIns].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Inss.Lst[NumIns].InsCod, + Gbl.Hierarchy.Inss.Lst[NumIns].InsCod == Dpt->InsCod,false, + "%s",Gbl.Hierarchy.Inss.Lst[NumIns].ShrtName); HTM_SELECT_End (); Frm_EndForm (); HTM_TD_End (); @@ -910,11 +910,11 @@ static void Dpt_PutFormToCreateDepartment (void) HTM_OPTION (HTM_Type_STRING,"0",Dpt_EditingDpt->InsCod == 0,false, "%s",Txt_Another_institution); for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod, - Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod == Dpt_EditingDpt->InsCod,false, - "%s",Gbl.Hierarchy.Cty.Inss.Lst[NumIns].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Inss.Lst[NumIns].InsCod, + Gbl.Hierarchy.Inss.Lst[NumIns].InsCod == Dpt_EditingDpt->InsCod,false, + "%s",Gbl.Hierarchy.Inss.Lst[NumIns].ShrtName); HTM_SELECT_End (); HTM_TD_End (); diff --git a/swad_enrolment.h b/swad_enrolment.h index d2806d9e..77af5c02 100644 --- a/swad_enrolment.h +++ b/swad_enrolment.h @@ -27,6 +27,7 @@ /********************************** Headers **********************************/ /*****************************************************************************/ +#include "swad_course.h" #include "swad_notification.h" #include "swad_user.h" diff --git a/swad_file_browser.h b/swad_file_browser.h index c2a75770..3ae2934e 100644 --- a/swad_file_browser.h +++ b/swad_file_browser.h @@ -29,6 +29,7 @@ #include // For PATH_MAX +#include "swad_course.h" #include "swad_group.h" #include "swad_notification.h" diff --git a/swad_global.c b/swad_global.c index b9d237d8..73d46846 100644 --- a/swad_global.c +++ b/swad_global.c @@ -217,29 +217,33 @@ void Gbl_InitializeGlobals (void) /***** Reset current hierarchy *****/ Hie_ResetHierarchy (); - Gbl.Hierarchy.Sys.Ctys.Num = 0; - Gbl.Hierarchy.Sys.Ctys.Lst = NULL; - Gbl.Hierarchy.Sys.Ctys.SelectedOrder = Cty_ORDER_DEFAULT; + Gbl.Hierarchy.Ctys.Num = 0; + Gbl.Hierarchy.Ctys.Lst = NULL; + Gbl.Hierarchy.Ctys.SelectedOrder = Cty_ORDER_DEFAULT; - Gbl.Hierarchy.Cty.Inss.Num = 0; - Gbl.Hierarchy.Cty.Inss.Lst = NULL; - Gbl.Hierarchy.Cty.Inss.SelectedOrder = Ins_ORDER_DEFAULT; + Gbl.Hierarchy.Inss.Num = 0; + Gbl.Hierarchy.Inss.Lst = NULL; + Gbl.Hierarchy.Inss.SelectedOrder = Ins_ORDER_DEFAULT; Gbl.Hierarchy.Ins.ShrtName[0] = '\0'; Gbl.Hierarchy.Ins.FullName[0] = '\0'; Gbl.Hierarchy.Ins.WWW[0] = '\0'; - Gbl.Hierarchy.Ins.Ctrs.Num = 0; - Gbl.Hierarchy.Ins.Ctrs.Lst = NULL; - Gbl.Hierarchy.Ins.Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT; + + Gbl.Hierarchy.Ctrs.Num = 0; + Gbl.Hierarchy.Ctrs.Lst = NULL; + Gbl.Hierarchy.Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT; Gbl.Hierarchy.Ctr.ShrtName[0] = '\0'; Gbl.Hierarchy.Ctr.FullName[0] = '\0'; - Gbl.Hierarchy.Ctr.Degs.Num = 0; - Gbl.Hierarchy.Ctr.Degs.Lst = NULL; - Gbl.Hierarchy.Deg.ShrtName[0] = Gbl.Hierarchy.Deg.FullName[0] = '\0'; + Gbl.Hierarchy.Degs.Num = 0; + Gbl.Hierarchy.Degs.Lst = NULL; - Gbl.Hierarchy.Crs.ShrtName[0] = Gbl.Hierarchy.Crs.FullName[0] = '\0'; + Gbl.Hierarchy.Deg.ShrtName[0] = + Gbl.Hierarchy.Deg.FullName[0] = '\0'; + + Gbl.Hierarchy.Crs.ShrtName[0] = + Gbl.Hierarchy.Crs.FullName[0] = '\0'; Gbl.Dpts.Num = 0; Gbl.Dpts.Lst = NULL; @@ -469,7 +473,7 @@ void Gbl_Cleanup (void) Grp_FreeListGrpTypesAndGrps (); Grp_FreeListCodSelectedGrps (); Crs_FreeListCoursesInCurrentDegree (); - Deg_FreeListDegs (&Gbl.Hierarchy.Ctr.Degs); + Deg_FreeListDegs (&Gbl.Hierarchy.Degs); DT_FreeListDegreeTypes (); Ins_FreeListInstitutions (); Ctr_FreeListCentres (); diff --git a/swad_global.h b/swad_global.h index 6966c843..26afc79b 100644 --- a/swad_global.h +++ b/swad_global.h @@ -77,7 +77,6 @@ #include "swad_session.h" #include "swad_survey.h" #include "swad_syllabus.h" -#include "swad_system.h" #include "swad_test.h" #include "swad_timeline.h" #include "swad_timetable.h" @@ -213,11 +212,15 @@ struct Globals { Hie_Level_t Level; // Current level in the hierarchy: system, country, institution, centre, degree or course long Cod; // Code of the current country, institution, centre, degree or course - struct System Sys; // Top level of the hierarchy (system or platform) + struct ListCountries Ctys;// List of countries struct Country Cty; // Current country + struct ListInstits Inss; // List of institutions in current country struct Instit Ins; // Current institution + struct ListCentres Ctrs; // List of centres in current institution struct Centre Ctr; // Current centre + struct ListDegrees Degs; // List of degrees in current centre struct Degree Deg; // Current degree + struct ListCourses Crss; // List of courses in current degree struct Course Crs; // Current course. Aditional info about course is stored in Gbl.Crs. } Hierarchy; struct diff --git a/swad_institution.c b/swad_institution.c index 1b2c74bc..63b825c9 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -300,7 +300,7 @@ static void Ins_ListInstitutions (void) Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); Str_FreeString (); - if (Gbl.Hierarchy.Cty.Inss.Num) // There are institutions in the current country + if (Gbl.Hierarchy.Inss.Num) // There are institutions in the current country { /***** Begin table *****/ HTM_TABLE_BeginWideMarginPadding (2); @@ -308,9 +308,9 @@ static void Ins_ListInstitutions (void) /***** Write all the institutions and their nuber of users *****/ for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) - Ins_ListOneInstitutionForSeeing (&(Gbl.Hierarchy.Cty.Inss.Lst[NumIns]),NumIns + 1); + Ins_ListOneInstitutionForSeeing (&(Gbl.Hierarchy.Inss.Lst[NumIns]),NumIns + 1); /***** End table *****/ HTM_TABLE_End (); @@ -322,7 +322,7 @@ static void Ins_ListInstitutions (void) if (Ins_CheckIfICanCreateInstitutions ()) { Frm_StartForm (ActEdiIns); - Btn_PutConfirmButton (Gbl.Hierarchy.Cty.Inss.Num ? Txt_Create_another_institution : + Btn_PutConfirmButton (Gbl.Hierarchy.Inss.Num ? Txt_Create_another_institution : Txt_Create_institution); Frm_EndForm (); } @@ -481,13 +481,13 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable) Frm_StartForm (ActSeeIns); Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order); HTM_BUTTON_SUBMIT_Begin (Txt_INSTITUTIONS_HELP_ORDER[Order],ClassButton[Order],NULL); - if (Order == Gbl.Hierarchy.Cty.Inss.SelectedOrder) + if (Order == Gbl.Hierarchy.Inss.SelectedOrder) HTM_U_Begin (); } HTM_Txt (Txt_INSTITUTIONS_ORDER[Order]); if (OrderSelectable) { - if (Order == Gbl.Hierarchy.Cty.Inss.SelectedOrder) + if (Order == Gbl.Hierarchy.Inss.SelectedOrder) HTM_U_End (); HTM_BUTTON_End (); Frm_EndForm (); @@ -515,11 +515,11 @@ static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable) static void Ins_GetParamInsOrder (void) { - Gbl.Hierarchy.Cty.Inss.SelectedOrder = (Ins_Order_t) - Par_GetParToUnsignedLong ("Order", - 0, - Ins_NUM_ORDERS - 1, - (unsigned long) Ins_ORDER_DEFAULT); + Gbl.Hierarchy.Inss.SelectedOrder = (Ins_Order_t) + Par_GetParToUnsignedLong ("Order", + 0, + Ins_NUM_ORDERS - 1, + (unsigned long) Ins_ORDER_DEFAULT); } /*****************************************************************************/ @@ -560,7 +560,7 @@ static void Ins_EditInstitutionsInternal (void) Ins_PutFormToCreateInstitution (); /***** Forms to edit current institutions *****/ - if (Gbl.Hierarchy.Cty.Inss.Num) + if (Gbl.Hierarchy.Inss.Num) Ins_ListInstitutionsForEdition (); /***** End box *****/ @@ -626,19 +626,19 @@ void Ins_GetBasicListOfInstitutions (long CtyCod) if (NumRows) // Institutions found... { // NumRows should be equal to Deg->NumCourses - Gbl.Hierarchy.Cty.Inss.Num = (unsigned) NumRows; + Gbl.Hierarchy.Inss.Num = (unsigned) NumRows; /***** Create list with institutions *****/ - if ((Gbl.Hierarchy.Cty.Inss.Lst = (struct Instit *) + if ((Gbl.Hierarchy.Inss.Lst = (struct Instit *) calloc (NumRows,sizeof (struct Instit))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the institutions *****/ for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) { - Ins = &(Gbl.Hierarchy.Cty.Inss.Lst[NumIns]); + Ins = &(Gbl.Hierarchy.Inss.Lst[NumIns]); /* Get institution data */ row = mysql_fetch_row (mysql_res); @@ -646,17 +646,12 @@ void Ins_GetBasicListOfInstitutions (long CtyCod) /* Reset number of users who claim to belong to this institution */ Ins->NumUsrsWhoClaimToBelongToIns.Valid = false; - - /* Reset other fields */ - Ins->Ctrs.Num = 0; - Ins->Ctrs.Lst = NULL; - Ins->Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT; } } else { - Gbl.Hierarchy.Cty.Inss.Num = 0; - Gbl.Hierarchy.Cty.Inss.Lst = NULL; + Gbl.Hierarchy.Inss.Num = 0; + Gbl.Hierarchy.Inss.Lst = NULL; } /***** Free structure that stores the query result *****/ @@ -710,24 +705,24 @@ void Ins_GetFullListOfInstitutions (long CtyCod) " AND InsCod NOT IN" " (SELECT DISTINCT InsCod FROM usr_data))" " ORDER BY %s", - CtyCod,CtyCod,OrderBySubQuery[Gbl.Hierarchy.Cty.Inss.SelectedOrder]); + CtyCod,CtyCod,OrderBySubQuery[Gbl.Hierarchy.Inss.SelectedOrder]); if (NumRows) // Institutions found... { // NumRows should be equal to Deg->NumCourses - Gbl.Hierarchy.Cty.Inss.Num = (unsigned) NumRows; + Gbl.Hierarchy.Inss.Num = (unsigned) NumRows; /***** Create list with institutions *****/ - if ((Gbl.Hierarchy.Cty.Inss.Lst = (struct Instit *) + if ((Gbl.Hierarchy.Inss.Lst = (struct Instit *) calloc (NumRows,sizeof (struct Instit))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the institutions *****/ for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) { - Ins = &(Gbl.Hierarchy.Cty.Inss.Lst[NumIns]); + Ins = &(Gbl.Hierarchy.Inss.Lst[NumIns]); /* Get institution data */ row = mysql_fetch_row (mysql_res); @@ -737,17 +732,12 @@ void Ins_GetFullListOfInstitutions (long CtyCod) Ins->NumUsrsWhoClaimToBelongToIns.Valid = false; if (sscanf (row[7],"%u",&(Ins->NumUsrsWhoClaimToBelongToIns.NumUsrs)) == 1) Ins->NumUsrsWhoClaimToBelongToIns.Valid = true; - - /* Reset other fields */ - Ins->Ctrs.Num = 0; - Ins->Ctrs.Lst = NULL; - Ins->Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT; } } else { - Gbl.Hierarchy.Cty.Inss.Num = 0; - Gbl.Hierarchy.Cty.Inss.Lst = NULL; + Gbl.Hierarchy.Inss.Num = 0; + Gbl.Hierarchy.Inss.Lst = NULL; } /***** Free structure that stores the query result *****/ @@ -789,9 +779,6 @@ bool Ins_GetDataOfInstitutionByCod (struct Instit *Ins) Ins->ShrtName[0] = Ins->FullName[0] = Ins->WWW[0] = '\0'; - Ins->Ctrs.Num = 0; - Ins->Ctrs.Lst = NULL; - Ins->Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT; Ins->NumUsrsWhoClaimToBelongToIns.Valid = false; /***** Check if institution code is correct *****/ @@ -991,12 +978,12 @@ static void Ins_GetShrtNameAndCtyOfInstitution (struct Instit *Ins, void Ins_FreeListInstitutions (void) { - if (Gbl.Hierarchy.Cty.Inss.Lst) + if (Gbl.Hierarchy.Inss.Lst) { /***** Free memory used by the list of institutions *****/ - free (Gbl.Hierarchy.Cty.Inss.Lst); - Gbl.Hierarchy.Cty.Inss.Num = 0; - Gbl.Hierarchy.Cty.Inss.Lst = NULL; + free (Gbl.Hierarchy.Inss.Lst); + Gbl.Hierarchy.Inss.Num = 0; + Gbl.Hierarchy.Inss.Lst = NULL; } } @@ -1092,10 +1079,10 @@ static void Ins_ListInstitutionsForEdition (void) /***** Write all the institutions *****/ for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) { - Ins = &Gbl.Hierarchy.Cty.Inss.Lst[NumIns]; + Ins = &Gbl.Hierarchy.Inss.Lst[NumIns]; ICanEdit = Ins_CheckIfICanEdit (Ins); NumCtrss = Ctr_GetNumCtrsInIns (Ins->InsCod); @@ -2092,9 +2079,6 @@ static void Ins_EditingInstitutionConstructor (void) Ins_EditingIns->ShrtName[0] = '\0'; Ins_EditingIns->FullName[0] = '\0'; Ins_EditingIns->WWW[0] = '\0'; - Ins_EditingIns->Ctrs.Num = 0; - Ins_EditingIns->Ctrs.Lst = NULL; - Ins_EditingIns->Ctrs.SelectedOrder = Ctr_ORDER_DEFAULT; } static void Ins_EditingInstitutionDestructor (void) diff --git a/swad_institution.h b/swad_institution.h index 19bb0158..6eb7492e 100644 --- a/swad_institution.h +++ b/swad_institution.h @@ -65,12 +65,6 @@ struct Instit char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; - struct - { - unsigned Num; // Number of centres - struct Centre *Lst; // List of centres - Ctr_Order_t SelectedOrder; - } Ctrs; struct { bool Valid; @@ -86,6 +80,13 @@ typedef enum } Ins_Order_t; #define Ins_ORDER_DEFAULT Ins_ORDER_BY_NUM_USRS +struct ListInstits + { + unsigned Num; // Number of institutions + struct Instit *Lst; // List of institutions + Ins_Order_t SelectedOrder; // Order of institutions + }; + /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ diff --git a/swad_institution_config.c b/swad_institution_config.c index 60dc8bcc..bf908811 100644 --- a/swad_institution_config.c +++ b/swad_institution_config.c @@ -384,11 +384,11 @@ static void InsCfg_Country (bool PrintView,bool PutForm) "id=\"OthCtyCod\" name=\"OthCtyCod\"" " class=\"INPUT_SHORT_NAME\""); for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].CtyCod, - Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].CtyCod == Gbl.Hierarchy.Cty.CtyCod,false, - "%s",Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod, + Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod == Gbl.Hierarchy.Cty.CtyCod,false, + "%s",Gbl.Hierarchy.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]); HTM_SELECT_End (); Frm_EndForm (); diff --git a/swad_record.c b/swad_record.c index f2730817..3557141a 100644 --- a/swad_record.c +++ b/swad_record.c @@ -3216,7 +3216,7 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,bool PutForm) unsigned NumCty; /***** If list of countries is empty, try to get it *****/ - if (!Gbl.Hierarchy.Sys.Ctys.Num) + if (!Gbl.Hierarchy.Ctys.Num) Cty_GetBasicListOfCountries (); /***** Selector of country *****/ @@ -3242,11 +3242,11 @@ static void Rec_ShowCountry (struct UsrData *UsrDat,bool PutForm) HTM_OPTION (HTM_Type_STRING,"0",UsrDat->CtyCod == 0,false, "%s",Txt_Another_country); for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].CtyCod, - Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].CtyCod == UsrDat->CtyCod,false, - "%s",Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod, + Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod == UsrDat->CtyCod,false, + "%s",Gbl.Hierarchy.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]); HTM_SELECT_End (); HTM_TD_End (); @@ -3951,7 +3951,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher) HTM_TD_Begin ("class=\"REC_C2_BOT LM\""); /* If list of countries is empty, try to get it */ - if (!Gbl.Hierarchy.Sys.Ctys.Num) + if (!Gbl.Hierarchy.Ctys.Num) Cty_GetBasicListOfCountries (); /* Begin form to select the country of my institution */ @@ -3963,11 +3963,11 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher) Gbl.Usrs.Me.UsrDat.InsCtyCod <= 0,true, NULL); for (NumCty = 0; - NumCty < Gbl.Hierarchy.Sys.Ctys.Num; + NumCty < Gbl.Hierarchy.Ctys.Num; NumCty++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].CtyCod, - Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].CtyCod == Gbl.Usrs.Me.UsrDat.InsCtyCod,false, - "%s",Gbl.Hierarchy.Sys.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod, + Gbl.Hierarchy.Ctys.Lst[NumCty].CtyCod == Gbl.Usrs.Me.UsrDat.InsCtyCod,false, + "%s",Gbl.Hierarchy.Ctys.Lst[NumCty].Name[Gbl.Prefs.Language]); HTM_SELECT_End (); Frm_EndForm (); HTM_TD_End (); @@ -4002,11 +4002,11 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher) Gbl.Usrs.Me.UsrDat.InsCod == 0,false, "%s",Txt_Another_institution); for (NumIns = 0; - NumIns < Gbl.Hierarchy.Cty.Inss.Num; + NumIns < Gbl.Hierarchy.Inss.Num; NumIns++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod, - Gbl.Hierarchy.Cty.Inss.Lst[NumIns].InsCod == Gbl.Usrs.Me.UsrDat.InsCod,false, - "%s",Gbl.Hierarchy.Cty.Inss.Lst[NumIns].FullName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Inss.Lst[NumIns].InsCod, + Gbl.Hierarchy.Inss.Lst[NumIns].InsCod == Gbl.Usrs.Me.UsrDat.InsCod,false, + "%s",Gbl.Hierarchy.Inss.Lst[NumIns].FullName); HTM_SELECT_End (); Frm_EndForm (); HTM_TD_End (); @@ -4043,11 +4043,11 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher) Gbl.Usrs.Me.UsrDat.Tch.CtrCod == 0,false, Txt_Another_centre); for (NumCtr = 0; - NumCtr < Gbl.Hierarchy.Ins.Ctrs.Num; + NumCtr < Gbl.Hierarchy.Ctrs.Num; NumCtr++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr].CtrCod, - Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr].CtrCod == Gbl.Usrs.Me.UsrDat.Tch.CtrCod,false, - Gbl.Hierarchy.Ins.Ctrs.Lst[NumCtr].FullName); + HTM_OPTION (HTM_Type_LONG,&Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod, + Gbl.Hierarchy.Ctrs.Lst[NumCtr].CtrCod == Gbl.Usrs.Me.UsrDat.Tch.CtrCod,false, + Gbl.Hierarchy.Ctrs.Lst[NumCtr].FullName); HTM_SELECT_End (); Frm_EndForm (); HTM_TD_End (); diff --git a/swad_system.h b/swad_system.h deleted file mode 100644 index 995b845d..00000000 --- a/swad_system.h +++ /dev/null @@ -1,48 +0,0 @@ -// swad_system.h: top level of the hierarchy (system > countries > institutions > centres > degrees > courses) - -#ifndef _SWAD_SYS -#define _SWAD_SYS -/* - SWAD (Shared Workspace At a Distance in Spanish), - 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-2020 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 Public 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 ***********************************/ -/*****************************************************************************/ - -/*****************************************************************************/ -/************************** Public types and constants ***********************/ -/*****************************************************************************/ - -struct System - { - struct - { - unsigned Num; // Number of countries - struct Country *Lst; // List of countries - Cty_Order_t SelectedOrder; - } Ctys; - }; - -/*****************************************************************************/ -/***************************** Public prototypes *****************************/ -/*****************************************************************************/ - -#endif diff --git a/swad_text_action.c b/swad_text_action.c index 6b74d106..4ccfb87a 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -14873,7 +14873,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the files of the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -14894,7 +14894,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -14915,7 +14915,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -14936,7 +14936,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder empty in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -14957,7 +14957,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -14978,7 +14978,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -14999,7 +14999,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15020,7 +15020,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15041,7 +15041,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15062,7 +15062,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15083,7 +15083,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15104,7 +15104,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in the documents zone of a group using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -15125,7 +15125,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in the documents zone of a group using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -15146,7 +15146,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder when administrating the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15167,7 +15167,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder when administrating the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15188,7 +15188,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder when administrating the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15209,7 +15209,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show hidden folder or file of download" #elif L==4 // es "" #elif L==5 // fr @@ -15230,7 +15230,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide folder or file of download" #elif L==4 // es "" #elif L==5 // fr @@ -15251,7 +15251,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15272,7 +15272,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15293,7 +15293,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of the documents zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15314,7 +15314,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change to administrate teachers' files of the course/group" #elif L==4 // es "" #elif L==5 // fr @@ -15335,7 +15335,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the teachers' files zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15356,7 +15356,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a teachers' file of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15377,7 +15377,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a teachers' file of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15398,7 +15398,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an empty teachers' folder of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15419,7 +15419,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15440,7 +15440,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15461,7 +15461,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15482,7 +15482,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15503,7 +15503,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15524,7 +15524,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15545,7 +15545,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15566,7 +15566,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in teachers' zone of the course using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -15587,7 +15587,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in teachers' zone of the course using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -15608,7 +15608,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15629,7 +15629,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15650,7 +15650,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15671,7 +15671,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15692,7 +15692,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of the teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15713,7 +15713,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of the teachers' zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -15734,7 +15734,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the teachers' files zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15755,7 +15755,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a teachers' file of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15776,7 +15776,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a teachers' file of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15797,7 +15797,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an empty teachers' folder of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15818,7 +15818,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15839,7 +15839,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15860,7 +15860,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15881,7 +15881,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to create a folder or file in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15902,7 +15902,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15923,7 +15923,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15944,7 +15944,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -15965,7 +15965,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in teachers' zone of a group using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -15986,7 +15986,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in teachers' zone of a group using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -16007,7 +16007,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16028,7 +16028,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16049,7 +16049,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16070,7 +16070,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16091,7 +16091,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of the teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16112,7 +16112,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of the teachers' zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16133,7 +16133,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change to administrate shared files of the course/group" #elif L==4 // es "" #elif L==5 // fr @@ -16154,7 +16154,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the shared files zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16175,7 +16175,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a shared file of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16196,7 +16196,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a shared file of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16217,7 +16217,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a empty shared folder of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16238,7 +16238,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16259,7 +16259,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16280,7 +16280,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16301,7 +16301,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16322,7 +16322,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16343,7 +16343,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16364,7 +16364,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16385,7 +16385,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in shared zone of the course using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -16406,7 +16406,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in shared zone of the course using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -16427,7 +16427,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16448,7 +16448,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16469,7 +16469,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16490,7 +16490,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16511,7 +16511,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of the shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16532,7 +16532,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of the shared zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -16553,7 +16553,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the shared files zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16574,7 +16574,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a shared file of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16595,7 +16595,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a shared file of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16616,7 +16616,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder empty shared of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16637,7 +16637,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16658,7 +16658,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16679,7 +16679,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16700,7 +16700,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16721,7 +16721,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16742,7 +16742,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16763,7 +16763,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16784,7 +16784,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in shared zone of a group using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -16805,7 +16805,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in shared zone of a group using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -16826,7 +16826,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16847,7 +16847,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16868,7 +16868,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16889,7 +16889,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16910,7 +16910,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of the shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16931,7 +16931,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of the shared zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -16952,7 +16952,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Edit all the works sent to the course" #elif L==4 // es "" #elif L==5 // fr @@ -16973,7 +16973,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of assignments from a user" #elif L==4 // es "" #elif L==5 // fr @@ -16994,7 +16994,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of assignments from a user" #elif L==4 // es "" #elif L==5 // fr @@ -17015,7 +17015,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an empty folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17036,7 +17036,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set origin of copy in assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17057,7 +17057,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a file or folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17078,7 +17078,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a not empty folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17099,7 +17099,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to create a new folder or file of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17120,7 +17120,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17141,7 +17141,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17162,7 +17162,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17183,7 +17183,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a new file of assignments of a user using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -17204,7 +17204,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a new file of assignments of a user using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -17225,7 +17225,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17246,7 +17246,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17267,7 +17267,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17288,7 +17288,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17309,7 +17309,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17330,7 +17330,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of assignments of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17351,7 +17351,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of works from a user" #elif L==4 // es "" #elif L==5 // fr @@ -17372,7 +17372,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of works from a user" #elif L==4 // es "" #elif L==5 // fr @@ -17393,7 +17393,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an empty folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17414,7 +17414,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set origin of copy in works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17435,7 +17435,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a file or folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17456,7 +17456,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a not empty folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17477,7 +17477,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to create a new folder or file of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17498,7 +17498,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17519,7 +17519,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17540,7 +17540,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17561,7 +17561,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a new file of works of a user using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -17582,7 +17582,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a new file of works of a user using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -17603,7 +17603,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17624,7 +17624,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17645,7 +17645,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17666,7 +17666,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17687,7 +17687,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17708,7 +17708,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of works of a user" #elif L==4 // es "" #elif L==5 // fr @@ -17729,7 +17729,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17750,7 +17750,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17771,7 +17771,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an empty folder of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17792,7 +17792,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set origin of copy in assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17813,7 +17813,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a file or folder of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17834,7 +17834,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a not empty folder of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17855,7 +17855,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to create a new folder or file of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17876,7 +17876,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17897,7 +17897,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17918,7 +17918,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder of assignments in the course" #elif L==4 // es "" #elif L==5 // fr @@ -17939,7 +17939,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file of assignments in the course using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -17960,7 +17960,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file of assignments in the course using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -17981,7 +17981,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder of assignments in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18002,7 +18002,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder of assignments in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18023,7 +18023,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder of assignments in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18044,7 +18044,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of assignments in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18065,7 +18065,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of assignments in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18086,7 +18086,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of assignments in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18107,7 +18107,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18128,7 +18128,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18149,7 +18149,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an empty folder of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18170,7 +18170,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set origin of copy in works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18191,7 +18191,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a file or folder of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18212,7 +18212,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a not empty folder of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18233,7 +18233,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to create a new folder or file of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18254,7 +18254,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18275,7 +18275,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18296,7 +18296,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder of works in the course" #elif L==4 // es "" #elif L==5 // fr @@ -18317,7 +18317,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file of works in the course using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -18338,7 +18338,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file of works in the course using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -18359,7 +18359,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder of works in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18380,7 +18380,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder of works in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18401,7 +18401,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder of works in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18422,7 +18422,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of works in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18443,7 +18443,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file of works in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18464,7 +18464,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file of works in a course" #elif L==4 // es "" #elif L==5 // fr @@ -18485,7 +18485,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change to see marks in course/group" #elif L==4 // es "" #elif L==5 // fr @@ -18506,7 +18506,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "See marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18527,7 +18527,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18548,7 +18548,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18569,7 +18569,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the marks zone of the course" #elif L==4 // es "" #elif L==5 // fr @@ -18590,7 +18590,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Individualized access to marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18611,7 +18611,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "See marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -18632,7 +18632,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -18653,7 +18653,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -18674,7 +18674,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file of the marks zone of a group" #elif L==4 // es "" #elif L==5 // fr @@ -18695,7 +18695,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Individualized access to marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -18716,7 +18716,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change to admin marks in course/group" #elif L==4 // es "" #elif L==5 // fr @@ -18737,7 +18737,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the files of the zone of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18758,7 +18758,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18779,7 +18779,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18800,7 +18800,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder empty of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18821,7 +18821,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18842,7 +18842,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18863,7 +18863,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18884,7 +18884,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18905,7 +18905,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18926,7 +18926,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -18947,7 +18947,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file of marks in course using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -18968,7 +18968,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file of marks in course using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -18989,7 +18989,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19010,7 +19010,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19031,7 +19031,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19052,7 +19052,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show hidden folder or file of the marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19073,7 +19073,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide folder or file of the marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19094,7 +19094,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file in marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19115,7 +19115,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file in marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19136,7 +19136,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file in marks administration in course" #elif L==4 // es "" #elif L==5 // fr @@ -19157,7 +19157,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the number of rows of cabecera of a file of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -19178,7 +19178,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the number of rows of pie of a file of marks in course" #elif L==4 // es "" #elif L==5 // fr @@ -19199,7 +19199,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Admin the files of the zone of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19220,7 +19220,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19241,7 +19241,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19262,7 +19262,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder empty of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19283,7 +19283,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19304,7 +19304,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19325,7 +19325,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19346,7 +19346,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19367,7 +19367,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19388,7 +19388,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder in marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19409,7 +19409,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file to marks in group using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -19430,7 +19430,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file to marks in group using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -19451,7 +19451,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19472,7 +19472,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19493,7 +19493,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19514,7 +19514,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show hidden folder or file of the marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19535,7 +19535,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide folder or file of the marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19556,7 +19556,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file in marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19577,7 +19577,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file in marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19598,7 +19598,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file in marks administration in group" #elif L==4 // es "" #elif L==5 // fr @@ -19619,7 +19619,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the number of rows of cabecera of a file of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19640,7 +19640,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the number of rows of pie of a file of marks in group" #elif L==4 // es "" #elif L==5 // fr @@ -19661,7 +19661,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a file of the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19682,7 +19682,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a file of the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19703,7 +19703,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder empty of the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19724,7 +19724,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Set source of copy in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19745,7 +19745,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a folder or file in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19766,7 +19766,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a folder no empty of the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19787,7 +19787,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to crear a folder or file in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19808,7 +19808,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new folder in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19829,7 +19829,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new link in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19850,7 +19850,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a folder of the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19871,7 +19871,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in the briefcase using Dropzone.js" #elif L==4 // es "" #elif L==5 // fr @@ -19892,7 +19892,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a file in the briefcase using the classic way" #elif L==4 // es "" #elif L==5 // fr @@ -19913,7 +19913,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Expand a folder in briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19934,7 +19934,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Contract a folder in briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19955,7 +19955,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compress a folder in briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19976,7 +19976,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for metadata of a file in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -19997,7 +19997,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change metadata of a file in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -20018,7 +20018,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Download a file in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -20039,7 +20039,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask for removing old files in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -20060,7 +20060,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove old files in the briefcase" #elif L==4 // es "" #elif L==5 // fr @@ -20081,7 +20081,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the selection of groups of students" #elif L==4 // es "" #elif L==5 // fr @@ -20102,7 +20102,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show class photo or list of students" #elif L==4 // es "" #elif L==5 // fr @@ -20123,7 +20123,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show class photo or list of teachers" #elif L==4 // es "" #elif L==5 // fr @@ -20144,7 +20144,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show class photo or list of guests" #elif L==4 // es "" #elif L==5 // fr @@ -20165,7 +20165,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show attendance events" #elif L==4 // es "" #elif L==5 // fr @@ -20186,7 +20186,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Apply for my enrolment" #elif L==4 // es "" #elif L==5 // fr @@ -20207,7 +20207,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show pending requests for inscription in the current course" #elif L==4 // es "" #elif L==5 // fr @@ -20228,7 +20228,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List connected users" #elif L==4 // es "" #elif L==5 // fr @@ -20249,7 +20249,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change my groups" #elif L==4 // es "" #elif L==5 // fr @@ -20270,7 +20270,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the edition of groups" #elif L==4 // es "" #elif L==5 // fr @@ -20291,7 +20291,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the creation of a type of group" #elif L==4 // es "" #elif L==5 // fr @@ -20312,7 +20312,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a type of group" #elif L==4 // es "" #elif L==5 // fr @@ -20333,7 +20333,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a type of group of students" #elif L==4 // es "" #elif L==5 // fr @@ -20354,7 +20354,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request renaming of a type of group of students" #elif L==4 // es "" #elif L==5 // fr @@ -20375,7 +20375,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request change if it is mandatory to register in groups of a type" #elif L==4 // es "" #elif L==5 // fr @@ -20396,7 +20396,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request change if it is possible to register in multiple groups of a type" #elif L==4 // es "" #elif L==5 // fr @@ -20417,7 +20417,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request change when the groups of a type will be open" #elif L==4 // es "" #elif L==5 // fr @@ -20438,7 +20438,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the creation of a group" #elif L==4 // es "" #elif L==5 // fr @@ -20459,7 +20459,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a group" #elif L==4 // es "" #elif L==5 // fr @@ -20480,7 +20480,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a group" #elif L==4 // es "" #elif L==5 // fr @@ -20501,7 +20501,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Open a group" #elif L==4 // es "" #elif L==5 // fr @@ -20522,7 +20522,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Close a group" #elif L==4 // es "" #elif L==5 // fr @@ -20543,7 +20543,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable filezones of a group" #elif L==4 // es "" #elif L==5 // fr @@ -20564,7 +20564,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable filezones of a group" #elif L==4 // es "" #elif L==5 // fr @@ -20585,7 +20585,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the type of group of a group" #elif L==4 // es "" #elif L==5 // fr @@ -20606,7 +20606,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Rename a group" #elif L==4 // es "" #elif L==5 // fr @@ -20627,7 +20627,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the classroom of a group" #elif L==4 // es "" #elif L==5 // fr @@ -20648,7 +20648,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the maximum number of students in a group" #elif L==4 // es "" #elif L==5 // fr @@ -20669,7 +20669,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List main data of administrators" #elif L==4 // es "" #elif L==5 // fr @@ -20690,7 +20690,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the class photo of guests ready to be printed" #elif L==4 // es "" #elif L==5 // fr @@ -20711,7 +20711,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the class photo of students ready to be printed" #elif L==4 // es "" #elif L==5 // fr @@ -20732,7 +20732,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the class photo of teachers ready to be printed" #elif L==4 // es "" #elif L==5 // fr @@ -20753,7 +20753,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List in another window the full data of guests" #elif L==4 // es "" #elif L==5 // fr @@ -20774,7 +20774,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List in another window the full data of students" #elif L==4 // es "" #elif L==5 // fr @@ -20795,7 +20795,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List in another window the full data of teachers" #elif L==4 // es "" #elif L==5 // fr @@ -20816,7 +20816,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show record of one selected student" #elif L==4 // es "" #elif L==5 // fr @@ -20837,7 +20837,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show record of one selected teacher" #elif L==4 // es "" #elif L==5 // fr @@ -20858,7 +20858,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Do action on several selected guests" #elif L==4 // es "" #elif L==5 // fr @@ -20879,7 +20879,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Do action on several selected students" #elif L==4 // es "" #elif L==5 // fr @@ -20900,7 +20900,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Do action on several selected teachers" #elif L==4 // es "" #elif L==5 // fr @@ -20921,7 +20921,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show records of several selected guests" #elif L==4 // es "" #elif L==5 // fr @@ -20942,7 +20942,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show records of several selected students" #elif L==4 // es "" #elif L==5 // fr @@ -20963,7 +20963,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show records of several selected teachers" #elif L==4 // es "" #elif L==5 // fr @@ -20984,7 +20984,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show records of several selected guests ready to be printed" #elif L==4 // es "" #elif L==5 // fr @@ -21005,7 +21005,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show records of several selected students ready to be printed" #elif L==4 // es "" #elif L==5 // fr @@ -21026,7 +21026,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show records of several selected teachers ready to be printed" #elif L==4 // es "" #elif L==5 // fr @@ -21047,7 +21047,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update record fields of a student in this course" #elif L==4 // es "" #elif L==5 // fr @@ -21068,7 +21068,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the edition of record fields of students" #elif L==4 // es "" #elif L==5 // fr @@ -21089,7 +21089,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the creation of a record field" #elif L==4 // es "" #elif L==5 // fr @@ -21110,7 +21110,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of record field" #elif L==4 // es "" #elif L==5 // fr @@ -21131,7 +21131,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a record field" #elif L==4 // es "" #elif L==5 // fr @@ -21152,7 +21152,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request renaming of record field" #elif L==4 // es "" #elif L==5 // fr @@ -21173,7 +21173,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request change in number of lines of form of a record field" #elif L==4 // es "" #elif L==5 // fr @@ -21194,7 +21194,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request change in visibility of a record field" #elif L==4 // es "" #elif L==5 // fr @@ -21215,7 +21215,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive and update fields of my record in this course" #elif L==4 // es "" #elif L==5 // fr @@ -21236,7 +21236,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Put form to log in to show another user's public agenda" #elif L==4 // es "" #elif L==5 // fr @@ -21257,7 +21257,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show another user's public agenda after log in" #elif L==4 // es "" #elif L==5 // fr @@ -21278,7 +21278,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show another user's public agenda after change language" #elif L==4 // es "" #elif L==5 // fr @@ -21299,7 +21299,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show another user's public agenda" #elif L==4 // es "" #elif L==5 // fr @@ -21320,7 +21320,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the enrolment/removing of several students to / from current course" #elif L==4 // es "" #elif L==5 // fr @@ -21341,7 +21341,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the enrolment/removing of several non-editing teachers to / from current course" #elif L==4 // es "" #elif L==5 // fr @@ -21362,7 +21362,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the enrolment/removing of several teachers to / from current course" #elif L==4 // es "" #elif L==5 // fr @@ -21383,7 +21383,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request listing of attendance of several students to several events" #elif L==4 // es "" #elif L==5 // fr @@ -21404,7 +21404,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List my attendance as student to several events" #elif L==4 // es "" #elif L==5 // fr @@ -21425,7 +21425,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Print my attendance as student to several events" #elif L==4 // es "" #elif L==5 // fr @@ -21446,7 +21446,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List attendance of several students to several events" #elif L==4 // es "" #elif L==5 // fr @@ -21467,7 +21467,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Print attendance of several students to several events" #elif L==4 // es "" #elif L==5 // fr @@ -21488,7 +21488,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Form to create a new attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21509,7 +21509,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Edit one attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21530,7 +21530,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create new attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21551,7 +21551,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Modify data of an existing attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21572,7 +21572,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of an attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21593,7 +21593,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21614,7 +21614,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21635,7 +21635,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21656,7 +21656,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List students who attended to an event" #elif L==4 // es "" #elif L==5 // fr @@ -21677,7 +21677,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Save students who attended to an event and comments" #elif L==4 // es "" #elif L==5 // fr @@ -21698,7 +21698,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Save my comments as student in an attendance event" #elif L==4 // es "" #elif L==5 // fr @@ -21719,7 +21719,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Apply for my enrolment" #elif L==4 // es "" #elif L==5 // fr @@ -21740,7 +21740,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update pending requests for inscription in the current course" #elif L==4 // es "" #elif L==5 // fr @@ -21761,7 +21761,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ask if reject the enrolment of a user in a course" #elif L==4 // es "" #elif L==5 // fr @@ -21782,7 +21782,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Reject the enrolment of a user in a course" #elif L==4 // es "" #elif L==5 // fr @@ -21803,7 +21803,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request a user's ID for enrolment/removing" #elif L==4 // es "" #elif L==5 // fr @@ -21824,7 +21824,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request a student's ID for enrolment/removing" #elif L==4 // es "" #elif L==5 // fr @@ -21845,7 +21845,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request a teacher's ID for enrolment/removing" #elif L==4 // es "" #elif L==5 // fr @@ -21866,7 +21866,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request enrolment/removing of a user" #elif L==4 // es "" #elif L==5 // fr @@ -21887,7 +21887,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request enrolment/removing of a student" #elif L==4 // es "" #elif L==5 // fr @@ -21908,7 +21908,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request enrolment/removing of a non-editing teacher" #elif L==4 // es "" #elif L==5 // fr @@ -21929,7 +21929,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request enrolment/removing of a teacher" #elif L==4 // es "" #elif L==5 // fr @@ -21950,7 +21950,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show form to send the photo of another user" #elif L==4 // es "" #elif L==5 // fr @@ -21971,7 +21971,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show form to send the photo of another user" #elif L==4 // es "" #elif L==5 // fr @@ -21992,7 +21992,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show form to send the photo of another user" #elif L==4 // es "" #elif L==5 // fr @@ -22013,7 +22013,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive other user's photo and detect faces on it" #elif L==4 // es "" #elif L==5 // fr @@ -22034,7 +22034,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive other user's photo and detect faces on it" #elif L==4 // es "" #elif L==5 // fr @@ -22055,7 +22055,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive other user's photo and detect faces on it" #elif L==4 // es "" #elif L==5 // fr @@ -22076,7 +22076,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update other user's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22097,7 +22097,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update other user's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22118,7 +22118,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update other user's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22139,7 +22139,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of other user's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22160,7 +22160,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of student's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22181,7 +22181,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of teacher's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22202,7 +22202,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove other user's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22223,7 +22223,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove student's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22244,7 +22244,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove teacher's photo" #elif L==4 // es "" #elif L==5 // fr @@ -22265,7 +22265,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new guest" #elif L==4 // es "" #elif L==5 // fr @@ -22286,7 +22286,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new student" #elif L==4 // es "" #elif L==5 // fr @@ -22307,7 +22307,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new non-editing teacher" #elif L==4 // es "" #elif L==5 // fr @@ -22328,7 +22328,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new teacher" #elif L==4 // es "" #elif L==5 // fr @@ -22349,7 +22349,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update another user's data and groups" #elif L==4 // es "" #elif L==5 // fr @@ -22370,7 +22370,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update another student's data and groups" #elif L==4 // es "" #elif L==5 // fr @@ -22391,7 +22391,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update another non-editing teacher's data and groups" #elif L==4 // es "" #elif L==5 // fr @@ -22412,7 +22412,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Update another teacher's data and groups" #elif L==4 // es "" #elif L==5 // fr @@ -22433,7 +22433,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Confirm acceptation / refusion of enrolment as student in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22454,7 +22454,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Confirm acceptation / refusion of enrolment as non-editing teacher in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22475,7 +22475,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Confirm acceptation / refusion of enrolment as teacher in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22496,7 +22496,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Accept enrolment as student in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22517,7 +22517,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Accept enrolment as non-editing teacher in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22538,7 +22538,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Accept enrolment as teacher in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22559,7 +22559,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Reject enrolment as student in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22580,7 +22580,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Reject enrolment as non-editing teacher in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22601,7 +22601,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Reject enrolment as teacher in current course" #elif L==4 // es "" #elif L==5 // fr @@ -22622,7 +22622,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Register an administrador in this institution" #elif L==4 // es "" #elif L==5 // fr @@ -22643,7 +22643,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an administrador of this institution" #elif L==4 // es "" #elif L==5 // fr @@ -22664,7 +22664,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Register an administrador in this centre" #elif L==4 // es "" #elif L==5 // fr @@ -22685,7 +22685,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an administrador of this centre" #elif L==4 // es "" #elif L==5 // fr @@ -22706,7 +22706,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Register an administrador in this degree" #elif L==4 // es "" #elif L==5 // fr @@ -22727,7 +22727,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove an administrador of this degree" #elif L==4 // es "" #elif L==5 // fr @@ -22748,7 +22748,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a form with IDs of students to be registered/removed to/from current course" #elif L==4 // es "" #elif L==5 // fr @@ -22769,7 +22769,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a form with IDs of non-editing teachers to be registered/removed to/from current course" #elif L==4 // es "" #elif L==5 // fr @@ -22790,7 +22790,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a form with IDs of teachers to be registered/removed to/from current course" #elif L==4 // es "" #elif L==5 // fr @@ -22811,7 +22811,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Confirm another user's ID" #elif L==4 // es "" #elif L==5 // fr @@ -22832,7 +22832,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Confirm another user's ID" #elif L==4 // es "" #elif L==5 // fr @@ -22853,7 +22853,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Confirm another user's ID" #elif L==4 // es "" #elif L==5 // fr @@ -22874,7 +22874,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show forms to the change another user's account" #elif L==4 // es "" #elif L==5 // fr @@ -22895,7 +22895,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show forms to the change another user's account" #elif L==4 // es "" #elif L==5 // fr @@ -22916,7 +22916,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show forms to the change another user's account" #elif L==4 // es "" #elif L==5 // fr @@ -22937,7 +22937,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of another user's old nicknames" #elif L==4 // es "" #elif L==5 // fr @@ -22958,7 +22958,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of another user's old nicknames" #elif L==4 // es "" #elif L==5 // fr @@ -22979,7 +22979,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of another user's old nicknames" #elif L==4 // es "" #elif L==5 // fr @@ -23000,7 +23000,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change another user's nickname" #elif L==4 // es "" #elif L==5 // fr @@ -23021,7 +23021,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change another user's nickname" #elif L==4 // es "" #elif L==5 // fr @@ -23042,7 +23042,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change another user's nickname" #elif L==4 // es "" #elif L==5 // fr @@ -23063,7 +23063,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of the IDs of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23084,7 +23084,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of the IDs of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23105,7 +23105,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of the IDs of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23126,7 +23126,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new user's ID for another user" #elif L==4 // es "" #elif L==5 // fr @@ -23147,7 +23147,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new user's ID for another user" #elif L==4 // es "" #elif L==5 // fr @@ -23168,7 +23168,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new user's ID for another user" #elif L==4 // es "" #elif L==5 // fr @@ -23189,7 +23189,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the password of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23210,7 +23210,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the password of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23231,7 +23231,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Change the password of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23252,7 +23252,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of the email of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23273,7 +23273,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of the email of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23294,7 +23294,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove one of the email of another user" #elif L==4 // es "" #elif L==5 // fr @@ -23315,7 +23315,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new user's email for another user" #elif L==4 // es "" #elif L==5 // fr @@ -23336,7 +23336,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new user's email for another user" #elif L==4 // es "" #elif L==5 // fr @@ -23357,7 +23357,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Create a new user's email for another user" #elif L==4 // es "" #elif L==5 // fr @@ -23378,7 +23378,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a student from the current course" #elif L==4 // es "" #elif L==5 // fr @@ -23399,7 +23399,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a non-editing teacher from the current course" #elif L==4 // es "" #elif L==5 // fr @@ -23420,7 +23420,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a teacher from the current course" #elif L==4 // es "" #elif L==5 // fr @@ -23441,7 +23441,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Eliminate completely a user from the platform" #elif L==4 // es "" #elif L==5 // fr @@ -23462,7 +23462,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of all the students from the current course" #elif L==4 // es "" #elif L==5 // fr @@ -23483,7 +23483,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove all the students from the current course" #elif L==4 // es "" #elif L==5 // fr @@ -23504,7 +23504,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the complete elimination of old users" #elif L==4 // es "" #elif L==5 // fr @@ -23525,7 +23525,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Eliminate completely old users" #elif L==4 // es "" #elif L==5 // fr @@ -23546,7 +23546,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List possible duplicate users" #elif L==4 // es "" #elif L==5 // fr @@ -23567,7 +23567,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List users similar to a given one (possible duplicates)" #elif L==4 // es "" #elif L==5 // fr @@ -23588,7 +23588,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove user from list of possible duplicate users" #elif L==4 // es "" #elif L==5 // fr @@ -23609,7 +23609,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request follow several students" #elif L==4 // es "" #elif L==5 // fr @@ -23630,7 +23630,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request follow several teachers" #elif L==4 // es "" #elif L==5 // fr @@ -23651,7 +23651,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request unfollow several students" #elif L==4 // es "" #elif L==5 // fr @@ -23672,7 +23672,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request unfollow several teachers" #elif L==4 // es "" #elif L==5 // fr @@ -23693,7 +23693,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Follow several students" #elif L==4 // es "" #elif L==5 // fr @@ -23714,7 +23714,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Follow several teachers" #elif L==4 // es "" #elif L==5 // fr @@ -23735,7 +23735,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Unfollow several students" #elif L==4 // es "" #elif L==5 // fr @@ -23756,7 +23756,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Unfollow several teachers" #elif L==4 // es "" #elif L==5 // fr @@ -23777,7 +23777,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show global announcements" #elif L==4 // es "" #elif L==5 // fr @@ -23798,7 +23798,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show all notices" #elif L==4 // es "" #elif L==5 // fr @@ -23819,7 +23819,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the level superior of the forums" #elif L==4 // es "" #elif L==5 // fr @@ -23840,7 +23840,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the chat rooms" #elif L==4 // es "" #elif L==5 // fr @@ -23861,7 +23861,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Write message to several users" #elif L==4 // es "" #elif L==5 // fr @@ -23882,7 +23882,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages received from other users (link in menu)" #elif L==4 // es "" #elif L==5 // fr @@ -23903,7 +23903,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages sent to other users" #elif L==4 // es "" #elif L==5 // fr @@ -23924,7 +23924,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Select users to send an email to them" #elif L==4 // es "" #elif L==5 // fr @@ -23945,7 +23945,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show form to create a new global announcement" #elif L==4 // es "" #elif L==5 // fr @@ -23966,7 +23966,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive and create a new global announcement" #elif L==4 // es "" #elif L==5 // fr @@ -23987,7 +23987,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide a global announcement that was active" #elif L==4 // es "" #elif L==5 // fr @@ -24008,7 +24008,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Reveal a global announcement that was hidden" #elif L==4 // es "" #elif L==5 // fr @@ -24029,7 +24029,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove global announcement" #elif L==4 // es "" #elif L==5 // fr @@ -24050,7 +24050,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show (expand) a notice" #elif L==4 // es "" #elif L==5 // fr @@ -24071,7 +24071,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Write a new notice" #elif L==4 // es "" #elif L==5 // fr @@ -24092,7 +24092,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive and create a new notice" #elif L==4 // es "" #elif L==5 // fr @@ -24113,7 +24113,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide a notice that was active" #elif L==4 // es "" #elif L==5 // fr @@ -24134,7 +24134,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Reveal a notice that was hidden" #elif L==4 // es "" #elif L==5 // fr @@ -24155,7 +24155,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request removal of a notice" #elif L==4 // es "" #elif L==5 // fr @@ -24176,7 +24176,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a notice" #elif L==4 // es "" #elif L==5 // fr @@ -24197,7 +24197,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24218,7 +24218,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24239,7 +24239,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -24260,7 +24260,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -24281,7 +24281,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of users of the centre" #elif L==4 // es "" #elif L==5 // fr @@ -24302,7 +24302,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of teachers of the centre" #elif L==4 // es "" #elif L==5 // fr @@ -24323,7 +24323,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -24344,7 +24344,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -24365,7 +24365,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -24386,7 +24386,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -24407,7 +24407,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -24428,7 +24428,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show top level of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -24449,7 +24449,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24470,7 +24470,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24491,7 +24491,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -24512,7 +24512,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -24533,7 +24533,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of users of the centre" #elif L==4 // es "" #elif L==5 // fr @@ -24554,7 +24554,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of teachers of the centre" #elif L==4 // es "" #elif L==5 // fr @@ -24575,7 +24575,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -24596,7 +24596,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -24617,7 +24617,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -24638,7 +24638,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -24659,7 +24659,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -24680,7 +24680,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show the messages of a thread of the forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -24701,7 +24701,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24722,7 +24722,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24743,7 +24743,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -24764,7 +24764,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -24785,7 +24785,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -24806,7 +24806,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -24827,7 +24827,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -24848,7 +24848,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -24869,7 +24869,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -24890,7 +24890,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -24911,7 +24911,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -24932,7 +24932,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive the first message of a new thread of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -24953,7 +24953,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24974,7 +24974,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -24995,7 +24995,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25016,7 +25016,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25037,7 +25037,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25058,7 +25058,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25079,7 +25079,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25100,7 +25100,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25121,7 +25121,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -25142,7 +25142,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -25163,7 +25163,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25184,7 +25184,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Receive a message of answer in a thread existente in the forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25205,7 +25205,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25226,7 +25226,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25247,7 +25247,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25268,7 +25268,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25289,7 +25289,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25310,7 +25310,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25331,7 +25331,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25352,7 +25352,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25373,7 +25373,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -25394,7 +25394,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -25415,7 +25415,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25436,7 +25436,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of a thread of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25457,7 +25457,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25478,7 +25478,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25499,7 +25499,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25520,7 +25520,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25541,7 +25541,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25562,7 +25562,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25583,7 +25583,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25604,7 +25604,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25625,7 +25625,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -25646,7 +25646,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -25667,7 +25667,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25688,7 +25688,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a thread of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25709,7 +25709,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25730,7 +25730,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25751,7 +25751,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25772,7 +25772,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -25793,7 +25793,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25814,7 +25814,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -25835,7 +25835,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25856,7 +25856,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -25877,7 +25877,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -25898,7 +25898,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -25919,7 +25919,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25940,7 +25940,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Cut a thread of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -25961,7 +25961,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -25982,7 +25982,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26003,7 +26003,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26024,7 +26024,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26045,7 +26045,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26066,7 +26066,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26087,7 +26087,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26108,7 +26108,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26129,7 +26129,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -26150,7 +26150,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -26171,7 +26171,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26192,7 +26192,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Paste a thread of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26213,7 +26213,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26234,7 +26234,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26255,7 +26255,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26276,7 +26276,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26297,7 +26297,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26318,7 +26318,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26339,7 +26339,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26360,7 +26360,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26381,7 +26381,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -26402,7 +26402,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -26423,7 +26423,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26444,7 +26444,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26465,7 +26465,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26486,7 +26486,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26507,7 +26507,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26528,7 +26528,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26549,7 +26549,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26570,7 +26570,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26591,7 +26591,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26612,7 +26612,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26633,7 +26633,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -26654,7 +26654,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -26675,7 +26675,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26696,7 +26696,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enable a message of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26717,7 +26717,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of users of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26738,7 +26738,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of teachers of the course" #elif L==4 // es "" #elif L==5 // fr @@ -26759,7 +26759,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of users of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26780,7 +26780,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of teachers of the degree" #elif L==4 // es "" #elif L==5 // fr @@ -26801,7 +26801,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of users of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26822,7 +26822,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of teachers of centre" #elif L==4 // es "" #elif L==5 // fr @@ -26843,7 +26843,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of users of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26864,7 +26864,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of teachers of the institution" #elif L==4 // es "" #elif L==5 // fr @@ -26885,7 +26885,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of users general" #elif L==4 // es "" #elif L==5 // fr @@ -26906,7 +26906,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of teachers general" #elif L==4 // es "" #elif L==5 // fr @@ -26927,7 +26927,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of users of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26948,7 +26948,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Disable a message of forum of teachers of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -26969,7 +26969,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Enter in a chat room to chat" #elif L==4 // es "" #elif L==5 // fr @@ -26990,7 +26990,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Sent/Receive a message of a user" #elif L==4 // es "" #elif L==5 // fr @@ -27011,7 +27011,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of todos the messages sent to other users" #elif L==4 // es "" #elif L==5 // fr @@ -27032,7 +27032,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request the removal of todos the messages received from other users" #elif L==4 // es "" #elif L==5 // fr @@ -27053,7 +27053,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove todos the messages sent to other users" #elif L==4 // es "" #elif L==5 // fr @@ -27074,7 +27074,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove all messages received from other users" #elif L==4 // es "" #elif L==5 // fr @@ -27095,7 +27095,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message sent to other users" #elif L==4 // es "" #elif L==5 // fr @@ -27116,7 +27116,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Remove a message received from other user" #elif L==4 // es "" #elif L==5 // fr @@ -27137,7 +27137,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "See (expand) sent message" #elif L==4 // es "" #elif L==5 // fr @@ -27158,7 +27158,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "See (expand) received message" #elif L==4 // es "" #elif L==5 // fr @@ -27179,7 +27179,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide (contract) sent message" #elif L==4 // es "" #elif L==5 // fr @@ -27200,7 +27200,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Hide (contract) received message" #elif L==4 // es "" #elif L==5 // fr @@ -27221,7 +27221,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List banned users" #elif L==4 // es "" #elif L==5 // fr @@ -27242,7 +27242,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Ban the sender of a message when showing received messages" #elif L==4 // es "" #elif L==5 // fr @@ -27263,7 +27263,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Unban the sender of a message when showing received messages" #elif L==4 // es "" #elif L==5 // fr @@ -27284,7 +27284,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Unban a user when listing banned users" #elif L==4 // es "" #elif L==5 // fr @@ -27326,7 +27326,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request showing use of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -27347,7 +27347,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show a class photo with the average photos of the students of each degree" #elif L==4 // es "" #elif L==5 // fr @@ -27368,7 +27368,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request statistics of courses" #elif L==4 // es "" #elif L==5 // fr @@ -27389,7 +27389,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request query of clicks to the complete platform" #elif L==4 // es "" #elif L==5 // fr @@ -27410,7 +27410,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request my usage report" #elif L==4 // es "" #elif L==5 // fr @@ -27431,7 +27431,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show most frequently used actions" #elif L==4 // es "" #elif L==5 // fr @@ -27452,7 +27452,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show use of the platform" #elif L==4 // es "" #elif L==5 // fr @@ -27473,7 +27473,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show print view of the class photo with the average photos of the students of each degree" #elif L==4 // es "" #elif L==5 // fr @@ -27494,7 +27494,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Compute the average photos of the students of each degree" #elif L==4 // es "" #elif L==5 // fr @@ -27515,7 +27515,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Query clicks to the complete platform" #elif L==4 // es "" #elif L==5 // fr @@ -27536,7 +27536,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Request query of clicks in the course" #elif L==4 // es "" #elif L==5 // fr @@ -27557,7 +27557,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Query clicks to current course" #elif L==4 // es "" #elif L==5 // fr @@ -27578,7 +27578,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show statistics of courses" #elif L==4 // es "" #elif L==5 // fr @@ -27599,7 +27599,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "List last clicks" #elif L==4 // es "" #elif L==5 // fr @@ -27620,7 +27620,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Refresh last clicks in real time via AJAX" #elif L==4 // es "" #elif L==5 // fr @@ -27641,7 +27641,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "" + "Show my usage report" #elif L==4 // es "" #elif L==5 // fr