Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.129.24.240
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/softaculous/sitepad/editor/site-data/plugins/pagelayer-pro/js/react/src/components/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/softaculous/sitepad/editor/site-data/plugins/pagelayer-pro/js/react/src/components/link.js
import { __ } from '@wordpress/i18n';
import { LabelControl } from './label';
import { useState, useRef, useEffect } from '@wordpress/element';
import {
__experimentalLinkControl as LinkControl,
__experimentalLinkControlSearchInput as LinkControlSearchInput
} from '@wordpress/blockEditor';

const { internal_linking_nonce } = pagelayer_config;

// TODO: re-arrang the content
export const CustomLinkControl = (props) =>{
	
	// TODO further improve
	const { attributes, prop, value, setAttributes } = props;
	const { name } = prop['c'];
	const tmpAtts = attributes?.tmpAtts ?  attributes.tmpAtts : {};
	
	const [values, setValues] = useState({});
	const [settingOpt, setSettingOpt] = useState(false);
	const [toggleSetting, setToggleSetting] = useState(false);
	const [link, setLink] = useState('');
	const holderRef = useRef(null);
	
	const getLinkVal = function(val){
		
		if(typeof val === 'object' && pagelayerLength(val) == 1 && 'link' in val){
			return val['link'];
		}
		
		return val;
	}
	
	const setAttributesHandler = (setValue) => {
		
		var updatedValues = {...values};
		
		for(var key in setValue){
						
			if(!pagelayer_empty(setValue[key])) {
				updatedValues[key] = setValue[key];
				continue;
			}
			
			delete updatedValues[key];
		}
	
		var linkValue = getLinkVal(updatedValues);
		linkValue = pagelayer_empty(linkValue) ? '' : linkValue;
				
		setValues(updatedValues);
		setAttributes({[name]: linkValue});
	}
	
	useEffect(() => {
		
		// Show link options?
		if('selector' in prop) {
			setSettingOpt(true);
		}
		
		var preVal = attributes[name];
				 
		// Previously saved values
		if (typeof preVal != 'object') {
			preVal = { 'link': preVal }
		}

		const linkValue = (name in tmpAtts) ? tmpAtts[name] : preVal?.link;
		
		if(!pagelayer_empty(linkValue)){
			setLink(linkValue);
		}
		
		setAttributesHandler(preVal);
	}, [prop]);
	
	useEffect(() => {
		var listWrap = jQuery(holderRef.current).find('.pagelayer-elp-link-list');
		listWrap.on('click', function(e){
			e.stopPropagation();
			
			var lEle = jQuery(e.target).closest('.pagelayer-elp-link-item');
			
			// IF item not found
			if(lEle.length < 1){
				return;
			}
			
			var perma = lEle.attr('data-permalink');
			var ID = lEle.attr('data-id');
			
			// Save and Render
			jQuery(holderRef.current).find('.pagelayer-elp-link').val(perma);
			
			setAttributesHandler({
				link: ID,
			});
			
			// save tmp value
			const tmp = {
				...tmpAtts,
				[name]: perma
			};
			
			setAttributes({ tmpAtts: tmp });
			
			setLink(perma);
			listWrap.hide();
			
			// Show ID
			// addID(ID);
		});
		
		jQuery(document).on('click', function(e){
			listWrap.hide();
		});
	
	}, []);

	const linkChangeHandler = (event) => {
		var linkVal = event.target.value;
		setLink(linkVal);
		setAttributesHandler({
			link: linkVal
		})
		
		// save tmp value
		const tmp = {
			...tmpAtts,
			[name]: linkVal
		};
		
		setAttributes({ tmpAtts: tmp });
		
		// Remove ID Holder
		//addID();
	}
	
	const handleCheckboxChange = (event) => {
		const { checked } = event.target;
		const checkboxName = event.target.name;
		var ischecked = checked ? true : false;		
		
		setAttributesHandler({[checkboxName]: ischecked});
	};
	
	var time = {};
	
	// Set a Link
	const linkInputeHandler = (e) => {
		e.stopPropagation();
		
		const val = e.target.value;
		
		var listWrap = jQuery(holderRef.current).find('.pagelayer-elp-link-list');
		
		if(!listWrap.is(':visible')){
			listWrap.show();
		}
		
		clearTimeout(time);
		time = setTimeout(function(){

			jQuery.ajax({
				url: pagelayer_ajax_url,
				type: 'post',
				data:{
					'action' : 'wp-link-ajax',
					'_ajax_linking_nonce' : internal_linking_nonce,
					'search' : val,
				},
				success: function(response) {
					
					var data = jQuery.parseJSON(response);
					var html = '';
					//console.log('Link Data');console.log(response);
					
					if(pagelayer_empty(data)){
						html = __('Custom Url');
						// Remove ID Holder
						// addID();
					}else if(typeof data === 'object'){
						
						for(var key in data){
							var vals = data[key];
							html += '<div class="pagelayer-elp-link-item"  data-id="'+vals['ID']+'" data-permalink="'+vals['permalink']+'">'+
								'<div class="pagelayer-elp-link-title">'+
									'<span class="pagelayer-elp-link-item-title" title="'+vals['title']+'">'+vals['title']+'</span>'+
									'<span class="pagelayer-elp-link-item-perma" title="'+vals['permalink']+'">'+vals['permalink']+'</span>'+
								'</div>'+
								'<div class="pagelayer-elp-link-info">'+
									'<span title="'+vals['info']+'">'+vals['info']+'</span>'+
								'</div>'+
							'</div>';
						}
					}
					
					listWrap.html(html);
				},
				fail: function(data) {
					listWrap.html('Some error occured in getting the link data');
				}
			});
			
		}, 200);
		
	};
	
	return (
		<div className="components-base-control pagelayer-base-control" ref={holderRef}>
			<LabelControl {...props} />
			<div className={`pagelayer-elp-link-div pagelayer-elp-input-icon ${settingOpt ? '' : 'pagelayer-elp-link-no-addons'}`}>
				<input
					className="pagelayer-elp-link"
					type="text"
					value={link}
					onChange={linkChangeHandler}
					onInput={linkInputeHandler}
				/>
				<i className="pli pli-service pagelayer-elp-link-icon" title={'link_options'} onClick={ () => setToggleSetting(!toggleSetting)}></i>
				<div className="pagelayer-elp-link-list">
				{/* Render the list items here */}
				</div>
				{settingOpt && toggleSetting && (
					<div className="pagelayer-elp-link-addons">
						<div className="pagelayer-elp-link-cb-div">
							<div className="pagelayer-elp-link-label-div">
								<label className="pagelayer-elp-link-label">{ __('Open link in new window (tab)') }</label>
							</div>
							<div>
								<input
									type="checkbox"
									name="target"
									className="pagelayer-elp-checkbox"
									checked={!pagelayer_empty(values['target'])}
									onChange={handleCheckboxChange}
								/>
							</div>
						</div>
						<div className="pagelayer-elp-link-cb-div" >
							<div className="pagelayer-elp-link-label-div">
								<label className="pagelayer-elp-link-label">{ __('Add Nofollow') }</label>
							</div>
							<div>
								<input type="checkbox"
									name="rel"
									className="pagelayer-elp-checkbox" 
									checked={!pagelayer_empty(values['rel'])}
									onChange={handleCheckboxChange}
								/>
							</div>
						</div>
						<div className="pagelayer-elp-link-ca" >
							<div className="pagelayer-elp-link-label-div">
								<label className="pagelayer-elp-link-label">{ __('Custom Attributes') }</label>
							</div>
							<input 
								type="text" 
								className="pagelayer-elp-text" 
								placeholder="key = value" 
								value={values?.attrs}
								onChange={(event) => setAttributesHandler({'attrs': event.target.value})}
							/>
							<p className="pagelayer-elp-link-desc">
								{ __('Setting custom attribute for link. ')}
								<strong>{ __('attribute = value')}</strong>
								{ __('In this way the attribute and its value can be added. Separate key-value pairs using')}
								<strong> { __('semicolon ;')}</strong>.
							</p>
						</div>
					</div>
				)}
			</div>
		</div>
	);
}

Youez - 2016 - github.com/yon3zu
LinuXploit