# king-addons/51.1.79/includes/admin/js/rating-notice.js

King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder, version 51.1.79. 152 lines.

- Page: https://pluginprobe.com/plugins/king-addons/51.1.79/code/includes/admin/js/rating-notice.js
- Raw: https://pluginprobe.com/plugins/king-addons/51.1.79/raw/includes/admin/js/rating-notice.js
- Modified: 2026-09-06T21:53:12+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/king-addons/51.1.79/code/includes/admin/js/rating-notice.js#L10-L20`.

```javascript
/**
 * King Addons - Rating Notice JavaScript
 */
(function($) {
    'use strict';

    const ratingTexts = {
        1: '😞 Poor',
        2: '😐 Fair', 
        3: '🙂 Good',
        4: '😊 Very Good',
        5: '🤩 Excellent!'
    };

    let selectedRating = 0;

    $(document).ready(function() {
        const $notice = $('.king-addons-rating-notice');
        
        if (!$notice.length) {
            return;
        }

        const $stars = $notice.find('.king-addons-star');
        const $ratingText = $notice.find('.king-addons-rating-text');
        const $feedbackForm = $notice.find('.king-addons-feedback-form');

        // Star hover effect
        $stars.on('mouseenter', function() {
            const starValue = $(this).data('star');
            highlightStars(starValue, 'hover');
            $ratingText.text(ratingTexts[starValue]);
        });

        $stars.on('mouseleave', function() {
            highlightStars(selectedRating, 'active');
            $ratingText.text(selectedRating ? ratingTexts[selectedRating] : '');
        });

        // Star click
        $stars.on('click', function() {
            const $this = $(this);
            selectedRating = $this.data('star');
            
            // Add pop animation
            $stars.removeClass('pop');
            $stars.each(function() {
                if ($(this).data('star') <= selectedRating) {
                    $(this).addClass('pop');
                }
            });
            
            highlightStars(selectedRating, 'active');
            $ratingText.text(ratingTexts[selectedRating]);

            if (selectedRating === 5) {
                // 5 stars - redirect to WordPress.org
                setTimeout(function() {
                    window.open(KingAddonsRating.wpOrgUrl, '_blank');
                    markAsRated();
                    $notice.slideUp(300);
                }, 400);
            } else {
                // Less than 5 - show feedback form
                setTimeout(function() {
                    $notice.addClass('show-feedback');
                    $feedbackForm.slideDown(300);
                    $feedbackForm.find('textarea').focus();
                }, 300);
            }
        });

        /**
         * Highlight stars up to a given count
         */
        function highlightStars(count, className) {
            $stars.removeClass('active hover');
            $stars.each(function() {
                if ($(this).data('star') <= count) {
                    $(this).addClass(className);
                }
            });
        }

        // Submit feedback
        $notice.on('click', '.king-addons-submit-feedback', function() {
            const $btn = $(this);
            const feedback = $notice.find('.king-addons-feedback-text').val();
            
            $btn.prop('disabled', true).text('Sending...');
            
            $.post(KingAddonsRating.ajaxurl, {
                action: 'king_addons_rating_feedback',
                nonce: KingAddonsRating.nonce,
                rating: selectedRating,
                feedback: feedback
            }, function() {
                $btn.text('Thank you! ✓');
                setTimeout(function() {
                    $notice.slideUp(300);
                }, 1000);
            }).fail(function() {
                $btn.prop('disabled', false).text('Send Feedback');
                alert('Failed to send feedback. Please try again.');
            });
        });

        // Skip feedback
        $notice.on('click', '.king-addons-skip-feedback', function() {
            markAsRated();
            $notice.slideUp(300);
        });

        // Maybe later
        $notice.on('click', '.king-addons-maybe-later', function(e) {
            e.preventDefault();
            $.post(KingAddonsRating.ajaxurl, {
                action: 'king_addons_rating_later',
                nonce: KingAddonsRating.nonce
            });
            $notice.slideUp(300);
        });

        // Already rated
        $notice.on('click', '.king-addons-already-rated', function(e) {
            e.preventDefault();
            markAsRated();
            $notice.slideUp(300);
        });

        // Dismiss button (X button) - acts like "Maybe Later"
        $notice.on('click', '.notice-dismiss, .king-addons-notice-dismiss-btn', function(e) {
            e.preventDefault();
            $.post(KingAddonsRating.ajaxurl, {
                action: 'king_addons_rating_later',
                nonce: KingAddonsRating.nonce
            });
            $notice.slideUp(300);
        });

        /**
         * Mark as rated via AJAX
         */
        function markAsRated() {
            $.post(KingAddonsRating.ajaxurl, {
                action: 'king_addons_rating_rated',
                nonce: KingAddonsRating.nonce
            });
        }
    });
})(jQuery);

```
