Viewing File: /home/maglabs/sfakstar/wp-content/plugins/rt-framework/assets/js/script.js

'use strict';
(function ($) {
    jQuery(document).ready(function ($) {

        // ColorPicker, Datepicker, Timepicker
        $(".rt-metabox-picker").each(function () {
            // Exclude first hidden repeater field
            if (!$(this).parents('.rt-postmeta-repeater.repeater-init').length) {
                executePickers($(this));
            }
        });

        // Multi Select
        $(".rt-multi-select").select2();
        $(document).on('widget-updated', function (event) {
            $(".rt-multi-select").select2();
        });


        // initialize conditionals
        $(".rt-postmeta-container .rt-postmeta-dependent").each(function () {
            var name = $(this).data('required');
            var value = $(this).data('required-value');

            var $input = $("input[name=" + name + "]");
            var inputType = $input.attr('type');

            var fieldValue = null;

            // radio
            if (inputType == 'radio') {
                fieldValue = $("input[name=" + name + "]:checked").val();
            }

            //action
            if (value != fieldValue) {
                $(this).hide();
            }
        });

        // radio field onchange conditional
        $(".rt-postmeta-container input[type=radio]").on('change', function () {
            var name = $(this).attr('name');
            var value = $(this).val();

            // hide
            $('.rt-postmeta-container tr[data-required="' + name + '"]')
                .filter(function () {
                    return $(this).data("required-value") != value;
                }).hide();

            // show
            $('.rt-postmeta-container tr[data-required="' + name + '"]')
                .filter(function () {
                    return $(this).data("required-value") == value;
                }).show();

        });

        /*Repeater*/

        // Generate close button
        var repeaterCloseHtml = '<a class="rt-postmeta-repeater-close"></a>'
        $(".rt-postmeta-repeater tr:last-child td").append(repeaterCloseHtml);

        // Close button action
        $(".rt-postmeta-repeater-wrap").on('click', '.rt-postmeta-repeater-close', function (event) {
            $(this).closest('.rt-postmeta-repeater').fadeOut("fast", function () {
                $(this).remove();
            })
        });

        // Add more button action
        $(".rt-postmeta-container .rt-postmeta-repeater-addmore").on('click', 'button', function (event) {

            // Num Data
            var $wrapper = $(this).closest('.rt-postmeta-repeater-wrap');
            var oldNum = $wrapper.data('num');
            var newNum = oldNum + 1;
            $wrapper.data('num', newNum);

            // Generate contents
            var $repeaterContent = $wrapper.find(".rt-postmeta-repeater.repeater-init");

            var inputField = $wrapper.data('fieldname');
            ;

            inputField = inputField.split('[')[0];
            var replaceString = inputField + '\\[hidden\\]';
            var replaceWith = inputField + '[' + oldNum + ']';
            var replaceString = new RegExp(replaceString, "g");

            var repeaterHtml = $repeaterContent[0].innerHTML.replace(replaceString, replaceWith);

            var newElement = document.createElement('table');
            newElement.className = 'rt-postmeta-repeater';
            newElement.innerHTML = repeaterHtml;

            // Execute contents
            $(this).closest('.rt-postmeta-repeater-addmore').before(newElement);

            // Execute Pickers
            $(newElement).find(".rt-metabox-picker").each(function () {
                executePickers($(this));
            });

            return false;
        });

        // Enable Sortable
        $(".rt-postmeta-repeater-wrap").sortable({
            items: '.rt-postmeta-repeater',
            cursor: "move"
        });

        // Image upload field
        $("body").on('click', '.rt_upload_image', function (event) {
            var btnClicked = $(this);
            var custom_uploader = wp.media({
                multiple: false
            }).on("select", function () {
                var attachment = custom_uploader.state().get("selection").first().toJSON();
                btnClicked.closest(".rt_metabox_image").find(".custom_upload_image").val(attachment.id).trigger('change');
                btnClicked.closest(".rt_metabox_image").find(".custom_preview_image").attr("src", attachment.url).show();
                btnClicked.closest(".rt_metabox_image").find(".rt_remove_image_wrap").show();

            }).open();
        });
        $("body").on('click', '.rt_remove_image', function (event) {
            event.preventDefault();
            remove_uploaded_image($(this).closest(".rt_metabox_image"));
            return false;
        });

        // Gallery upload field
        var rtMetaGalleryFrame = wp.media({multiple: true});
        var rtMetaGalleryBtn;

        $("body").on('click', '.rt_upload_gallery', function (event) {
            rtMetaGalleryBtn = $(this);
            rtMetaGalleryFrame.open();
        });
        $("body").on('click', '.rt_remove_gallery', function (event) {
            event.preventDefault();
            $(this).closest(".rt_metabox_gallery").find(".custom_upload_image").val("");
            $(this).closest(".rt_metabox_gallery").find(".custom_preview_images").html('');
            $(this).closest(".rt_metabox_gallery").find(".rt_remove_gallery").hide();
            return false;
        });

        rtMetaGalleryFrame.on("select", function () {
            var selection = rtMetaGalleryFrame.state().get('selection');
            var ids = [];

            rtMetaGalleryBtn.closest(".rt_metabox_gallery").find(".custom_preview_images").html('');

            selection.map(function (attachment) {
                attachment = attachment.toJSON();
                ids.push(attachment.id);
                rtMetaGalleryBtn.closest(".rt_metabox_gallery").find(".custom_preview_images").append("<img src=" + attachment.url + ">");
            });

            rtMetaGalleryBtn.closest(".rt_metabox_gallery").find(".custom_upload_image").val(ids);
            rtMetaGalleryBtn.closest(".rt_metabox_gallery").find(".rt_remove_gallery").show();
        });

        rtMetaGalleryFrame.on('open', function (event) {
            var selection = rtMetaGalleryFrame.state().get('selection');
            var ids = rtMetaGalleryBtn.closest(".rt_metabox_gallery").find(".custom_upload_image").val().split(',');

            ids.forEach(function (id) {
                var attachment = wp.media.attachment(id);
                attachment.fetch();
                selection.add(attachment ? [attachment] : []);
            });
        });

        // File upload field
        $("body").on('click', '.rt_upload_file', function (event) {
            var btnClicked = $(this);
            var custom_uploader = wp.media({
                multiple: false
            }).on("select", function () {
                var attachment = custom_uploader.state().get("selection").first().toJSON();
                btnClicked.closest(".rt_metabox_file").find(".custom_upload_file").val(attachment.id);
                btnClicked.closest(".rt_metabox_file").find(".custom_preview_file").attr("href", attachment.url).html(attachment.title).show();
                btnClicked.closest(".rt_metabox_file").find(".rt_remove_file_wrap").show();
            }).open();

        });
        $("body").on('click', '.rt_remove_file', function (event) {
            event.preventDefault();
            $(this).closest(".rt_metabox_file").find(".custom_upload_file").val("");
            $(this).closest(".rt_metabox_file").find(".custom_preview_file").attr("href", "#").html("").hide();
            $(this).closest(".rt_metabox_file").find(".rt_remove_file_wrap").hide();
            return false;
        });
    });

    function executePickers($item) {
        if ($item.hasClass('rt-metabox-colorpicker')) {
            $item.wpColorPicker();
        } else if ($item.hasClass('rt-metabox-datepicker')) {
            var options = $.extend(
                {},
                $.datepicker.regional["en-US"],
                {dateFormat: $item.data('format')}
            );
            $item.datepicker(options);
        } else if ($item.hasClass('rt-metabox-timepicker')) {
            $item.timepicker();
        } else if ($item.hasClass('rt-metabox-timepicker-24')) {
            $item.timepicker({'timeFormat': 'H:i'});
        }
    }

    function remove_uploaded_image($item) {
        $item.find(".custom_upload_image").val("").trigger('change');
        $item.find(".custom_preview_image").attr("src", "").hide();
        $item.find(".rt_remove_image_wrap").hide();
    }

    /* Taxonomy Fields adding items ajax fix */
    $(document).ajaxComplete(function (event, request, options) {
        if (request && 4 === request.readyState && 200 === request.status
            && options.data) {

            if (typeof options.data.indexOf == 'undefined') {
                return;
            }

            if (options.data.indexOf('action=add-tag') < 0) {
                return;
            }

            if (typeof wpAjax == 'undefined') {
                return;
            }

            var res = wpAjax.parseAjaxResponse(request.responseXML, 'ajax-response');
            if (!res || res.errors) {
                return;
            }

            // Image upload field
            $("#addtag .rt_metabox_image").each(function () {
                remove_uploaded_image($(this));
            });

            // Number
            $('#addtag input[type="number"]').val('');

            // Select
            $('#addtag select.rtfm-meta-field').each(function () {
                var value = $(this).find('[selected="selected"]').val();
                if (value) {
                    $(this).val(value);
                }
            });


            return;
        }
    });

    jQuery(document).ready(function ($) {

       /* var checkSlectVal =  $('.rt-header-footer-select').val()
        if (checkSlectVal.includes('custom')) {
            $('.rt_el_builder_meta-choose_post').show();
        }
        $('.rt-header-footer-select').on("change", function (event) {
            var selectValue = $(this).val();
            if (selectValue.includes('custom')) {
                $(this).closest('tr').next().show();
            } else {
                $(this).closest('tr').next().hide();
            }
        });
*/
        $(".rt-multiple-select2-ajax").select2({
            ajax: {
                url: rtFramwork.rest_url + "rt/v1/all-posts",
                dataType: "json",
                delay: 250,
                data: function (params) {
                    return {
                        search: params.term,
                        page: params.page,
                    };
                },
                processResults: function (data, params) {
                    params.page = params.page || 1;
                    return {
                        results: data,
                        pagination: {
                            more: params.page * 15 < data.length
                        }
                    };
                },
                success: function (data) {
                    // for debug purposes
                    console.log("SUCCESS: ");
                },
                error: function (data) {
                    // for debug purposes
                    console.log("ERROR: ");
                },
                cache: true
            },
            placeholder: "Search...",
            minimumInputLength: 1,
            templateResult: formatRepo,
            templateSelection: formatRepoSelection
        });

        function formatRepo(data) {
            if (data.loading) {
                return data.text;
            }
            var $container = $(
                "<div class='select2-result-repository clearfix'>" +
                "<div class='select2-result-repository__name'></div>" +
                "</div>"
            );

            $container.find(".select2-result-repository__name").text('[' + data.id + ']' + ' ' + data.text);

            return $container;
        }

        function formatRepoSelection(data) {
            return data.text || data.id;
        }
    });


}(jQuery));
Back to Directory File Manager