import React, { useEffect, useState } from 'react'; import { addActiveElement, removeFocusedElement } from "../../../actions/MainNavigation/mainNavigationActions"; import AddItemLayout from '../../ControlPanel/AddItemLayout/AddItemLayout'; import { addWeb, getWebDomainInfo } from '../../../ControlPanelService/Web'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import AdvancedOptions from './AdvancedOptions/AdvancedOptions'; import Checkbox from 'src/components/ControlPanel/AddItemLayout/Form/Checkbox/Checkbox'; import TextArea from 'src/components/ControlPanel/AddItemLayout/Form/TextArea/TextArea'; import Toolbar from '../../MainNav/Toolbar/Toolbar'; import { useHistory } from 'react-router-dom'; import Spinner from '../../Spinner/Spinner'; import { useDispatch, useSelector } from 'react-redux'; import './AddWebDomain.scss'; import GenerateSSL from 'src/containers/GenerateCSR'; import 'src/components/Modal/Modal.scss'; import { Helmet } from 'react-helmet'; import { refreshCounters } from 'src/actions/MenuCounters/menuCounterActions'; import HtmlParser from 'react-html-parser'; const AddWebDomain = props => { const { i18n, panel, userName } = useSelector(state => state.session); const { session } = useSelector(state => state.userSession); const dispatch = useDispatch(); const token = localStorage.getItem("token"); const [modalVisible, setModalVisible] = useState(false); const history = useHistory(); const [state, setState] = useState({ loading: false, dnsSupport: true, mailSupport: true, proxySupport: true, showAdvancedOptions: false, okMessage: '', ssl_crt: '', ssl_key: '', domain: '', errorMessage: '', webStats: [], prefixI18N: '', prePath: '', proxy_ext: '', internetProtocols: [] }); useEffect(() => { dispatch(addActiveElement('/list/web/')); dispatch(removeFocusedElement()); setState({ ...state, loading: true }); getWebDomainInfo() .then(res => { setState({ ...state, internetProtocols: getInternetProtocolNames(res.data.ips), webStats: res.data.stats, prefixI18N: res.data.prefix, proxy_ext: res.data.proxy_ext, prePath: res.data.ftp_pre_path, loading: false }); }) .catch(err => { setState({ ...state, loading: false }); console.error(err); }) }, []); const getInternetProtocolNames = internetProtocols => { let result = []; for (let i in internetProtocols) { result.push(i); } return result; } const renderInternetProtocolsOptions = () => { return state.internetProtocols.map(ip => ); } const showAdvancedOption = () => { setState({ ...state, showAdvancedOptions: !state.showAdvancedOptions }); } const renderAdvancedOptions = () => { if (state.showAdvancedOptions) { return setModalVisible(bool)} sslCertificate={state.ssl_crt} sslKey={state.ssl_key} domain={state.domain} webStats={state.webStats} prePath={state.prePath} />; } } const onBlurChangeAliases = value => { setState({ ...state, domain: value }); } const checkboxHandler = (input, checked) => { setState({ ...state, [input]: checked }); } const submitFormHandler = event => { event.preventDefault(); let newWebDomain = {}; for (var [name, value] of (new FormData(event.target)).entries()) { newWebDomain[name] = value; } if (Object.keys(newWebDomain).length !== 0 && newWebDomain.constructor === Object) { setState({ loading: true }); addWeb(newWebDomain) .then(result => { if (result.status === 200) { const { error_msg: errorMessage, ok_msg: okMessage } = result.data; if (errorMessage) { setState({ ...state, errorMessage, okMessage, loading: false }); } else { dispatch(refreshCounters()).then(() => { setState({ ...state, okMessage, errorMessage: '', loading: false }); }); } } }) .catch(err => console.error(err)); } } return (
{`Vesta - ${i18n.WEB}`}
{i18n['Adding Domain']}
{state.errorMessage ? : ''} {state.errorMessage}
{state.okMessage ? : ''} {HtmlParser(state.okMessage)}
{state.loading ? : (
submitFormHandler(event)}>
onBlurChangeAliases(event.target.value)} />
{ panel[userName]['DNS_DOMAINS'] !== '0' && ( checkboxHandler('dnsSupport', checked)} name="v_dns" id="dns-support" title={i18n['DNS Support'] ?? 'DNS Support'} defaultChecked={state.dnsSupport} /> ) } { panel[userName]['MAIL_DOMAINS'] !== '0' && ( checkboxHandler('mailSupport', checked)} name="v_mail" id="mail-support" title={i18n['Mail Support'] ?? 'Mail Support'} defaultChecked={state.mailSupport} /> ) } { session.PROXY_SYSTEM && ( <> checkboxHandler('proxySupport', checked)} name="v_proxy" id="proxy" title={i18n['Proxy Support'] ?? 'Proxy Support'} defaultChecked={state.proxySupport} /> { state.proxySupport && (