Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
// This file is part of Moodle - http://moodle.org/
2
//
3
// Moodle is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, either version 3 of the License, or
6
// (at your option) any later version.
7
//
8
// Moodle is distributed in the hope that it will be useful,
9
// but WITHOUT ANY WARRANTY; without even the implied warranty of
10
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
// GNU General Public License for more details.
12
//
13
// You should have received a copy of the GNU General Public License
14
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
15
 
16
/**
17
 * unilabel helper for activity picker button
18
 *
19
 * @author      Andreas Grabs <info@grabs-edv.de>
20
 * @copyright   2018 onwards Grabs EDV {@link https://www.grabs-edv.de}
21
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 */
23
 
24
import $ from 'jquery';
25
import log from 'core/log';
26
 
27
export const init = async(formid, inputidbase) => {
28
    const str = await import('core/str');
29
    const deletestr = await str.get_string('delete');
30
    // The inputswitcher switches an text input element into a hidden element and added an activitylink clone.
31
    const inputswitcher = await import('mod_unilabel/activity_picker_input_switcher');
32
 
33
    let pickerlist = document.querySelector('#unilabel-activity-picker-list');
34
    let links = pickerlist.querySelectorAll('a.activity-picker-link');
35
 
36
    let maybeactivityelement;
37
 
38
    log.debug('Get all picker-button-links');
39
    let pickerbuttons = document.querySelectorAll('a.unilabel-picker-button-link');
40
    log.debug(pickerbuttons);
41
    pickerbuttons.forEach(el => {
42
        try {
43
            let id = el.parentElement.parentElement.parentElement.id.split("_").slice(-1);
44
            if (id) {
45
                let currentinput = document.querySelector('#' + inputidbase + id);
46
                log.debug(currentinput.value);
47
                links.forEach(link => {
48
                    if (link.href == currentinput.value) {
49
                        let activitylinksrc = link.closest('.activitytitle');
50
                        maybeactivityelement = currentinput.parentElement.querySelector(
51
                            'div.activitytitle.unilabel-input-replacement'
52
                        );
53
                        if (maybeactivityelement) {
54
                            return;
55
                        }
56
 
57
                        inputswitcher.switchInput(currentinput, activitylinksrc, currentinput.value, false, deletestr);
58
                    }
59
                });
60
            }
61
        } catch (error) {
62
            log.debug(error);
63
        }
64
    });
65
 
66
    $('[data-button="' + formid + '"]').on('click', function(event) {
67
        event.preventDefault();
68
        // Get the id (repeat number) from parent element.
69
        var id = $(this).parent().parent().parent().attr('id').split("_").slice(-1);
70
        var currentinput = inputidbase + id;
71
 
72
        $('#unilabel-modal-activity-picker-' + formid).attr('data-inputid', currentinput);
73
        $('#unilabel-modal-activity-picker-' + formid).modal('show');
74
    });
75
};