# charitable/1.8.13/assets/js/admin/charitable-admin-notifications.js

Charitable – Donation &amp; Fundraising Platform (Donation Forms, Recurring Donations &amp; Fundraising Campaigns), version 1.8.13. 199 lines.

- Page: https://pluginprobe.com/plugins/charitable/1.8.13/code/assets/js/admin/charitable-admin-notifications.js
- Raw: https://pluginprobe.com/plugins/charitable/1.8.13/raw/assets/js/admin/charitable-admin-notifications.js
- Modified: 2024-10-31T13:33:52+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/charitable/1.8.13/code/assets/js/admin/charitable-admin-notifications.js#L10-L20`.

```javascript
/* global charitable_admin, WPCharitableAdmin */

/**
 * WPCharitable Admin Notifications.
 *
 * @since 1.6.0
 */

 'use strict';

 var WPCharitableAdminNotifications = window.WPCharitableAdminNotifications || ( function( document, window, $ ) {

    $('#charitable-notifications').insertAfter( $( '.wp-header-end' ) );

     /**
      * Elements holder.
      *
      * @since 1.6.0
      *
      * @type {object}
      */
     var el = {

         $notifications:    $( '#charitable-notifications' ),
         $nextButton:       $( '#charitable-notifications .navigation .next' ),
         $prevButton:       $( '#charitable-notifications .navigation .prev' ),
         $adminBarCounter:  $( '#wp-admin-bar-charitable-menu .charitable-menu-notification-counter' ),
         $adminBarMenuItem: $( '#wp-admin-bar-charitable-notifications' ),

     };

     /**
      * Public functions and properties.
      *
      * @since 1.6.0
      *
      * @type {object}
      */
     var app = {

         /**
          * Start the engine.
          *
          * @since 1.6.0
          */
         init: function() {

             $( app.ready );
         },

         /**
          * Document ready.
          *
          * @since 1.6.0
          */
         ready: function() {

             app.updateNavigation();
             app.events();
         },

         /**
          * Register JS events.
          *
          * @since 1.6.0
          */
         events: function() {

             el.$notifications
                 .on( 'click', '.dismiss', app.dismiss )
                 .on( 'click', '.next', app.navNext )
                 .on( 'click', '.prev', app.navPrev );
         },

         /**
          * Click on the Dismiss notification button.
          *
          * @since 1.6.0
          *
          * @param {object} event Event object.
          */
         dismiss: function( event ) {

             if ( el.$currentMessage.length === 0 ) {
                 return;
             }

             // Update counter.
             var count = parseInt( el.$adminBarCounter.text(), 10 );
             if ( count > 1 ) {
                 --count;
                 el.$adminBarCounter.html( count );
             } else {
                 el.$adminBarCounter.remove();
                 el.$adminBarMenuItem.remove();
             }

             // Remove notification.
             var $nextMessage = el.$nextMessage.length < 1 ? el.$prevMessage : el.$nextMessage,
                 messageId = el.$currentMessage.data( 'message-id' );

             if ( $nextMessage.length === 0 ) {
                 el.$notifications.remove();
             } else {
                 el.$currentMessage.remove();
                 $nextMessage.addClass( 'current' );
                 app.updateNavigation();
             }

             // AJAX call - update option.
             var data = {
                 action: 'charitable_notification_dismiss',
                 nonce: charitable_admin.nonce,
                 id: messageId,
             };

             $.post( charitable_admin.ajax_url, data, function( res ) {

                 if ( ! res.success ) {
                     // WPCharitableAdmin.debug( res );
                     console.log( res );
                 }
             } ).fail( function( xhr, textStatus, e ) {

                //  WPCharitableAdmin.debug( xhr.responseText );
                console.log( xhr.responseText );
             } );
         },

         /**
          * Click on the Next notification button.
          *
          * @since 1.6.0
          *
          * @param {object} event Event object.
          */
         navNext: function( event ) {

             if ( el.$nextButton.hasClass( 'disabled' ) ) {
                 return;
             }

             el.$currentMessage.removeClass( 'current' );
             el.$nextMessage.addClass( 'current' );

             app.updateNavigation();
         },

         /**
          * Click on the Previous notification button.
          *
          * @since 1.6.0
          *
          * @param {object} event Event object.
          */
         navPrev: function( event ) {

             if ( el.$prevButton.hasClass( 'disabled' ) ) {
                 return;
             }

             el.$currentMessage.removeClass( 'current' );
             el.$prevMessage.addClass( 'current' );

             app.updateNavigation();
         },

         /**
          * Update navigation buttons.
          *
          * @since 1.6.0
          */
         updateNavigation: function() {

             el.$currentMessage = el.$notifications.find( '.charitable-notifications-message.current' );
             el.$nextMessage = el.$currentMessage.next( '.charitable-notifications-message' );
             el.$prevMessage = el.$currentMessage.prev( '.charitable-notifications-message' );

             if ( el.$nextMessage.length === 0 ) {
                 el.$nextButton.addClass( 'disabled' );
             } else {
                 el.$nextButton.removeClass( 'disabled' );
             }

             if ( el.$prevMessage.length === 0 ) {
                 el.$prevButton.addClass( 'disabled' );
             } else {
                 el.$prevButton.removeClass( 'disabled' );
             }
         },
     };

     return app;

 }( document, window, jQuery ) );

 // Initialize.
 WPCharitableAdminNotifications.init();

```
