Proyectos de Subversion Moodle

Rev

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

Rev 1 Rev 1441
Línea 23... Línea 23...
23
 * @copyright  2016 Ryan Wyllie <ryan@moodle.com>
23
 * @copyright  2016 Ryan Wyllie <ryan@moodle.com>
24
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25
 */
25
 */
26
define(['jquery', 'core/ajax', 'core/templates', 'core/str', 'core/url',
26
define(['jquery', 'core/ajax', 'core/templates', 'core/str', 'core/url',
27
            'core/notification', 'core/custom_interaction_events', 'core/popover_region_controller',
27
            'core/notification', 'core/custom_interaction_events', 'core/popover_region_controller',
28
            'message_popup/notification_repository', 'message_popup/notification_area_events'],
28
            'message_popup/notification_repository', 'message_popup/notification_area_events',
-
 
29
            'core/local/aria/focuslock',
-
 
30
        ],
29
        function($, Ajax, Templates, Str, URL, DebugNotification, CustomEvents,
31
        function($, Ajax, Templates, Str, URL, DebugNotification, CustomEvents,
30
            PopoverController, NotificationRepo, NotificationAreaEvents) {
32
            PopoverController, NotificationRepo, NotificationAreaEvents, FocusLock) {
Línea 31... Línea 33...
31
 
33
 
32
    var SELECTORS = {
34
    var SELECTORS = {
33
        MARK_ALL_READ_BUTTON: '[data-action="mark-all-read"]',
35
        MARK_ALL_READ_BUTTON: '[data-action="mark-all-read"]',
34
        ALL_NOTIFICATIONS_CONTAINER: '[data-region="all-notifications"]',
36
        ALL_NOTIFICATIONS_CONTAINER: '[data-region="all-notifications"]',
35
        NOTIFICATION: '[data-region="notification-content-item-container"]',
37
        NOTIFICATION: '[data-region="notification-content-item-container"]',
36
        UNREAD_NOTIFICATION: '[data-region="notification-content-item-container"].unread',
38
        UNREAD_NOTIFICATION: '[data-region="notification-content-item-container"].unread',
37
        NOTIFICATION_LINK: '[data-action="content-item-link"]',
39
        NOTIFICATION_LINK: '[data-action="content-item-link"]',
38
        EMPTY_MESSAGE: '[data-region="empty-message"]',
40
        EMPTY_MESSAGE: '[data-region="empty-message"]',
-
 
41
        COUNT_CONTAINER: '[data-region="count-container"]',
-
 
42
        NOTIFICATION_READ_FEEDBACK: '[data-region="notification-read-feedback"]',
39
        COUNT_CONTAINER: '[data-region="count-container"]',
43
        CLOSE_NOTIFICATION_POPOVER: '[data-action="close-notification-popover"]',
Línea 40... Línea 44...
40
    };
44
    };
41
 
45
 
42
    /**
46
    /**
Línea 311... Línea 315...
311
 
315
 
312
        return NotificationRepo.markAllAsRead(request)
316
        return NotificationRepo.markAllAsRead(request)
313
            .then(function() {
317
            .then(function() {
314
                this.unreadCount = 0;
318
                this.unreadCount = 0;
-
 
319
                this.root.find(SELECTORS.UNREAD_NOTIFICATION).removeClass('unread');
-
 
320
 
-
 
321
                // Set the ARIA live region's contents with the feedback.
-
 
322
                const readFeedback = this.root.get(0).querySelector(SELECTORS.NOTIFICATION_READ_FEEDBACK);
-
 
323
                Str.get_string('notificationsmarkedasread', 'message').done((notificationsmarkedasread) => {
-
 
324
                    readFeedback.innerHTML = notificationsmarkedasread;
315
                this.root.find(SELECTORS.UNREAD_NOTIFICATION).removeClass('unread');
325
                });
316
            }.bind(this))
326
            }.bind(this))
317
            .always(function() {
327
            .always(function() {
318
                this.markAllReadButton.removeClass('loading');
328
                this.markAllReadButton.removeClass('loading');
319
            }.bind(this));
329
            }.bind(this));
Línea 329... Línea 339...
329
            CustomEvents.events.activate,
339
            CustomEvents.events.activate,
330
        ]);
340
        ]);
Línea 331... Línea 341...
331
 
341
 
332
        // Mark all notifications read if the user activates the mark all as read button.
342
        // Mark all notifications read if the user activates the mark all as read button.
-
 
343
        this.root.on(CustomEvents.events.activate, SELECTORS.MARK_ALL_READ_BUTTON, function(e, data) {
333
        this.root.on(CustomEvents.events.activate, SELECTORS.MARK_ALL_READ_BUTTON, function(e, data) {
344
            if (this.unreadCount > 0) {
-
 
345
                this.markAllAsRead();
-
 
346
            }
334
            this.markAllAsRead();
347
 
335
            e.stopPropagation();
348
            e.stopPropagation();
336
            data.originalEvent.preventDefault();
349
            data.originalEvent.preventDefault();
Línea 337... Línea 350...
337
        }.bind(this));
350
        }.bind(this));
Línea 346... Línea 359...
346
            }
359
            }
Línea 347... Línea 360...
347
 
360
 
348
            e.stopPropagation();
361
            e.stopPropagation();
Línea -... Línea 362...
-
 
362
        }.bind(this));
-
 
363
 
-
 
364
        this.root.on(CustomEvents.events.activate, SELECTORS.CLOSE_NOTIFICATION_POPOVER, function(e) {
-
 
365
            e.preventDefault();
-
 
366
            $(this.root).trigger(CustomEvents.events.escape);
-
 
367
            e.stopPropagation();
349
        }.bind(this));
368
        }.bind(this));
350
 
369
 
351
        // Update the notification information when the menu is opened.
370
        // Update the notification information when the menu is opened.
352
        this.root.on(this.events().menuOpened, function() {
371
        this.root.on(this.events().menuOpened, function() {
Línea 353... Línea 372...
353
            this.hideUnreadCount();
372
            this.hideUnreadCount();
354
            this.updateButtonAriaLabel();
373
            this.updateButtonAriaLabel();
355
 
374
 
-
 
375
            if (!this.hasDoneInitialLoad()) {
-
 
376
                this.loadMoreNotifications();
-
 
377
            }
-
 
378
 
-
 
379
            // Lock focus to the popover when it is opened, it is the parent of the container.
356
            if (!this.hasDoneInitialLoad()) {
380
            const contentContainer = this.getContentContainer()[0].parentNode;
Línea 357... Línea 381...
357
                this.loadMoreNotifications();
381
            FocusLock.trapFocus(contentContainer);
358
            }
382
 
359
        }.bind(this));
383
        }.bind(this));
360
 
384
 
-
 
385
        // Update the unread notification count when the menu is closed.
-
 
386
        this.root.on(this.events().menuClosed, function() {
361
        // Update the unread notification count when the menu is closed.
387
            this.renderUnreadCount();
Línea 362... Línea 388...
362
        this.root.on(this.events().menuClosed, function() {
388
            this.updateButtonAriaLabel();
363
            this.renderUnreadCount();
389
            // Lock focus to the popover when it is opened, it is the parent of the container.
364
            this.updateButtonAriaLabel();
390
            FocusLock.untrapFocus();