aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts/bootstrap/oer.js
blob: 3adecbc8482a3c798ff6a1788ad583a2bd42eba2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import Quicksearch from '../../../vue/components/Quicksearch.vue';

STUDIP.domReady(() => {
    jQuery(".serversettings .index_server a").on("click", function () {
        var host_id = jQuery(this).closest("tr").data("host_id");
        var active = jQuery(this).is(".checked") ? 0 : 1;
        var a = this;
        jQuery.ajax({
            "url": STUDIP.ABSOLUTE_URI_STUDIP + "dispatch.php/oer/admin/toggle_index_server",
            "data": {
                'host_id': host_id,
                'active': active
            },
            "type": "post",
            "success": function (html) {
                jQuery(a).html(html);
                if (active) {
                    jQuery(a).addClass("checked").removeClass("unchecked");
                } else {
                    jQuery(a).addClass("unchecked").removeClass("checked");
                }
            }
        });
        return false;
    });
    jQuery(".serversettings .active a").on("click", function () {
        var host_id = jQuery(this).closest("tr").data("host_id");
        var active = jQuery(this).is(".checked") ? 0 : 1;
        var a = this;
        jQuery.ajax({
            "url": STUDIP.ABSOLUTE_URI_STUDIP + "dispatch.php/oer/admin/toggle_server_active",
            "data": {
                'host_id': host_id,
                'active': active
            },
            "type": "post",
            "success": function (html) {
                jQuery(a).html(html);
                if (active) {
                    jQuery(a).addClass("checked").removeClass("unchecked");
                } else {
                    jQuery(a).addClass("unchecked").removeClass("checked");
                }
            }
        });
        return false;
    });

});

STUDIP.ready(() => {
    if ($('.oercampus_editmaterial').length) {

        STUDIP.Vue.load().then(({createApp}) => {
            STUDIP.OER.EditApp = createApp({
                el: '.oercampus_editmaterial',
                data() {
                    return {
                        name: $('.oercampus_editmaterial input.oername').val(),
                        logo_url: $('.oercampus_editmaterial .logo_file').data("oldurl"),
                        customlogo: $('.oercampus_editmaterial .logo_file').data("customlogo"),
                        filename: $('.oercampus_editmaterial .file.drag-and-drop').data("filename"),
                        filesize: $('.oercampus_editmaterial .file.drag-and-drop').data("filesize"),
                        tags: $('.oercampus_editmaterial .oer_tags').data("defaulttags"),
                        minimumTags: 5
                    };
                },
                mounted: function () {
                    jQuery("#difficulty_slider_edit").slider({
                        range: true,
                        min: 1,
                        max: 12,
                        values: [jQuery("#difficulty_start").val(), jQuery("#difficulty_end").val()],
                        change: function (event, ui) {
                            jQuery("#difficulty_start").val(ui.values[0]);
                            jQuery("#difficulty_end").val(ui.values[1]);
                        }
                    });
                    jQuery('.oercampus_editmaterial').find(':focusable').first().focus();
                },
                methods: {
                    editName: function () {
                        this.name = $('.oername').val();
                    },
                    editImage: function (event) {
                        let reader = new FileReader();
                        let vue = this;
                        reader.addEventListener("load", function () {
                            vue.logo_url = reader.result;
                            vue.customlogo = true;
                        }, false);
                        reader.readAsDataURL(
                            event.target.files.length > 0
                                ? event.target.files[0]
                                : event.dataTransfer.files[0]
                        );
                    },
                    dropImage: function (event) {
                        window.document.getElementById("oer_logo_uploader").files = event.dataTransfer.files;
                        this.editImage(event);
                    },
                    editFile: function (event) {
                        this.filename = event.target.files[0].name;
                        this.filesize = event.target.files[0].size;
                        if (!this.name) {
                            this.name = this.filename;
                            $('.oername').val(this.name);
                        }
                    },
                    dropFile: function (event) {
                        window.document.getElementById("oer_file").files = event.dataTransfer.files;
                        this.editFile(event);
                    },
                    addTag: function () {
                        if (this.minimumTags < this.tags.length) {
                            this.minimumTags = this.tags.length + 1;
                        } else {
                            this.minimumTags++;
                        }
                    },
                    removeTag: function (i) {
                        this.$delete(this.tags, i);
                        if ((this.minimumTags > this.tags.length) && (this.minimumTags > 5)) {
                            this.minimumTags--;
                        }
                    }
                },
                computed: {
                    displayTags () {
                        const result = this.tags.concat([]);
                        while (result.length < this.minimumTags) {
                            result.push('');
                        }
                        return result;
                    }
                },
                components: { Quicksearch }
            });
        });
    }
});