Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 11
Línea 23... Línea 23...
23
 
23
 
24
import ModalForm from 'core_form/modalform';
24
import ModalForm from 'core_form/modalform';
25
import {getString} from 'core/str';
25
import {getString} from 'core/str';
26
import Notification from 'core/notification';
26
import Notification from 'core/notification';
-
 
27
import * as FormChangeChecker from 'core_form/changechecker';
Línea 27... Línea 28...
27
import * as FormChangeChecker from 'core_form/changechecker';
28
import PendingPromise from 'core/pending';
28
 
29
 
29
const Selectors = {
30
const Selectors = {
Línea -... Línea 31...
-
 
31
    advancedFormLink: 'a.showadvancedform'
-
 
32
};
-
 
33
 
-
 
34
const getDetailsFromEvent = (event) => {
-
 
35
    if (event.target.closest('[data-trigger="add-item-form"]')) {
-
 
36
        const trigger = event.target.closest('[data-trigger="add-item-form"]');
-
 
37
 
-
 
38
        return {
-
 
39
            trigger,
-
 
40
            formClass: 'core_grades\\form\\add_item',
-
 
41
            titleKey: trigger.getAttribute('data-itemid') === '-1' ? 'newitem' : 'itemsedit',
-
 
42
            args: {
-
 
43
                itemid: trigger.getAttribute('data-itemid'),
-
 
44
            },
-
 
45
        };
-
 
46
    } else if (event.target.closest('[data-trigger="add-category-form"]')) {
-
 
47
        const trigger = event.target.closest('[data-trigger="add-category-form"]');
-
 
48
        return {
-
 
49
            trigger,
-
 
50
            formClass: 'core_grades\\form\\add_category',
-
 
51
            titleKey: trigger.getAttribute('data-category') === '-1' ? 'newcategory' : 'categoryedit',
-
 
52
            args: {
-
 
53
                category: trigger.getAttribute('data-category'),
-
 
54
            },
-
 
55
        };
-
 
56
    } else if (event.target.closest('[data-trigger="add-outcome-form"]')) {
-
 
57
        const trigger = event.target.closest('[data-trigger="add-outcome-form"]');
-
 
58
        return {
-
 
59
            trigger,
-
 
60
            formClass: 'core_grades\\form\\add_outcome',
-
 
61
            titleKey: trigger.getAttribute('data-itemid') === '-1' ? 'newoutcomeitem' : 'outcomeitemsedit',
-
 
62
            args: {
-
 
63
                itemid: trigger.getAttribute('data-itemid'),
-
 
64
            },
-
 
65
        };
-
 
66
    }
-
 
67
 
30
    advancedFormLink: 'a.showadvancedform'
68
    return null;
31
};
69
};
32
 
70
 
33
/**
71
/**
34
 * Initialize module
72
 * Initialize module
35
 */
73
 */
36
export const init = () => {
74
export const init = () => {
Línea 37... Línea -...
37
    // Sometimes the trigger does not exist, so lets conditionally add it.
-
 
38
    document.addEventListener('click', event => {
-
 
39
        const args = {};
75
    // Sometimes the trigger does not exist, so lets conditionally add it.
40
 
-
 
41
        let formClass = null;
-
 
42
        let title = null;
-
 
43
        let trigger = null;
-
 
44
        if (event.target.closest('[data-trigger="add-item-form"]')) {
-
 
45
            event.preventDefault();
-
 
46
            trigger = event.target.closest('[data-trigger="add-item-form"]');
-
 
47
            formClass = 'core_grades\\form\\add_item';
-
 
48
            title = trigger.getAttribute('data-itemid') === '-1' ?
76
    document.addEventListener('click', event => {
49
                getString('newitem', 'core_grades') : getString('itemsedit', 'core_grades');
-
 
50
            args.itemid = trigger.getAttribute('data-itemid');
-
 
51
        } else if (event.target.closest('[data-trigger="add-category-form"]')) {
-
 
52
            event.preventDefault();
77
        const triggerData = getDetailsFromEvent(event);
53
            trigger = event.target.closest('[data-trigger="add-category-form"]');
-
 
54
            formClass = 'core_grades\\form\\add_category';
-
 
55
            title = trigger.getAttribute('data-category') === '-1' ?
-
 
56
                getString('newcategory', 'core_grades') : getString('categoryedit', 'core_grades');
-
 
57
            args.category = trigger.getAttribute('data-category');
-
 
58
        } else if (event.target.closest('[data-trigger="add-outcome-form"]')) {
-
 
59
            event.preventDefault();
-
 
60
            trigger = event.target.closest('[data-trigger="add-outcome-form"]');
-
 
61
            formClass = 'core_grades\\form\\add_outcome';
-
 
Línea 62... Línea 78...
62
            title = trigger.getAttribute('data-itemid') === '-1' ?
78
 
63
                getString('newoutcomeitem', 'core_grades') : getString('outcomeitemsedit', 'core_grades');
79
        if (triggerData) {
64
            args.itemid = trigger.getAttribute('data-itemid');
80
            event.preventDefault();
Línea 65... Línea 81...
65
        }
81
            const pendingPromise = new PendingPromise(`core_grades:add_item:${triggerData.args.itemid}`);
66
 
82
 
67
        if (trigger) {
83
            const {trigger, formClass, titleKey, args} = triggerData;
68
            args.courseid = trigger.getAttribute('data-courseid');
84
            args.courseid = trigger.getAttribute('data-courseid');
69
            args.gpr_plugin = trigger.getAttribute('data-gprplugin');
85
            args.gpr_plugin = trigger.getAttribute('data-gprplugin');
70
 
86
 
71
            const modalForm = new ModalForm({
87
            const modalForm = new ModalForm({
72
                modalConfig: {
88
                modalConfig: {
73
                    title: title,
89
                    title: getString(titleKey, 'core_grades'),
Línea 74... Línea 90...
74
                },
90
                },
75
                formClass: formClass,
91
                formClass: formClass,
76
                args: args,
92
                args: args,
-
 
93
                saveButtonText: getString('save', 'core'),
77
                saveButtonText: getString('save', 'core'),
94
                returnFocus: trigger,
78
                returnFocus: trigger,
95
            });
79
            });
96
 
80
 
97
            // Show a toast notification when the form is submitted.
81
            // Show a toast notification when the form is submitted.
98
            modalForm.addEventListener(modalForm.events.FORM_SUBMITTED, event => {
82
            modalForm.addEventListener(modalForm.events.FORM_SUBMITTED, event => {
99
                if (event.detail.result) {
83
                if (event.detail.result) {
100
                    new PendingPromise('core_grades:form_submitted');
84
                    window.location.assign(event.detail.url);
101
                    window.location.assign(event.detail.url);
Línea 85... Línea 102...
85
                } else {
102
                } else {
-
 
103
                    Notification.addNotification({
86
                    Notification.addNotification({
104
                        type: 'error',
Línea 87... Línea 105...
87
                        type: 'error',
105
                        message: getString('saving_failed', 'core_grades')
-
 
106
                    });
88
                        message: getString('saving_failed', 'core_grades')
107
                }
89
                    });
108
            });
-
 
109
 
-
 
110
            modalForm.show();
-
 
111
            pendingPromise.resolve();
90
                }
112
        }
91
            });
113
 
92
 
114
        const showAdvancedForm = event.target.closest(Selectors.advancedFormLink);
93
            modalForm.show();
115
        if (showAdvancedForm) {
94
        }
116
            // Navigate to the advanced form page and cary over any entered data.