| 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();
 |