import { __ } from '@wordpress/i18n';
const { themeStatus } = starterTemplates;
import apiFetch from '@wordpress/api-fetch';
export const getDemo = async ( id, storedState ) => {
const [ { currentIndex }, dispatch ] = storedState;
const generateData = new FormData();
generateData.append( 'action', 'astra-sites-api-request' );
generateData.append( 'url', 'astra-sites/' + id );
generateData.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: generateData,
} )
.then( ( response ) => response.json() )
.then( ( response ) => {
if ( response.success ) {
const isEcommerce = response?.data[ 'required-plugins' ]?.some(
( plugin ) =>
plugin?.slug === 'surecart' ||
plugin?.slug === 'woocommerce'
);
starterTemplates.previewUrl =
'https:' + response.data[ 'astra-site-url' ];
dispatch( {
type: 'set',
templateId: id,
templateResponse: response.data,
importErrorMessages: {},
importErrorResponse: [],
importError: false,
isEcommerce,
} );
} else {
let errorMessages = {};
if ( undefined !== response.data.response_code ) {
const code = response.data.code.toString();
switch ( code ) {
case '401':
case '404':
errorMessages = {
primaryText:
astraSitesVars?.server_import_primary_error,
secondaryText: '',
errorCode: code,
errorText: response.data.message,
solutionText: '',
tryAgain: true,
};
break;
case '500':
errorMessages = {
primaryText:
astraSitesVars?.server_import_primary_error,
secondaryText: '',
errorCode: code,
errorText: response.data.message,
solutionText:
astraSitesVars?.ajax_request_failed_secondary,
tryAgain: true,
};
break;
case 'WP_Error':
errorMessages = {
primaryText:
astraSitesVars?.client_import_primary_error,
secondaryText: '',
errorCode: code,
errorText: response.data.message,
solutionText: '',
tryAgain: true,
};
break;
case 'Cloudflare':
errorMessages = {
primaryText:
astraSitesVars?.cloudflare_import_primary_error,
secondaryText: '',
errorCode: code,
errorText: response.data.message,
solutionText: '',
tryAgain: true,
};
break;
default:
errorMessages = {
primaryText: __(
'Fetching related demo failed.',
'astra-sites'
),
secondaryText: '',
errorCode: '',
errorText: response.data,
solutionText:
astraSitesVars?.ajax_request_failed_secondary,
tryAgain: false,
};
break;
}
dispatch( {
type: 'set',
importError: true,
importErrorMessages: errorMessages,
importErrorResponse: response.data,
templateResponse: null,
currentIndex: currentIndex + 3,
} );
}
}
} )
.catch( ( error ) => {
dispatch( {
type: 'set',
importError: true,
importErrorMessages: {
primaryText: __(
'Fetching related demo failed.',
'astra-sites'
),
secondaryText:
astraSitesVars?.ajax_request_failed_secondary,
errorCode: '',
errorText: error,
solutionText: '',
tryAgain: false,
},
} );
} );
};
export const getAiDemo = async (
{ businessName, selectedTemplate },
storedState,
websiteInfo
) => {
const [ , dispatch ] = storedState;
const { uuid } = websiteInfo;
const aiResponse = await apiFetch( {
path: 'zipwp/v1/ai-site',
method: 'POST',
data: {
template: selectedTemplate,
business_name: businessName,
uuid,
},
} );
if ( aiResponse.success ) {
dispatch( {
type: 'set',
templateId: selectedTemplate,
templateResponse: aiResponse.data?.data,
importErrorMessages: {},
importErrorResponse: [],
importError: false,
} );
return { success: true, data: aiResponse.data?.data };
}
dispatch( {
type: 'set',
importError: true,
importErrorMessages: {
primaryText: __( 'Fetching related demo failed.', 'astra-sites' ),
secondaryText: '',
errorCode: '',
errorText:
typeof aiResponse.data === 'string'
? aiResponse.data
: aiResponse?.data?.data ?? '',
solutionText: '',
tryAgain: false,
},
} );
return { success: false, data: aiResponse.data };
};
export const checkRequiredPlugins = async ( storedState ) => {
const [ { enabledFeatureIds, selectedEcommercePlugin }, dispatch ] =
storedState;
const reqPlugins = new FormData();
reqPlugins.append( 'action', 'astra-sites-required_plugins' );
reqPlugins.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
if ( enabledFeatureIds.length !== 0 ) {
const featurePlugins = getFeaturePluginList(
enabledFeatureIds,
selectedEcommercePlugin
);
reqPlugins.append(
'feature_plugins',
JSON.stringify( featurePlugins )
);
}
await fetch( ajaxurl, {
method: 'post',
body: reqPlugins,
} )
.then( ( response ) => response.json() )
.then( ( response ) => {
if ( response.success ) {
const rPlugins = response.data?.required_plugins;
const notInstalledPlugin = rPlugins.notinstalled || '';
const notActivePlugins = rPlugins.inactive || '';
dispatch( {
type: 'set',
requiredPlugins: response.data,
notInstalledList: notInstalledPlugin,
notActivatedList: notActivePlugins,
} );
}
} );
};
function getFeaturePluginList( features, selectedEcommercePlugin ) {
const requiredPlugins = [];
features?.forEach( ( feature ) => {
switch ( feature ) {
case 'ecommerce':
if ( selectedEcommercePlugin === 'surecart' ) {
requiredPlugins.push( {
name: 'SureCart',
slug: 'surecart',
init: 'surecart/surecart.php',
} );
} else if ( selectedEcommercePlugin === 'woocommerce' ) {
requiredPlugins.push( {
name: 'WooCommerce',
slug: 'woocommerce',
init: 'woocommerce/woocommerce.php',
} );
requiredPlugins.push( {
name: 'Checkout Plugins Stripe Woo',
slug: 'checkout-plugins-stripe-woo',
init: 'checkout-plugins-stripe-woo/checkout-plugins-stripe-woo.php',
} );
}
break;
case 'donations':
requiredPlugins.push( {
name: 'SureCart',
slug: 'surecart',
init: 'surecart/surecart.php',
} );
break;
case 'automation-integrations':
requiredPlugins.push( {
name: 'SureTriggers',
slug: 'suretriggers',
init: 'suretriggers/suretriggers.php',
} );
break;
case 'smtp':
requiredPlugins.push( {
name: 'Suremail',
slug: 'suremails',
init: 'suremails/suremails.php',
} );
break;
case 'sales-funnels':
requiredPlugins.push( {
name: 'CartFlows',
slug: 'cartflows',
init: 'cartflows/cartflows.php',
} );
requiredPlugins.push( {
name: 'Woocommerce Cart Abandonment Recovery',
slug: 'woo-cart-abandonment-recovery',
init: 'woo-cart-abandonment-recovery/woo-cart-abandonment-recovery.php',
} );
break;
case 'video-player':
requiredPlugins.push( {
name: 'Preso Player',
slug: 'presto-player',
init: 'presto-player/presto-player.php',
} );
break;
case 'appointment-bookings':
requiredPlugins.push( {
name: 'Latepoint',
slug: 'latepoint',
init: 'latepoint/latepoint.php',
} );
break;
case 'live-chat':
requiredPlugins.push( {
name: 'WP Live Chat Support',
slug: 'wp-live-chat-support',
init: 'wp-live-chat-support/wp-live-chat-support.php',
} );
break;
default:
break;
}
} );
return requiredPlugins;
}
export const activateAstra = ( storedState ) => {
const [ , dispatch ] = storedState;
const data = new FormData();
data.append( 'action', 'astra-sites-activate_theme' );
data.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
fetch( ajaxurl, {
method: 'post',
body: data,
} )
.then( ( response ) => response.json() )
.then( ( response ) => {
if ( response.success ) {
dispatch( {
type: 'set',
themeStatus: response,
importStatus: __( 'Astra Theme Installed.', 'astra-sites' ),
} );
} else {
dispatch( {
type: 'set',
importError: true,
importErrorMessages: {
primaryText: __(
'Astra theme installation failed.',
'astra-sites'
),
secondaryText: '',
errorCode: '',
errorText: response.data,
solutionText: '',
tryAgain: true,
},
} );
}
} )
.catch( ( error ) => {
/* eslint-disable-next-line no-console -- We are displaying errors in the console. */
console.error( error );
} );
};
export const installAstra = ( storedState ) => {
const [ { importPercent }, dispatch ] = storedState;
const themeSlug = 'astra';
let percentage = importPercent;
if ( 'not-installed' === themeStatus ) {
if (
wp.updates.shouldRequestFilesystemCredentials &&
! wp.updates.ajaxLocked
) {
wp.updates.requestFilesystemCredentials();
}
percentage += 5;
dispatch( {
type: 'set',
importPercent: percentage,
importStatus: __( 'Installing Astra Theme…', 'astra-sites' ),
} );
wp.updates.installTheme( {
slug: themeSlug,
ajax_nonce: astraSitesVars?._ajax_nonce,
} );
// eslint-disable-next-line no-undef
jQuery( document ).on( 'wp-theme-install-success', function () {
dispatch( {
type: 'set',
importStatus: __( 'Astra Theme Installed.', 'astra-sites' ),
} );
activateAstra( storedState );
} );
}
if ( 'installed-but-inactive' === themeStatus ) {
// WordPress adds "Activate" button after waiting for 1000ms. So we will run our activation after that.
setTimeout( () => activateAstra( storedState ), 3000 );
}
if ( 'installed-and-active' === themeStatus ) {
dispatch( {
type: 'set',
themeStatus: true,
} );
}
};
export const setSiteLogo = async ( logo ) => {
if ( '' === logo.id ) {
return;
}
const data = new FormData();
data.append( 'action', 'astra-sites-set_site_data' );
data.append( 'param', 'site-logo' );
data.append( 'logo', logo.id );
data.append( 'logo-width', logo.width );
data.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: data,
} );
};
export const setColorPalettes = async ( palette ) => {
if ( ! palette ) {
return;
}
const data = new FormData();
data.append( 'action', 'astra-sites-set_site_data' );
data.append( 'param', 'site-colors' );
data.append( 'palette', palette );
data.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: data,
} );
};
export const setSiteTitle = async ( businessName ) => {
if ( ! businessName ) {
return;
}
const data = new FormData();
data.append( 'action', 'astra-sites-set_site_data' );
data.append( 'param', 'site-title' );
data.append( 'business-name', businessName );
data.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: data,
} );
};
export const setSiteLanguage = async ( siteLanguage = 'en_US' ) => {
if ( ! siteLanguage ) {
return;
}
const data = new FormData();
data.append( 'action', 'astra-sites-site-language' );
data.append( 'language', siteLanguage );
data.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: data,
} );
};
export const saveTypography = async ( selectedValue ) => {
const data = new FormData();
data.append( 'action', 'astra-sites-set_site_data' );
data.append( 'param', 'site-typography' );
data.append( 'typography', JSON.stringify( selectedValue ) );
data.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: data,
} );
};
export const divideIntoChunks = ( chunkSize, inputArray ) => {
const values = Object.keys( inputArray );
const final = [];
let counter = 0;
let portion = {};
for ( const key in inputArray ) {
if ( counter !== 0 && counter % chunkSize === 0 ) {
final.push( portion );
portion = {};
}
portion[ key ] = inputArray[ values[ counter ] ];
counter++;
}
final.push( portion );
return final;
};
export const checkFileSystemPermissions = async ( [ , dispatch ] ) => {
try {
const formData = new FormData();
formData.append( 'action', 'astra-sites-filesystem_permission' );
formData.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
const response = await fetch( astraSitesVars?.ajaxurl, {
method: 'POST',
body: formData,
} );
const data = await response.json();
dispatch( {
type: 'set',
fileSystemPermissions: data.data,
} );
} catch ( error ) {
/* eslint-disable-next-line no-console -- We are displaying errors in the console. */
console.error( error );
}
};
export const generateAnalyticsLead = async (
tryAgainCount,
status,
templateId,
builder
) => {
const importContent = new FormData();
importContent.append( 'action', 'astra-sites-generate-analytics-lead' );
importContent.append( 'status', status );
importContent.append( 'id', templateId );
importContent.append( 'try-again-count', tryAgainCount );
importContent.append( 'type', 'astra-sites' );
importContent.append( 'page-builder', builder );
importContent.append( '_ajax_nonce', astraSitesVars?._ajax_nonce );
await fetch( ajaxurl, {
method: 'post',
body: importContent,
} );
};
{
"content": [
{
"id": "1c48978",
"settings": [],
"elements": [
{
"id": "77622f0b",
"settings": {
"_column_size": 100,
"_inline_size": null
},
"elements": [
{
"id": "2c978c75",
"settings": {
"title": "Conditional Logic Quiz",
"title_color": "#0D1427",
"typography_typography": "custom",
"typography_font_family": "IBM Plex Sans",
"typography_font_size": {
"unit": "px",
"size": 26,
"sizes": []
},
"typography_font_weight": "bold"
},
"elements": [],
"isInner": false,
"widgetType": "heading",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "327cbb3f",
"settings": [],
"elements": [
{
"id": "115538d5",
"settings": {
"_column_size": 100,
"_inline_size": null
},
"elements": [
{
"id": "2ec99a5e",
"settings": {
"title": "Customer Communication and Booking Strategies",
"title_color": "#54565C",
"typography_typography": "custom",
"typography_font_family": "IBM Plex Sans",
"typography_font_size": {
"unit": "px",
"size": 16,
"sizes": []
},
"typography_font_weight": "normal"
},
"elements": [],
"isInner": false,
"widgetType": "heading",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "1abc5ff8",
"settings": [],
"elements": [
{
"id": "33366c77",
"settings": {
"_column_size": 100,
"_inline_size": null
},
"elements": [
{
"id": "6aa6134d",
"settings": {
"text": "Divider",
"color": "#EAECF1",
"gap": {
"unit": "px",
"size": 20,
"sizes": []
}
},
"elements": [],
"isInner": false,
"widgetType": "divider",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "3ea6b611",
"settings": {
"structure": "30"
},
"elements": [
{
"id": "46beb71e",
"settings": {
"_column_size": 33,
"_inline_size": null
},
"elements": [
{
"id": "4850e007",
"settings": {
"mf_input_label": "Name",
"mf_input_name": "mf-first-name",
"mf_input_placeholder": "First name",
"mf_input_validation_warning_message": "This field is required.",
"mf_conditional_logic_form_list": [],
"mf_input_label_color": "#0D1427",
"mf_input_label_typography_typography": "custom",
"mf_input_label_typography_font_family": "IBM Plex Sans",
"mf_input_label_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_label_typography_font_weight": "500",
"mf_input_place_holder_typography_typography": "custom",
"mf_input_place_holder_typography_font_family": "IBM Plex Sans",
"mf_input_place_holder_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_place_holder_typography_font_weight": "normal",
"mf_input_placeholder_color": "#878990",
"mf_input_border_radius": {
"unit": "px",
"size": 4,
"sizes": []
},
"mf_input_required": "yes"
},
"elements": [],
"isInner": false,
"widgetType": "mf-text",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
},
{
"id": "35bc2215",
"settings": {
"_column_size": 33,
"_inline_size": null
},
"elements": [
{
"id": "2cedf7ba",
"settings": {
"mf_input_label": "",
"mf_input_name": "mf-last-name",
"mf_input_placeholder": "Last name",
"mf_input_validation_warning_message": "This field is required.",
"mf_conditional_logic_form_list": [],
"mf_input_label_padding": {
"unit": "px",
"top": "8",
"right": "8",
"bottom": "8",
"left": "8",
"isLinked": true
},
"mf_input_place_holder_typography_typography": "custom",
"mf_input_place_holder_typography_font_family": "IBM Plex Sans",
"mf_input_place_holder_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_place_holder_typography_font_weight": "normal",
"mf_input_placeholder_color": "#878990",
"mf_input_border_radius": {
"unit": "px",
"size": 4,
"sizes": []
},
"_margin": {
"unit": "px",
"top": "0",
"right": "0",
"bottom": "0",
"left": "-12",
"isLinked": false
},
"_margin_mobile": {
"unit": "px",
"top": "0",
"right": "0",
"bottom": "0",
"left": "0",
"isLinked": true
}
},
"elements": [],
"isInner": false,
"widgetType": "mf-text",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
},
{
"id": "5810f728",
"settings": {
"_column_size": 33,
"_inline_size": null
},
"elements": [
{
"id": "24b40507",
"settings": {
"mf_input_label": "Date",
"mf_input_name": "mf-date",
"mf_input_placeholder": "DD - MM - YYYY",
"mf_input_validation_warning_message": "This field is required.",
"mf_input_disable_date_list": [],
"mf_conditional_logic_form_list": [],
"mf_input_label_color": "#0D1427",
"mf_input_label_typography_typography": "custom",
"mf_input_label_typography_font_family": "IBM Plex Sans",
"mf_input_label_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_label_typography_font_weight": "500",
"mf_input_place_holder_typography_typography": "custom",
"mf_input_place_holder_typography_font_family": "IBM Plex Sans",
"mf_input_place_holder_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_place_holder_typography_font_weight": "normal",
"mf_input_placeholder_color": "#878990",
"mf_input_border_radius": {
"unit": "px",
"size": 4,
"sizes": []
}
},
"elements": [],
"isInner": false,
"widgetType": "mf-date",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "1147b78d",
"settings": {
"structure": "20",
"margin": {
"unit": "px",
"top": "16",
"right": 0,
"bottom": "0",
"left": 0,
"isLinked": false
}
},
"elements": [
{
"id": "61e3298a",
"settings": {
"_column_size": 50,
"_inline_size": 57.201
},
"elements": [
{
"id": "3c8c63ed",
"settings": {
"mf_input_label": "Select the quiz you would like to take. ",
"mf_input_name": "mf-radio",
"mf_input_display_option": "block",
"mf_input_list": [
{
"mf_input_option_text": "Quiz 1",
"mf_input_option_value": "Quiz 1",
"_id": "1b5235e"
},
{
"mf_input_option_text": "Quiz 3",
"mf_input_option_value": "Quiz 3",
"_id": "5d02d48"
},
{
"mf_input_option_text": "Quiz 5",
"mf_input_option_value": "Quiz 5",
"_id": "9e0ed1b"
},
{
"_id": "b4c8f6d",
"mf_input_option_text": "Quiz 7",
"mf_input_option_value": "Quiz 7"
},
{
"_id": "77f837f",
"mf_input_option_text": "Quiz 9",
"mf_input_option_value": "Quiz 9"
}
],
"mf_input_validation_warning_message": "This field is required.",
"mf_conditional_logic_form_list": [],
"mf_input_label_color": "#401B34",
"mf_input_label_typography_typography": "custom",
"mf_input_label_typography_font_family": "IBM Plex Sans",
"mf_input_label_typography_font_size": {
"unit": "px",
"size": 16,
"sizes": []
},
"mf_input_label_typography_font_weight": "500",
"mf_input_option_color": "#0D1427",
"mf_input_option_icon_color": "#BCBEC0",
"mf_input_typgraphy_text_typography": "custom",
"mf_input_typgraphy_text_font_family": "IBM Plex Sans",
"mf_input_typgraphy_text_font_size": {
"unit": "px",
"size": 16,
"sizes": []
},
"mf_input_typgraphy_text_font_weight": "normal",
"mf_input_required": "yes",
"mf_input_warning_text_typography_typography": "custom",
"mf_input_warning_text_typography_font_family": "Roboto",
"mf_input_warning_text_typography_font_weight": "600"
},
"elements": [],
"isInner": false,
"widgetType": "mf-radio",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
},
{
"id": "538dd02f",
"settings": {
"_column_size": 50,
"_inline_size": 42.659
},
"elements": [
{
"id": "726a2e47",
"settings": {
"mf_input_label": "",
"mf_input_name": "mf-radio",
"mf_input_display_option": "block",
"mf_input_list": [
{
"mf_input_option_text": "Quiz 2",
"mf_input_option_value": "Quiz 2",
"_id": "d268a7f"
},
{
"mf_input_option_text": "Quiz 4",
"mf_input_option_value": "Quiz 4",
"_id": "4376a76"
},
{
"mf_input_option_text": "Quiz 6",
"mf_input_option_value": "Quiz 6",
"_id": "73737fc"
},
{
"_id": "4755744",
"mf_input_option_text": "Quiz 8",
"mf_input_option_value": "Quiz 8"
},
{
"_id": "90d21bd",
"mf_input_option_text": "Quiz 10",
"mf_input_option_value": "Quiz 10"
}
],
"mf_input_validation_warning_message": "This field is required.",
"mf_conditional_logic_form_list": [],
"mf_input_option_color": "#0D1427",
"mf_input_option_icon_color": "#BCBEC0",
"mf_input_typgraphy_text_typography": "custom",
"mf_input_typgraphy_text_font_family": "IBM Plex Sans",
"mf_input_typgraphy_text_font_size": {
"unit": "px",
"size": 16,
"sizes": []
},
"mf_input_typgraphy_text_font_weight": "normal",
"mf_input_label_typography_typography": "custom",
"mf_input_label_typography_font_family": "Roboto",
"mf_input_label_typography_font_weight": "normal",
"_margin": {
"unit": "px",
"top": "20",
"right": "0",
"bottom": "0",
"left": "-265",
"isLinked": false
},
"_margin_tablet": {
"unit": "px",
"top": "20",
"right": "0",
"bottom": "0",
"left": "-130",
"isLinked": false
},
"_margin_mobile": {
"unit": "px",
"top": "-175",
"right": "0",
"bottom": "0",
"left": "185",
"isLinked": true
}
},
"elements": [],
"isInner": false,
"widgetType": "mf-radio",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "2d6aa6f8",
"settings": [],
"elements": [
{
"id": "4bb3d44d",
"settings": {
"_column_size": 100,
"_inline_size": null
},
"elements": [
{
"id": "68bca320",
"settings": {
"title": "If you are not sure what you should be doing when you come in, how would you find your assigned tasks?",
"title_color": "#0D1427",
"typography_typography": "custom",
"typography_font_family": "IBM Plex Sans",
"typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"typography_font_weight": "500",
"_margin": {
"unit": "px",
"top": "15",
"right": "0",
"bottom": "0",
"left": "0",
"isLinked": false
},
"_element_width": "initial",
"_element_custom_width": {
"unit": "px",
"size": 499,
"sizes": []
},
"_element_custom_width_mobile": {
"unit": "px",
"size": 310,
"sizes": []
}
},
"elements": [],
"isInner": false,
"widgetType": "heading",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "4a2346a9",
"settings": [],
"elements": [
{
"id": "7e8968f4",
"settings": {
"_column_size": 100,
"_inline_size": null
},
"elements": [
{
"id": "51db6a4",
"settings": {
"mf_input_label": "",
"mf_input_name": "mf-textarea",
"mf_input_placeholder": "Enter your answer",
"mf_input_validation_warning_message": "This field is required.",
"mf_conditional_logic_form_list": [],
"mf_input_label_typography_typography": "custom",
"mf_input_label_typography_font_family": "IBM Plex Sans",
"mf_input_label_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_label_typography_font_weight": "500",
"mf_input_border_radius": {
"unit": "px",
"size": 4,
"sizes": []
},
"mf_input_place_holder_typography_typography": "custom",
"mf_input_place_holder_typography_font_family": "IBM Plex Sans",
"mf_input_place_holder_typography_font_size": {
"unit": "px",
"size": 14,
"sizes": []
},
"mf_input_place_holder_typography_font_weight": "normal",
"mf_input_placeholder_color": "#878990",
"_element_width_tablet": "initial"
},
"elements": [],
"isInner": false,
"widgetType": "mf-textarea",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
},
{
"id": "4c0b886f",
"settings": [],
"elements": [
{
"id": "43c0a53b",
"settings": {
"_column_size": 100,
"_inline_size": null
},
"elements": [
{
"id": "2299c61d",
"settings": {
"mf_btn_text": "Submit",
"mf_btn_align": "left",
"mf_conditional_logic_form_list": [],
"mf_hidden_input": [],
"mf_btn_text_padding": {
"unit": "px",
"top": "16",
"right": "26",
"bottom": "17",
"left": "26",
"isLinked": false
},
"mf_btn_box_shadow_group_box_shadow_type": "yes",
"mf_btn_box_shadow_group_box_shadow": {
"horizontal": 0,
"vertical": 0,
"blur": 0,
"spread": 0,
"color": "rgba(0,0,0,0.5)"
},
"_margin": {
"unit": "px",
"top": "0",
"right": "0",
"bottom": "0",
"left": "0",
"isLinked": true
},
"_element_width": "initial",
"_element_custom_width": {
"unit": "%",
"size": 100.281
},
"_flex_size": "none"
},
"elements": [],
"isInner": false,
"widgetType": "mf-button",
"elType": "widget"
}
],
"isInner": false,
"elType": "column"
}
],
"isInner": false,
"elType": "section"
}
],
"page_settings": [],
"version": "0.4",
"title": "condition logic",
"type": "page"
}
PLTopograficos
Skip to content
PLT - Projetos e Levantamentos Topográficos
PLT - Projetos e Levantamentos Topográficos
Topografia | Engenharia | Construção Civil
OS Nossos Serviços
Contactos
Serviços Topográficos
Serviços Topográficos
Levantamentos Topográficos
Levantamentos Arquitectónicos
Implantação Cadastral GPS
Apoio a Obras
Ver Mais
Contactos
Engenharia Civil
Engenharia Civil
Direção e Fiscalização de Obras
Planeamento e Orçamentação de Obras
Execução de Projetos e Especialidades de Engenharia
Certificação Energética
Ver Mais
Contactos
Construção Civil
Construção Civil
Construção
Remodelação
Obras de Conservação
Ver Mais
Contactos
Fundada em Abril de 2001, a P.L.T. – Projetos e Levantamentos Topográficos Unipessoal Lda., foi desde cedo pioneira nos Serviços Topográficos na Região Autónoma da Madeira…
Sobre nós
Face ao seu crescimento sucessivo, atualmente a Empresa que originalmente foi constituída na Freguesia da Boaventura, tem como Sede o Edifício Alfa I, na Vila de São Vicente…
Sobre nós
TOPOGRAFIA Principal serviço desde a sua criação da P.L.T.
Conta com um Técnico certificado com uma vasta e larga experiência na área, Equipamentos mais precisos e inovadores existentes no mercado,
Assim respondemos de forma mais clara e precisa as exigências do mercado.
ENGENHARIA Na área da Construção Civil, a P.L.T., dispõe de meios e métodos eficazes no acompanhamento, fiscalização, gestão e no controlo de Obras, elevando assim os nossos níveis de exigência e a satisfação dos nossos clientes.
CONSTRUÇÃO CIVIL Principal objectivo, a satisfação daqueles, a quem prestamos serviços, reunimos uma equipa de profissionais qualificados ao mais alto nível, que, impulsionam todo o método de trabalho, respondendo de forma clara e precisa, todas as exigências dos nossos clientes.
Quer realizar o seu projeto? Deseja realizar um Levantamento Topográfico, Especialidades de Engenharia ou um Projeto de Construção Civil com qualidade? Contacte-nos para ficar a par das condições.
Enviar mensagem
Quer trabalhar com a PLT! Na P.L.T., Projetos e Levantamentos Topográficos, valorizamos a qualidade dos nossos colaboradores, proporcionando assim métodos próprios para o desenvolvimento das suas funções.
Como tal e se procura uma experiência nova nas nossas áreas de trabalho, ligue-nos, agende e preencha o nosso formulário de contato.
Contacte-nos