HEX
Server: LiteSpeed
System: Linux cpir1.prohostdns.com 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP Thu May 7 23:17:13 UTC 2026 x86_64
User: pelakir (2976)
PHP: 8.2.31
Disabled: exec, shell_exec, system, passthru, proc_open, proc_close, proc_terminate, proc_get_status, popen, pclose, pcntl_exec
Upload Files
File: //home/pelakir/www/wp-content/plugins/woodmart-plus/assets/admin/js/new_dashboard/main.js
(function($){


$(document).ready(function(){
    
    $('.import-btn-account').on('click', function() {
        var designId = $(this).data('design');
        var fname = $(this).data('fname');
        var sliderImage = $(this).data('slider_image').split(',');
        var designTitle = $(this).closest('.design-item').find('.design-title').text();
        
        
        $('.import-status').show();
        $('.progress-bar').css('width', '0%');
        $('.import-message').text('در حال آماده‌سازی برای درون‌ریزی ' + designTitle + '...');

        var progress = 0;

        var interval = setInterval(function() {
           progress += 10;
           $('.progress-bar').css('width', progress + '%');

           if (progress < 30) {
              $('.import-message').text('در حال دانلود فایل‌ها...');
           } else if (progress < 60) {
              $('.import-message').text('در حال پردازش فایل‌ها...');
           } else if (progress < 90) {
              $('.import-message').text('در حال درون‌ریزی...');
           }
        }, 100);

        $.ajax({
            url : ajaxurl, dataType:'json', type:'POST',
            data : {
                'action': "import_myaccount",
                'import' : designId,
                'fname' : fname,
                'slider_image' : sliderImage
            },
            success:function(response){

                clearInterval(interval);
                $('.progress-bar').css('width', '100%');
                $('.import-message').text('درون‌ریزی با موفقیت انجام شد!');
                setTimeout(function() {
                    $('.import-status').fadeOut();
                }, 2000);

                $('.show_dashboard_builder').show();
            },
            error : function(error){
                clearInterval(interval);
                $('.progress-bar').css('width', '100%');
                $('.import-message').text(error.responseJSON.msg);
                $('.progress-bar').css('background-color', 'red');
                setTimeout(function() {
                    $('.import-status').fadeOut();
                    $('.progress-bar').css('background-color', 'green');
                }, 2000);
            }
        });

        
     });
    
});

$(document).ready(function () {
    $('.sidbar-menu ul li ').on('click', function () {
        if ($(this).hasClass('opened')) {
            // $(this).removeClass('opened');
        } else {
            $('.sidbar-menu ul li ').removeClass('opened');
            $(this).addClass('opened');
        }
    });
});


$(document).ready(function () {
    $('.submenu ul li').click(function () {
        $('.submenu ul li img , .submenu ul li ').removeClass('select');
        $(this).find('img').addClass('select');
        $(this).addClass('select');
        $('.sidbar-menu ul li ').removeClass('opened')
    });
});

$(document).ready(function () {
    $('.submenu ul li, .sidbar-menu-item').click(function () {
        
        var $this = $(this);
        var id_li = $(this).data('id');
        var main_wrapper    = $this.parents('.body-main-wrapper');
        var conntet_wrapper = main_wrapper.find('#'+id_li);
       
        if ($('.content-wrapper').hasClass('show-wrapper')) {
            $('.content-wrapper').removeClass('show-wrapper');
            // $('.sidbar-menu ul li ').removeClass('opened')
        }

        if( conntet_wrapper.length )
        {
            conntet_wrapper.addClass('show-wrapper');
            localStorage.setItem("lastLiSelected", id_li);
        }else{

            if( $this.siblings('.submenu').length )
            {
                var $submenu = $this.siblings('.submenu');
                $first_li = $submenu.find('ul li:first-child');

                var nextid = $first_li.data('id');
                
                if(  main_wrapper.find('#'+nextid).length )
                {
                    main_wrapper.find('#'+nextid).addClass('show-wrapper');

                    $first_li.addClass('select');

                    $first_li.find('img').addClass('select');
                    $('.sidbar-menu ul li ').removeClass('opened')
                }
               localStorage.setItem("lastLiSelected", nextid);
            }
        }
    });
});
$(document).ready(function(e){
    var $li_id = localStorage.getItem('lastLiSelected');
    
    if( $li_id )
    {
        if( $('li[data-id="'+$li_id+'"]').length ){
            $('li[data-id="'+$li_id+'"]').click();
        }
        if( $('div[data-id="'+$li_id+'"]').length )
        {
            $('div[data-id="'+$li_id+'"]').click();
        }
    }else{
        $('.sidbar-menu-item').first().trigger('click');
    }
})
// button
$('input[type=checkbox].switch').each(function () {
    $(this).on('change', function () {
        if ($(this).is(':checked')) {

            $(this).removeClass('unchecked-animate');
            $('.product-report-content ').stop(true, true).slideDown(200); // انیمیشن slideDown
        } else {

            $(this).addClass('unchecked-animate');
            $('.product-report-content ').stop(true, true).slideUp(200); // انیمیشن slideUp
        }
    });
});

// dropdown
$(document).ready(function () {
    const $dropdowns = $('.dropdown');

    if ($dropdowns.length > 0) {
        $dropdowns.each(function () {
            createCustomDropdown($(this));
        });
    }

    const $form = $('.form');
    if ($form.length > 0) {
        $form.on('submit', function (e) {
            e.preventDefault();
        });
    }

    function createCustomDropdown($dropdown) {
        const $options = $dropdown.find('option');
        const optionsArr = $options.toArray();

        const $customDropdown = $('<div>', { class: 'dropdown' });
        $dropdown.after($customDropdown);

        const $selected = $('<div>', { class: 'dropdown-select', text: $options.filter(':selected').text() });
        $customDropdown.append($selected);

        const $menu = $('<div>', { class: 'dropdown-menu' });
        $customDropdown.append($menu);
        $selected.on('click', function () {
            toggleDropdown($menu, $selected);
        });

        const $search = $('<input>', { type: 'text', placeholder: 'جست و جو', class: 'dropdown-menu-search' });
        $menu.append($search);

        const $menuInnerWrapper = $('<div>', { class: 'dropdown-menu-inner' });
        $menu.append($menuInnerWrapper);
        
        $options.each(function () {
            const $option = $(this);
            var newClass = $option.is(':selected') ? 'is-select' : '';
            
            const $item = $('<div>', {
                class: 'dropdown-menu-item '+newClass,
                'data-value': $option.val(),
                text: $option.text()
            });
            $menuInnerWrapper.append($item);

            if ($option.prop('disabled')) {
                $item.addClass('disabled-item');
                $item.on('click', function (e) {
                    e.stopPropagation();
                });
            } else {
                $item.on('click', function () {
                    setSelected($(this), $selected, $dropdown, $menu);
                });
            }
        });

        // $menuInnerWrapper.find('div').first().addClass('is-select');

        $search.on('input', function () {
            filterItems(optionsArr, $menu, $(this).val());
        });

        $(document).on('click', function (e) {
            closeIfClickedOutside($menu, e);
        });

        $dropdown.hide();
    }

    function toggleDropdown($menu, $selected) {
        $menu.toggleClass('open');
        $selected.toggleClass('open');
    }

    function setSelected($item, $selected, $dropdown, $menu) {
        const value = $item.data('value');
        const label = $item.text();

        if ($item.hasClass('disabled-item')) {
            return;
        }

        $selected.text(label);
        $dropdown.val(value);

        $selected.addClass('is-selected');

        $menu.removeClass('open');
        $selected.removeClass('open');
        $menu.find('input').val('');

        $menu.find('.dropdown-menu-item').removeClass('is-select').show();
        $item.addClass('is-select');

        if (value === 'ready') {
            $('.ready-loding').slideDown(200);
            $('.personal-loding').hide();
        } else if (value === 'personal') {
            $('.personal-loding').slideDown(200);
            $('.ready-loding').hide();
        } else {
            $('.ready-loding').hide();
            $('.personal-loding').hide();
        }
    }

    function filterItems(itemsArr, $menu, searchValue) {
        const $customOptions = $menu.find('.dropdown-menu-inner div');
        const value = searchValue.toLowerCase();

        const indexesArr = itemsArr
            .filter(item => $(item).text().toLowerCase().includes(value))
            .map(item => itemsArr.indexOf(item));

        $customOptions.each(function () {
            const $option = $(this);
            const index = $customOptions.index($option);

            if (!indexesArr.includes(index)) {
                $option.hide();
            } else {
                $option.show();
            }
        });
    }

    function closeIfClickedOutside($menu, e) {
        if (!$(e.target).closest('.dropdown').length && !$menu.has(e.target).length && $menu.hasClass('open')) {
            $menu.removeClass('open');
            $('.dropdown-select').removeClass('open');
        }
    }
});

// با انتخاب گزینه سفارشی سازی
$(document).ready(function () {

    $('.dropdown-menu-item').on('click', function () {
        const selectedValue = $(this).data('value');
        const $parentItem = $(this).closest('.item');

        if (selectedValue === 'custom') {
            $parentItem.find('.inp-rang').css('display', 'flex').hide().slideDown();
        } else {
            $parentItem.find('.inp-rang').slideUp(function () {
                $(this).css('display', 'none');
            });
        }
    });
});

//  for animations
$('.animations .anim-item').click(function () {
    $('.animations .anim-item').removeClass('active');
    $(this).addClass('active');
});


// sidbar
$('.sidbar-item').on('click', function () {
    $('.sidbar-item').removeClass('select');
    $(this).addClass('select');
})

// rang
$(document).ready(function () {
    $('.rang').each(function () {
        var value = $(this).val();
        var min = $(this).attr('min');
        var max = $(this).attr('max');
        var percentage = (value - min) / (max - min) * 100;
        $(this).css('background', 'linear-gradient(to right, var(--theme-main) ' + percentage + '%, var(--gray-11) ' + percentage + '%)');
        $(this).next('.rang-number').find('span.num').text(value);
    });

    $('.rang').on('input', function () {
        var value = $(this).val();
        var min = $(this).attr('min');
        var max = $(this).attr('max');
        var percentage = (value - min) / (max - min) * 100;
        $(this).css('background', 'linear-gradient(to right, var(--theme-main) ' + percentage + '%, var(--gray-11) ' + percentage + '%)');
        $(this).next('.rang-number').find('span.num').text(value);
    });
});


// to open and close a new

$(document).ready(function () {
    $('.sliders_section,.offer_section,.notif_section,.open_acard').on('click','.suggestion-title', function () {
        var parent = $(this).closest('.add-suggestions'); 
        parent.toggleClass('opened');
    });
});

// show and hide days
$(document).ready(function () {

    $('.send-day input[type="checkbox"]').on('change', function () {
        var sendTime = $(this).closest('.shipping-time').find('.send-time');
        if ($(this).is(':checked')) {
            sendTime.slideDown(300);
        } else {
            sendTime.slideUp(300);
        }
    }).trigger('change');
});

$(document).ready(function () {

    $('.add-time').on('click', function (e) {
        e.preventDefault();
        var $this = $(this);
        var $parent = $this.parents('.send-time');
        var $name = $parent.find('.hours-time input').attr('name');
        console.log( $name );
        var newTime = $('<div class="hours-time"><input type="text" placeholder="'+dashboardScript.add_time_placeholder+'" name="'+$name+'" autocomplete="disable" ><a class="delete-btn"><img src="'+dashboardScript.trash_svg+'" alt="remove"></a></div>');
        var addTime = $(this).closest('.send-time');
        newTime.hide().prependTo(addTime).slideDown(200); // ابتدا آیتم مخفی می‌شود، سپس با انیمیشن اضافه می‌شود
    });

    $('.send-time').on('click', '.delete-btn', function (e) {
        e.preventDefault();
        var delete_inp = $(this).closest('.hours-time');
        delete_inp.slideUp(300, function () {
            $(this).remove();
        });
    });
});


//  add filed
$(document).ready(function () {
    $("#addFieldBtn").click(function () {

        var newItem = `
          <div class="field-item">
<div><img src="./img/menu.svg" alt=""></div>
<div><input type="text" placeholder="فیلد سفارشی"></div>
<div><input type="text" placeholder="custom_field"></div>
<div><input type="text" placeholder="فیلد سفارشی"></div>
                                                       
<div class="btn-select select-filed">
<input type="checkbox" class="switch" id="switch1">
</div>
<div class="btn-select select-filed">
<input type="checkbox" class="switch" id="switch1">
</div>
<div class="btn-select select-filed">
<input type="checkbox" class="switch" id="switch1">
</div>
<div>
<button class="delete-btn"><img src="./img/trash.svg" alt=""></button>
</div>
</div>
`;


        $(".peyment-fields").append(newItem);
    });


    $(document).on('click', '.delete-btn', function () {
        $(this).closest('.field-item').remove();
    });
});

// for focus and hover input
$(document).ready(function () {
    $('input[type="text"]').hover(function () {
        $(this).addClass('hovered');
    });

    $('input[type="text"]').focus(function () {
        $(this).removeClass('hovered');

    });
});



$(document).ready(function () {
    if( $('.js-example-basic-multiple').length )
    {
        $('.js-example-basic-multiple').select2();
    }
});


$(document).ready(function(){

    if( !$('.multi-select-category').length ){
        return;
    }
    
    $('.multi-select-category').select2({
        ajax: {
          url: ajaxurl + "?action=wplus_get_categories",
          //type: 'POST',
          dataType: "json",
          delay: 250,
          data: function (params) {
            return {
              search: params.term,
              page: params.page || 1,
            };
          },
          processResults: function (data) {
            data.page = data.page || 1;
            return {
              results: data.items,
              pagination: {
                more: data.pagination,
              },
            };
          },
        },
        placeholder: dashboardScript.select2.productCatSearch,
        allowClear: true,
        cache: true,
        language: {
            errorLoading: () => dashboardScript.select2.errorLoading,
            loadingMore: () => dashboardScript.select2.loadingMore,
            noResults: () => dashboardScript.select2.noResults,
            searching: () => dashboardScript.select2.searching,
            removeAllItems: () => dashboardScript.select2.removeAllItems,
            removeItem: () => dashboardScript.select2.removeItem
          }
      }
    );

});

$(document).ready(function(){

    if( !$('.multi-select-user').length ){
        return;
    }
    
    $('.multi-select-user').select2({
        ajax: {
          url: ajaxurl + "?action=wplus_get_users",
          //type: 'POST',
          dataType: "json",
          delay: 250,
          data: function (params) {
            return {
              search: params.term,
              page: params.page || 1,
            };
          },
          processResults: function (data) {
            data.page = data.page || 1;
            return {
              results: data.items,
              pagination: {
                more: data.pagination,
              },
            };
          },
        },
        placeholder: dashboardScript.select2.userSearch,
        allowClear: true,
        cache: true,
        language: {
            errorLoading: () => dashboardScript.select2.errorLoading,
            loadingMore: () => dashboardScript.select2.loadingMore,
            noResults: () => dashboardScript.select2.noResults,
            searching: () => dashboardScript.select2.searching,
            removeAllItems: () => dashboardScript.select2.removeAllItems,
            removeItem: () => dashboardScript.select2.removeItem
          }
      }
    );

});



$('.iner-btns .imp-clipboard').on('click', function () {
    $('.text-input').stop(true, true).slideDown(200);
})
$('.iner-btns .imp-file').on('click', function () {
    $('.file-name').stop(true, true).slideDown(200);

})


// 
$(document).ready(function () {
    // افزودن ورودی جدید با اسلاید
    $('.postal-companies .add-time').on('click', function () {
        let newInput = `
        <div class="hours-time names-postal-companies" style="display: none;">
            <input type="text" placeholder="شرکت ملی پست" class="hovered">
            <a class="delete-btn">
                <img src="./img/trash.svg" alt="">
            </a>
        </div>`;

        // اضافه کردن به HTML
        let $newElement = $(newInput).prependTo('.postal-companies');

        // اسلاید کردن به سمت پایین برای نمایش عنصر
        $newElement.slideDown(200);
    });

    // حذف ورودی هنگام کلیک روی دکمه حذف
    $(document).on('click', '.delete-btn', function () {
        var postal_parent = $(this).closest('.names-postal-companies');
        postal_parent.slideUp(100, function() {
            postal_parent.remove();
        });
    });
});

if( $('.sliders_section,.offer_section,.notif_section,.repeater-container').length )
{
    $('.sliders_section,.offer_section,.notif_section,.repeater-container').repeater({
        isFirstItemUndeletable: false,
        initEmpty: false,
        show: function () {
            var currentTimeStamp = Math.floor(Date.now() / 1000);
            $(this).find('.date_notif_class').attr('value',currentTimeStamp);
            $(this).addClass('opened');
            $('.upload_image', this).html('');
            $('.upload-image-button', this).removeClass('blue-btn upload-btn').html('ویرایش');
            $('.upload-image-button', this).addClass('blue-btn upload-btn').html('آپلود');
            $('.remove-image-button', this).hide();
            $(this).slideDown();
            
            if( $('.js-example-basic-multiple').length )
            {
                $('.js-example-basic-multiple').select2();
            }
            
            if( $('.color_picke').length )
            {
                $('.color_picke').wpColorPicker();
            }
            
        },
        hide: function (deleteElement) {
            //if(confirm(pgs_woo_api.delete_msg)) {
                $(this).slideUp(deleteElement);
            //}
        },
        ready: function (setIndexes) {
            
        }
    });
}

$('.btn-select input').on('click',function(e){
    if ($(this).is(':checked')) {

        $(this).val( 1 ).trigger( 'change' );
    }else{
        $(this).val( 0 ).trigger( 'change' );
    }
});


$(document).ready(function($) {
    $('.show-content-btn').click(function() {
        $('.content-popup').fadeIn();
    });

    $('.close-btn').click(function() {
        $('.content-popup').fadeOut();
    });

    $('.content-popup').click(function(e) {
        if ($(e.target).hasClass('content-popup')) {
            $(this).fadeOut();
        }
    });
});

$(document).ready(function(){
    $('.state_how_sell+.dropdown .dropdown-menu-item').on('click',function(){
        
        var $this = $(this);
        var $value = $this.data('value');
        if( 'unique_state' === $value )
        {
            $('body .unique_state').show();
        }else{
            $('body .unique_state').hide();
        }
        
    });

    var $value = $('.state_how_sell+.dropdown .dropdown-menu-item.is-select');
    var $fined = $value.data('value')
    if( 'unique_state' === $fined )
    {
        $('body .unique_state').show();
    }
    
});

$(document).ready(function(){
    $('body').on('click','.generate-pattern-customer',function(e){
        e.preventDefault();
        
        var $button = $(this);
        var $buttonContainer = $button.closest('div');
        
        // غیرفعال کردن دکمه و اضافه کردن لودر
        $button.prop('disabled', true).addClass('loading');
        $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();
        
        $.ajax({
            dataType:'json',type:'POST', url : ajaxurl,
            data : {
                action : 'generate_pattern_customer',
                nonce : dashboardScript.nonce
            },
            success:function(response){
                if(response.data){
                    var patternMapping = {
                        'customer_pending_now': {
                            class: 'customer_pending_now',
                            patternName: 'pattern-pending-now',
                            variablesName: 'variables-pending-now'
                        },
                        'customer_pending': {
                            class: 'customer_pending',
                            patternName: 'pattern-pending',
                            variablesName: 'variables-pending'
                        },
                        'customer_processing': {
                            class: 'customer_processing',
                            patternName: 'pattern-processing',
                            variablesName: 'variables-processing'
                        },
                        'customer_onhold': {
                            class: 'customer_onhold',
                            patternName: 'pattern-on-hold',
                            variablesName: 'variables-on-hold'
                        },
                        'customer_completed': {
                            class: 'customer_completed',
                            patternName: 'pattern-completed',
                            variablesName: 'variables-completed'
                        },
                        'customer_cancelled': {
                            class: 'customer_cancelled',
                            patternName: 'pattern-cancelled',
                            variablesName: 'variables-cancelled'
                        },
                        'customer_refunded': {
                            class: 'customer_refunded',
                            patternName: 'pattern-refunded',
                            variablesName: 'variables-refunded'
                        },
                        'customer_failed': {
                            class: 'customer_failed',
                            patternName: 'pattern-failed',
                            variablesName: 'variables-failed'
                        },
                        'customer_checkout_draft': {
                            class: 'customer_checkout_draft',
                            patternName: 'pattern-checkout-draft',
                            variablesName: 'variables-checkout-draft'
                        }
                    };
                    
                    for(var key in response.data){
                        if(response.data.hasOwnProperty(key) && patternMapping[key]){
                            var patternData = response.data[key];
                            var mapping = patternMapping[key];
                            
                            // قرار دادن code در input pattern
                            var patternInput = $('input[name*="[notif_customer][' + mapping.patternName + ']"]');
                            if(patternInput.length && patternData.code){
                                patternInput.val(patternData.code);
                            }
                            
                            // پیدا کردن repeater container مربوط به variables
                            var repeaterContainer = $('.' + mapping.class).find('[data-repeater-list*="' + mapping.variablesName + '"]');
                            
                            if(repeaterContainer.length && patternData.variables && patternData.variables.length > 0){
                                // گرفتن مسیر تصویر trash از یک آیتم موجود (اگر وجود داشته باشد)
                                var trashImgSrc = '';
                                var existingItem = repeaterContainer.find('[data-repeater-item]').first();
                                if(existingItem.length){
                                    trashImgSrc = existingItem.find('[data-repeater-delete] img').attr('src') || '';
                                } else {
                                    // اگر آیتمی وجود نداشت، از یک repeater دیگر استفاده کن
                                    var otherRepeater = $('[data-repeater-item]').first();
                                    if(otherRepeater.length){
                                        trashImgSrc = otherRepeater.find('[data-repeater-delete] img').attr('src') || '';
                                    }
                                }
                                
                                // اگر مسیر تصویر پیدا نشد، از مسیر پیش‌فرض استفاده کن
                                if(!trashImgSrc){
                                    trashImgSrc = '/wp-content/plugins/theme-plus/assets/admin/img/dashboard/trash.svg';
                                }
                                
                                // گرفتن data-repeater-list برای ساخت name های داینامیک
                                var repeaterListName = repeaterContainer.attr('data-repeater-list') || '';
                                
                                // پاک کردن آیتم‌های موجود در repeater
                                repeaterContainer.find('[data-repeater-item]').remove();
                                
                                // اضافه کردن variables به repeater
                                patternData.variables.forEach(function(variable, index){
                                    // تبدیل نام متغیر به فرمت shortcode
                                    var shortcode = '[' + variable.name + ']';
                                    
                                    // Escape کردن مقادیر برای جلوگیری از XSS
                                    var escapedVariableName = $('<div>').text(variable.name || '').html();
                                    var escapedShortcode = $('<div>').text(shortcode || '').html();
                                    
                                    // ساخت name های داینامیک بر اساس data-repeater-list
                                    // مثال: themeplus_settings[notif_customer][variables-pending-now][0][variable]
                                    var variableName = repeaterListName + '[' + index + '][variable]';
                                    var shortcodeName = repeaterListName + '[' + index + '][shortcode]';
                                    
                                    // ایجاد HTML برای آیتم جدید
                                    var itemHtml = '<div data-repeater-item>' +
                                        '<div class="send-time">' +
                                            '<div>' +
                                                '<input type="text" name="' + variableName + '" placeholder="متغیر" value="' + escapedVariableName + '">' +
                                                '<input type="text" name="' + shortcodeName + '" placeholder="شورتکد" value="' + escapedShortcode + '">' +
                                                '<a data-repeater-delete class="delete-btn">' +
                                                    '<img src="' + trashImgSrc + '" alt="">' +
                                                '</a>' +
                                            '</div>' +
                                        '</div>' +
                                    '</div>';
                                    
                                    // اضافه کردن به repeater
                                    repeaterContainer.append(itemHtml);
                                });
                            }
                        }
                    }
                }
                
                // نمایش پیغام موفقیت
                $buttonContainer.find('.pattern-error-message').remove();
                var adminUrl = response.pattern_url;
                var successMessage = '<div class="pattern-success-message">' +
                    '<p>پترن های شما ایجاد شد. از این <a href="' + adminUrl + '" target="_blank">لینک</a> وضعیت پترن های خود را بررسی کنید.</p>' +
                    '</div>';
                $buttonContainer.append(successMessage);
            },
            error: function(error){
                console.error('Error generating pattern:', error);
                var txtErrorMessage = error?.responseJSON?.message; 

                if( !txtErrorMessage )
                {
                    txtErrorMessage = 'خطا در ایجاد پترن ها. لطفا دوباره تلاش کنید';
                }
                
                var errorMessage = '<div class="pattern-error-message">' +
                    '<p>'+txtErrorMessage+'</p>' +
                '</div>';
                
                $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();
                $buttonContainer.append(errorMessage);
            },
            complete: function(){
                // فعال کردن دکمه و حذف لودر
                $button.prop('disabled', false).removeClass('loading');
            }
        });
    });

    $('body').on('click','.generate-pattern-manager',function(e){

        e.preventDefault();

        var $button = $(this);
        var $buttonContainer = $button.closest('div');

        $button.prop('disabled', true).addClass('loading');
        $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();

        $.ajax({
            dataType:'json',type:'POST', url : ajaxurl,
            data : {
                action : 'generate_pattern_manager',
                nonce : dashboardScript.nonce
            },
            success:function(response){
                if(response.data){
                    var patternMapping = {
                        'manager_pending_now': {
                            class: 'manager_pending_now',
                            patternName: 'pattern-pending-now',
                            variablesName: 'variables-pending-now'
                        },
                        'manager_pending': {
                            class: 'manager_pending',
                            patternName: 'pattern-pending',
                            variablesName: 'variables-pending'
                        },
                        'manager_processing': {
                            class: 'manager_processing',
                            patternName: 'pattern-processing',
                            variablesName: 'variables-processing'
                        },
                        'manager_onhold': {
                            class: 'manager_onhold',
                            patternName: 'pattern-on-hold',
                            variablesName: 'variables-on-hold'
                        },
                        'manager_completed': {
                            class: 'manager_completed',
                            patternName: 'pattern-completed',
                            variablesName: 'variables-completed'
                        },
                        'manager_cancelled': {
                            class: 'manager_cancelled',
                            patternName: 'pattern-cancelled',
                            variablesName: 'variables-cancelled'
                        },
                        'manager_refunded': {
                            class: 'manager_refunded',
                            patternName: 'pattern-refunded',
                            variablesName: 'variables-refunded'
                        },
                        'manager_failed': {
                            class: 'manager_failed',
                            patternName: 'pattern-failed',
                            variablesName: 'variables-failed'
                        },
                        'manager_checkout_draft': {
                            class: 'manager_checkout_draft',
                            patternName: 'pattern-checkout-draft',
                            variablesName: 'variables-checkout-draft'
                        }
                    };
                    
                    for(var key in response.data){
                        if(response.data.hasOwnProperty(key) && patternMapping[key]){
                            var patternData = response.data[key];
                            var mapping = patternMapping[key];
                            
                            // قرار دادن code در input pattern
                            var patternInput = $('input[name*="[notif_manager][' + mapping.patternName + ']"]');
                            if(patternInput.length && patternData.code){
                                patternInput.val(patternData.code);
                            }
                            
                            // پیدا کردن repeater container مربوط به variables
                            var repeaterContainer = $('.' + mapping.class).find('[data-repeater-list*="' + mapping.variablesName + '"]');
                            
                            if(repeaterContainer.length && patternData.variables && patternData.variables.length > 0){
                                // گرفتن مسیر تصویر trash از یک آیتم موجود (اگر وجود داشته باشد)
                                var trashImgSrc = '';
                                var existingItem = repeaterContainer.find('[data-repeater-item]').first();
                                if(existingItem.length){
                                    trashImgSrc = existingItem.find('[data-repeater-delete] img').attr('src') || '';
                                } else {
                                    // اگر آیتمی وجود نداشت، از یک repeater دیگر استفاده کن
                                    var otherRepeater = $('[data-repeater-item]').first();
                                    if(otherRepeater.length){
                                        trashImgSrc = otherRepeater.find('[data-repeater-delete] img').attr('src') || '';
                                    }
                                }
                                
                                // اگر مسیر تصویر پیدا نشد، از مسیر پیش‌فرض استفاده کن
                                if(!trashImgSrc){
                                    trashImgSrc = '/wp-content/plugins/theme-plus/assets/admin/img/dashboard/trash.svg';
                                }
                                
                                // گرفتن data-repeater-list برای ساخت name های داینامیک
                                var repeaterListName = repeaterContainer.attr('data-repeater-list') || '';
                                
                                // پاک کردن آیتم‌های موجود در repeater
                                repeaterContainer.find('[data-repeater-item]').remove();
                                
                                // اضافه کردن variables به repeater
                                patternData.variables.forEach(function(variable, index){
                                    // تبدیل نام متغیر به فرمت shortcode
                                    var shortcode = '[' + variable.name + ']';
                                    
                                    // Escape کردن مقادیر برای جلوگیری از XSS
                                    var escapedVariableName = $('<div>').text(variable.name || '').html();
                                    var escapedShortcode = $('<div>').text(shortcode || '').html();
                                    
                                    // ساخت name های داینامیک بر اساس data-repeater-list
                                    // مثال: themeplus_settings[notif_customer][variables-pending-now][0][variable]
                                    var variableName = repeaterListName + '[' + index + '][variable]';
                                    var shortcodeName = repeaterListName + '[' + index + '][shortcode]';
                                    
                                    // ایجاد HTML برای آیتم جدید
                                    var itemHtml = '<div data-repeater-item>' +
                                        '<div class="send-time">' +
                                            '<div>' +
                                                '<input type="text" name="' + variableName + '" placeholder="متغیر" value="' + escapedVariableName + '">' +
                                                '<input type="text" name="' + shortcodeName + '" placeholder="شورتکد" value="' + escapedShortcode + '">' +
                                                '<a data-repeater-delete class="delete-btn">' +
                                                    '<img src="' + trashImgSrc + '" alt="">' +
                                                '</a>' +
                                            '</div>' +
                                        '</div>' +
                                    '</div>';
                                    
                                    // اضافه کردن به repeater
                                    repeaterContainer.append(itemHtml);
                                });
                            }
                        }
                    }
                }
                
                // نمایش پیغام موفقیت
                $buttonContainer.find('.pattern-error-message').remove();
                var adminUrl = response.pattern_url;
                var successMessage = '<div class="pattern-success-message">' +
                    '<p>پترن های شما ایجاد شد. از این <a href="' + adminUrl + '" target="_blank">لینک</a> وضعیت پترن های خود را بررسی کنید.</p>' +
                    '</div>';
                $buttonContainer.append(successMessage);
            },
            error: function(error){
                console.error('Error generating pattern:', error);
                var txtErrorMessage = error?.responseJSON?.message; 

                if( !txtErrorMessage )
                {
                    txtErrorMessage = 'خطا در ایجاد پترن ها. لطفا دوباره تلاش کنید';
                }
                
                var errorMessage = '<div class="pattern-error-message">' +
                    '<p>'+txtErrorMessage+'</p>' +
                '</div>';
                $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();
                $buttonContainer.append(errorMessage);
            },
            complete: function(){
                // فعال کردن دکمه و حذف لودر
                $button.prop('disabled', false).removeClass('loading');
            }
        });
    });

    $('body').on('click','.generate-pattern-ordertracking',function(e){
        e.preventDefault();

        var $button = $(this);
        var $buttonContainer = $button.closest('div');

        $button.prop('disabled', true).addClass('loading');
        $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();

        $.ajax({
            dataType:'json',type:'POST', url : ajaxurl,
            data : {
                action : 'generate_pattern_ordertracking',
                nonce : dashboardScript.nonce
            },
            success:function(response){
                if(response.data){
                    var patternMapping = {
                        'order_tracking_post': {
                            class: 'order_tracking_post',
                            patternName: 'pattern-post',
                            variablesName: 'variables-post'
                        },
                        'order_tracking_delivery': {
                            class: 'order_tracking_delivery',
                            patternName: 'pattern-delivery',
                            variablesName: 'variables-delivery'
                        },
                    };
                    
                    for(var key in response.data){
                        if(response.data.hasOwnProperty(key) && patternMapping[key]){
                            var patternData = response.data[key];
                            var mapping = patternMapping[key];
                            
                            // قرار دادن code در input pattern
                            var patternInput = $('input[name*="[order_tracking][' + mapping.patternName + ']"]');
                            if(patternInput.length && patternData.code){
                                patternInput.val(patternData.code);
                            }
                            
                            // پیدا کردن repeater container مربوط به variables
                            var repeaterContainer = $('.' + mapping.class).find('[data-repeater-list*="' + mapping.variablesName + '"]');
                            
                            if(repeaterContainer.length && patternData.variables && patternData.variables.length > 0){
                                // گرفتن مسیر تصویر trash از یک آیتم موجود (اگر وجود داشته باشد)
                                var trashImgSrc = '';
                                var existingItem = repeaterContainer.find('[data-repeater-item]').first();
                                if(existingItem.length){
                                    trashImgSrc = existingItem.find('[data-repeater-delete] img').attr('src') || '';
                                } else {
                                    // اگر آیتمی وجود نداشت، از یک repeater دیگر استفاده کن
                                    var otherRepeater = $('[data-repeater-item]').first();
                                    if(otherRepeater.length){
                                        trashImgSrc = otherRepeater.find('[data-repeater-delete] img').attr('src') || '';
                                    }
                                }
                                
                                // اگر مسیر تصویر پیدا نشد، از مسیر پیش‌فرض استفاده کن
                                if(!trashImgSrc){
                                    trashImgSrc = '/wp-content/plugins/theme-plus/assets/admin/img/dashboard/trash.svg';
                                }
                                
                                // گرفتن data-repeater-list برای ساخت name های داینامیک
                                var repeaterListName = repeaterContainer.attr('data-repeater-list') || '';
                                
                                // پاک کردن آیتم‌های موجود در repeater
                                repeaterContainer.find('[data-repeater-item]').remove();
                                
                                // اضافه کردن variables به repeater
                                patternData.variables.forEach(function(variable, index){
                                    // تبدیل نام متغیر به فرمت shortcode
                                    var shortcode = '[' + variable.name + ']';
                                    
                                    // Escape کردن مقادیر برای جلوگیری از XSS
                                    var escapedVariableName = $('<div>').text(variable.name || '').html();
                                    var escapedShortcode = $('<div>').text(shortcode || '').html();
                                    
                                    // ساخت name های داینامیک بر اساس data-repeater-list
                                    // مثال: themeplus_settings[notif_customer][variables-pending-now][0][variable]
                                    var variableName = repeaterListName + '[' + index + '][variable]';
                                    var shortcodeName = repeaterListName + '[' + index + '][shortcode]';
                                    
                                    // ایجاد HTML برای آیتم جدید
                                    var itemHtml = '<div data-repeater-item>' +
                                        '<div class="send-time">' +
                                            '<div>' +
                                                '<input type="text" name="' + variableName + '" placeholder="متغیر" value="' + escapedVariableName + '">' +
                                                '<input type="text" name="' + shortcodeName + '" placeholder="شورتکد" value="' + escapedShortcode + '">' +
                                                '<a data-repeater-delete class="delete-btn">' +
                                                    '<img src="' + trashImgSrc + '" alt="">' +
                                                '</a>' +
                                            '</div>' +
                                        '</div>' +
                                    '</div>';
                                    
                                    // اضافه کردن به repeater
                                    repeaterContainer.append(itemHtml);
                                });
                            }
                        }
                    }
                }
                
                // نمایش پیغام موفقیت
                $buttonContainer.find('.pattern-error-message').remove();
                var adminUrl = response.pattern_url;
                var successMessage = '<div class="pattern-success-message">' +
                    '<p>پترن های شما ایجاد شد. از این <a href="' + adminUrl + '" target="_blank">لینک</a> وضعیت پترن های خود را بررسی کنید.</p>' +
                    '</div>';
                $buttonContainer.append(successMessage);
            },
            error: function(error){
                console.error('Error generating pattern:', error);
                var txtErrorMessage = error?.responseJSON?.message; 

                if( !txtErrorMessage )
                {
                    txtErrorMessage = 'خطا در ایجاد پترن ها. لطفا دوباره تلاش کنید';
                }
                
                var errorMessage = '<div class="pattern-error-message">' +
                    '<p>'+txtErrorMessage+'</p>' +
                '</div>';

                $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();
                $buttonContainer.append(errorMessage);
            },
            complete: function(){
                // فعال کردن دکمه و حذف لودر
                $button.prop('disabled', false).removeClass('loading');
            }
        });
    });
    
    $('body').on('click','.generate-pattern-ticket',function(e){
        e.preventDefault();

        var $button = $(this);
        var $buttonContainer = $button.closest('div');

        $button.prop('disabled', true).addClass('loading');
        $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();

        $.ajax({
            dataType:'json',type:'POST', url : ajaxurl,
            data : {
                action : 'generate_pattern_ticket',
                nonce : dashboardScript.nonce
            },
            success:function(response){
                if(response.data){
                    var patternMapping = {
                        'ticket_new_to_manager': {
                            class: 'ticket_new_to_manager',
                            patternName: 'pattern_new_ticket_manager',
                            variablesName: 'variable_new_ticket_manager'
                        },
                        'ticket_new_to_customer': {
                            class: 'ticket_new_to_customer',
                            patternName: 'pattern_new_ticket_customer',
                            variablesName: 'variable_new_ticket_customer'
                        },
                        'ticket_answer_to_manager': {
                            class: 'ticket_answer_to_manager',
                            patternName: 'pattern_ticket_answer_manager',
                            variablesName: 'variable_ticket_answer_manager'
                        },
                        'ticket_answer_to_customer': {
                            class: 'ticket_answer_to_customer',
                            patternName: 'pattern_ticket_answer_customer',
                            variablesName: 'variable_ticket_answer_customer'
                        },
                        'ticket_touser': {
                            class: 'ticket_touser',
                            patternName: 'pattern_touser',
                            variablesName: 'variable_touser'
                        },
                        'ticket_from_admin_to_user': {
                            class: 'ticket_from_admin_to_user',
                            patternName: 'pattern_from_admin_touser',
                            variablesName: 'variable_from_admin_touser'
                        },
                    };
                    
                    for(var key in response.data){
                        if(response.data.hasOwnProperty(key) && patternMapping[key]){
                            var patternData = response.data[key];
                            var mapping = patternMapping[key];
                            
                            // قرار دادن code در input pattern
                            var patternInput = $('input[name*="[ticket_notif][' + mapping.patternName + ']"]');
                            if(patternInput.length && patternData.code){
                                patternInput.val(patternData.code);
                            }
                            
                            // پیدا کردن repeater container مربوط به variables
                            var repeaterContainer = $('.' + mapping.class).find('[data-repeater-list*="' + mapping.variablesName + '"]');
                            
                            if(repeaterContainer.length && patternData.variables && patternData.variables.length > 0){
                                // گرفتن مسیر تصویر trash از یک آیتم موجود (اگر وجود داشته باشد)
                                var trashImgSrc = '';
                                var existingItem = repeaterContainer.find('[data-repeater-item]').first();
                                if(existingItem.length){
                                    trashImgSrc = existingItem.find('[data-repeater-delete] img').attr('src') || '';
                                } else {
                                    // اگر آیتمی وجود نداشت، از یک repeater دیگر استفاده کن
                                    var otherRepeater = $('[data-repeater-item]').first();
                                    if(otherRepeater.length){
                                        trashImgSrc = otherRepeater.find('[data-repeater-delete] img').attr('src') || '';
                                    }
                                }
                                
                                // اگر مسیر تصویر پیدا نشد، از مسیر پیش‌فرض استفاده کن
                                if(!trashImgSrc){
                                    trashImgSrc = '/wp-content/plugins/theme-plus/assets/admin/img/dashboard/trash.svg';
                                }
                                
                                // گرفتن data-repeater-list برای ساخت name های داینامیک
                                var repeaterListName = repeaterContainer.attr('data-repeater-list') || '';
                                
                                // پاک کردن آیتم‌های موجود در repeater
                                repeaterContainer.find('[data-repeater-item]').remove();
                                
                                // اضافه کردن variables به repeater
                                patternData.variables.forEach(function(variable, index){
                                    // تبدیل نام متغیر به فرمت shortcode
                                    var shortcode = '[' + variable.name + ']';
                                    
                                    // Escape کردن مقادیر برای جلوگیری از XSS
                                    var escapedVariableName = $('<div>').text(variable.name || '').html();
                                    var escapedShortcode = $('<div>').text(shortcode || '').html();
                                    
                                    // ساخت name های داینامیک بر اساس data-repeater-list
                                    // مثال: themeplus_settings[notif_customer][variables-pending-now][0][variable]
                                    var variableName = repeaterListName + '[' + index + '][variable]';
                                    var shortcodeName = repeaterListName + '[' + index + '][shortcode]';
                                    
                                    // ایجاد HTML برای آیتم جدید
                                    var itemHtml = '<div data-repeater-item>' +
                                        '<div class="send-time">' +
                                            '<div>' +
                                                '<input type="text" name="' + variableName + '" placeholder="متغیر" value="' + escapedVariableName + '">' +
                                                '<input type="text" name="' + shortcodeName + '" placeholder="شورتکد" value="' + escapedShortcode + '">' +
                                                '<a data-repeater-delete class="delete-btn">' +
                                                    '<img src="' + trashImgSrc + '" alt="">' +
                                                '</a>' +
                                            '</div>' +
                                        '</div>' +
                                    '</div>';
                                    
                                    // اضافه کردن به repeater
                                    repeaterContainer.append(itemHtml);
                                });
                            }
                        }
                    }
                }
                
                // نمایش پیغام موفقیت
                $buttonContainer.find('.pattern-error-message').remove();
                var adminUrl = response.pattern_url;
                var successMessage = '<div class="pattern-success-message">' +
                    '<p>پترن های شما ایجاد شد. از این <a href="' + adminUrl + '" target="_blank">لینک</a> وضعیت پترن های خود را بررسی کنید.</p>' +
                    '</div>';
                $buttonContainer.append(successMessage);
            },
            error: function(error){
                console.error('Error generating pattern:', error);
                var txtErrorMessage = error?.responseJSON?.message; 

                if( !txtErrorMessage )
                {
                    txtErrorMessage = 'خطا در ایجاد پترن ها. لطفا دوباره تلاش کنید';
                }
                
                var errorMessage = '<div class="pattern-error-message">' +
                    '<p>'+txtErrorMessage+'</p>' +
                '</div>';
                $buttonContainer.find('.pattern-success-message, .pattern-error-message').remove();
                $buttonContainer.append(errorMessage);
            },
            complete: function(){
                // فعال کردن دکمه و حذف لودر
                $button.prop('disabled', false).removeClass('loading');
            }
        });
    });
});

$(document).ready(function() {
    const fileUploadArea = $('#file-upload-area');
    const fileInput = $('#import-file-input');
    const selectedFile = $('#selected-file');
    const fileName = $('#file-name');
    const fileSize = $('#file-size');
    const removeFileBtn = $('#remove-file-btn');
    const importBtn = $('#import-settings-btn');
    const exportBtn = $('#export-settings-btn');

    // File upload area click
    fileUploadArea.on('click', function(e) {
        e.stopPropagation();
        fileInput.click();
    });

    // Drag and drop functionality
    fileUploadArea.on('dragover', function(e) {
        e.preventDefault();
        $(this).addClass('dragover');
    });

    fileUploadArea.on('dragleave', function(e) {
        e.preventDefault();
        $(this).removeClass('dragover');
    });

    fileUploadArea.on('drop', function(e) {
         e.preventDefault();
        $(this).removeClass('dragover');

        const files = e.originalEvent.dataTransfer.files;
        if (files.length > 0) {

            const dataTransfer = new DataTransfer();
            dataTransfer.items.add(files[0]);
            fileInput[0].files = dataTransfer.files;

            handleFileSelection(files[0]);
        }
    });

    // File input change
    fileInput.on('change', function() {
        const file = this.files[0];
        if (file) {
            handleFileSelection(file);
        }
    });

    function handleFileSelection(file) {
        if (file.type !== 'application/json' && !file.name.endsWith('.json')) {
            // alert('<?php #esc_js_e('Please select a valid JSON file.', 'woodmartplus'); ?>');
            return;
        }
        fileName.text(file.name);
        fileSize.text(formatFileSize(file.size));
        selectedFile.show();
        importBtn.prop('disabled', false);
        fileUploadArea.hide();
    }

    // Remove file
    removeFileBtn.on('click', function() {
        fileInput.val('');
        selectedFile.hide();
        fileUploadArea.show();
        importBtn.prop('disabled', true);
    });

    // Import settings
    importBtn.on('click', function() {
        if (!fileInput[0].files[0]) {
            alert("لطفاً یک فایل انتخاب کنید.");
            return;
        }

        $(this).addClass('loading');

        let formData = new FormData();
        formData.append('file', fileInput[0].files[0]);

        formData.append('action', 'import_options'); // برای وردپرس Ajax
        // formData.append('security', my_ajax_object.nonce); // nonce امنیتی

        $.ajax({
            url: ajaxurl, 
            type: 'POST',
            data: formData,
            processData: false,
            contentType: false, 
            success: function(response) {
                importBtn.removeClass('loading');
                window.location.href = response.redirect;
            },
            error: function(xhr, status, error) {
                importBtn.removeClass('loading');
                console.error('خطا:', error);
            }
        });
    });

    function formatFileSize(bytes) {
        if (bytes === 0) return '0 Bytes';
        const k = 1024;
        const sizes = ['Bytes', 'KB', 'MB', 'GB'];
        const i = Math.floor(Math.log(bytes) / Math.log(k));
        return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
    }
});

})( jQuery );