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/wptuneprotect/wp-content/plugins/js_composer/assets/js/panels/views/seo/view.js
/**
 * PostSettingsSeoUIPanelView handles SEO settings for pages and posts in the editor.
 *
 * It manages SEO-related form data and saves it as JSON in a hidden input field.
 */

( function ( $ ) {
	'use strict';
	if ( _.isUndefined( window.vc ) ) {
		window.vc = {};
	}

	vc.PostSettingsSeoUIPanelView = vc.PanelView.extend({
		save: function () {
			var $form = $( '#vc_setting-seo-form' );
			var seoData = $form.serializeArray();
			var customFormat = {};
			var seoStorageData = vc.seo_storage.get( 'formDataPrevious' ) || {};

			for ( var i = 0; i < seoData.length; i++ ) {
				var name = seoData[i].name;
				var value = seoData[i].value;
				try {
					// Validate JSON format by attempting to stringify the value
					JSON.stringify({ [name]: value });
					customFormat[name] = value;

					if ( seoStorageData && seoStorageData.hasOwnProperty( name ) || name === 'focus-keyphrase' ) {
						vc.seo_storage.setResults( value, name, 'formDataPrevious' );
					}
				} catch ( error ) {
					console.warn( `Invalid JSON format for field: ${name}`, error );
					continue; // Skip invalid fields
				}
			}

			var $seoSettingsHiddenInput = $( '#vc_post-custom-seo-settings' );
			$seoSettingsHiddenInput.val( JSON.stringify( customFormat ) );

			this.trigger( 'save' );
			window.vc.showMessage( window.i18nLocale.seo_settings_updated, 'success' );
		}
	});

})( window.jQuery );