HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wptrinityconsulting/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();

		// 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();
				console.log(attachment);
				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 && 0 <= options.data.indexOf( 'action=add-tag' ) ) {

			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);
				}
			});
			
			// @todo @kowsar -- need to check following fields
			// Radio
			// Color Picker
			// Time Picker
			// icon_select
			// checkbox
			// multi_select
			// multi_checkbox
			// file
			// date_picker
			// time_picker_24

			return;
		}
	} );


}(jQuery));