File: D:/HostingSpaces/RImmers1/new-talent.nl/wwwroot/wp-content/plugins/fusion-builder/inc/layouts.php
<?php
/**
* Layouts helper functions.
*
* @package fusion-builder
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Register the layouts.
*/
function fusion_builder_register_layouts() {
$labels = [
'name' => _x( 'Fusion Templates', 'Layout type general name', 'fusion-builder' ),
'singular_name' => _x( 'Layout', 'Layout type singular name', 'fusion-builder' ),
'add_new' => _x( 'Add New', 'Layout item', 'fusion-builder' ),
'add_new_item' => esc_html__( 'Add New Layout', 'fusion-builder' ),
'edit_item' => esc_html__( 'Edit Layout', 'fusion-builder' ),
'new_item' => esc_html__( 'New Layout', 'fusion-builder' ),
'all_items' => esc_html__( 'All Layouts', 'fusion-builder' ),
'view_item' => esc_html__( 'View Layout', 'fusion-builder' ),
'search_items' => esc_html__( 'Search Layouts', 'fusion-builder' ),
'not_found' => esc_html__( 'Nothing found', 'fusion-builder' ),
'not_found_in_trash' => esc_html__( 'Nothing found in Trash', 'fusion-builder' ),
'item_published' => esc_html__( 'Layout published.', 'fusion-builder' ),
'item_published_privately' => esc_html__( 'Layout published privately.', 'fusion-builder' ),
'item_reverted_to_draft' => esc_html__( 'Layout reverted to draft.', 'fusion-builder' ),
'item_scheduled' => esc_html__( 'Layout scheduled.', 'fusion-builder' ),
'item_updated' => esc_html__( 'Layout updated.', 'fusion-builder' ),
'parent_item_colon' => '',
];
$args = [
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'can_export' => true,
'query_var' => true,
'has_archive' => false,
'capability_type' => 'post',
'map_meta_cap' => true,
'exclude_from_search' => true,
'hierarchical' => false,
'show_in_nav_menus' => false,
'show_ui' => true,
'show_in_menu' => false,
'supports' => [ 'title', 'editor', 'revisions' ],
];
register_post_type( 'fusion_template', apply_filters( 'fusion_layout_template_args', $args ) );
$labels = [
'name' => _x( 'Fusion Elements', 'element type general name', 'fusion-builder' ),
'singular_name' => _x( 'Element', 'Element type singular name', 'fusion-builder' ),
'add_new' => _x( 'Add New', 'Element item', 'fusion-builder' ),
'add_new_item' => esc_html__( 'Add New Element', 'fusion-builder' ),
'edit_item' => esc_html__( 'Edit Element', 'fusion-builder' ),
'new_item' => esc_html__( 'New Element', 'fusion-builder' ),
'all_items' => esc_html__( 'All Elements', 'fusion-builder' ),
'view_item' => esc_html__( 'View Element', 'fusion-builder' ),
'search_items' => esc_html__( 'Search Elements', 'fusion-builder' ),
'not_found' => esc_html__( 'Nothing found', 'fusion-builder' ),
'not_found_in_trash' => esc_html__( 'Nothing found in Trash', 'fusion-builder' ),
'item_published' => esc_html__( 'Element published.', 'fusion-builder' ),
'item_published_privately' => esc_html__( 'Element published privately.', 'fusion-builder' ),
'item_reverted_to_draft' => esc_html__( 'Element reverted to draft.', 'fusion-builder' ),
'item_scheduled' => esc_html__( 'Element scheduled.', 'fusion-builder' ),
'item_updated' => esc_html__( 'Element updated.', 'fusion-builder' ),
'parent_item_colon' => '',
];
$args = [
'labels' => $labels,
'public' => false,
'publicly_queryable' => false,
'can_export' => true,
'query_var' => false,
'has_archive' => false,
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'supports' => [ 'title', 'editor', 'revisions' ],
'show_ui' => true,
/**
* Removed because of a WPML issue, see #2335
'capabilities' => array(
'create_posts' => 'do_not_allow',
),
*/
];
register_post_type( 'fusion_element', apply_filters( 'fusion_layout_element_args', $args ) );
$labels = [
'name' => esc_attr__( 'Category', 'fusion-builder' ),
];
register_taxonomy(
'element_category',
[ 'fusion_element' ],
[
'hierarchical' => true,
'labels' => $labels,
'show_ui' => false,
'show_admin_column' => true,
'query_var' => true,
'show_in_nav_menus' => false,
]
);
$labels = [
'name' => esc_attr__( 'Category', 'fusion-builder' ),
];
register_taxonomy(
'template_category',
[ 'fusion_template' ],
[
'hierarchical' => true,
'labels' => $labels,
'show_ui' => false,
'show_admin_column' => false,
'query_var' => true,
'show_in_nav_menus' => false,
]
);
}
add_action( 'admin_init', 'fusion_builder_register_layouts' );
/**
* Delete custom template or element.
*/
function fusion_builder_delete_layout() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( isset( $_POST['fusion_layout_id'] ) && '' !== $_POST['fusion_layout_id'] ) {
$layout_id = (int) $_POST['fusion_layout_id'];
if ( '' === $layout_id ) {
die( -1 );
}
wp_delete_post( $layout_id, true );
}
wp_die();
}
add_action( 'wp_ajax_fusion_builder_delete_layout', 'fusion_builder_delete_layout' );
/**
* Add custom template or element.
*
* @param string $post_type The post-type.
* @param string $name The post-title.
* @param string $content The post-content.
* @param array $meta The post-meta.
* @param array $taxonomy Taxonomies.
* @param string $term Term.
*/
function fusion_builder_create_layout( $post_type, $name, $content, $meta = [], $taxonomy = [], $term = '' ) {
$layout = [
'post_title' => sanitize_text_field( $name ),
'post_content' => $content,
'post_status' => 'publish',
'post_type' => $post_type,
];
$layout_id = wp_insert_post( $layout );
if ( ! empty( $meta ) ) {
foreach ( $meta as $meta_key => $meta_value ) {
add_post_meta( $layout_id, $meta_key, sanitize_text_field( $meta_value ) );
}
}
if ( '' !== $term ) {
wp_insert_term( $term, $taxonomy );
$term_id = term_exists( $term, $taxonomy );
wp_set_post_terms( $layout_id, $term_id, $taxonomy );
}
do_action( 'fusion_builder_create_layout_after' );
return $layout_id;
}
/**
* Display library content in builder.
*
* @since 1.0
* @param string $location whether this is front-end or back-end builder.
* @return void
*/
function fusion_builder_display_library_content( $location = 'back' ) {
global $post;
$saved_post = $post;
if ( isset( $_POST['fusion_front_end'] ) && ( true === $_POST['fusion_front_end'] || 'true' === $_POST['fusion_front_end'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$location = 'front';
}
?>
<div class="fusion_builder_modal_settings">
<div class="fusion-builder-modal-top-container">
<?php if ( 'front' !== $location ) : ?>
<div class="fusion-builder-modal-close fusiona-plus2"></div>
<h2 class="fusion-builder-settings-heading"><?php esc_attr_e( 'Library', 'fusion-builder' ); ?></h2>
<?php endif; ?>
<ul class="fusion-tabs-menu">
<?php if ( current_theme_supports( 'fusion-builder-demos' ) ) : ?>
<li><a href="#fusion-builder-layouts-demos" id="fusion-builder-layouts-demos-trigger"><?php esc_attr_e( 'Demos', 'fusion-builder' ); ?></a></li>
<?php endif; ?>
<li><a href="#fusion-builder-layouts-templates" id="fusion-builder-layouts-templates-trigger"><?php esc_attr_e( 'Templates', 'fusion-builder' ); ?></a></li>
<li><a href="#fusion-builder-layouts-sections" id="fusion-builder-layouts-sections-trigger"><?php esc_attr_e( 'Containers', 'fusion-builder' ); ?></a></li>
<li><a href="#fusion-builder-layouts-columns" id="fusion-builder-layouts-columns-trigger"><?php esc_attr_e( 'Columns', 'fusion-builder' ); ?></a></li>
<li><a href="#fusion-builder-layouts-elements" id="fusion-builder-layouts-elements-trigger"><?php esc_attr_e( 'Elements', 'fusion-builder' ); ?></a></li>
</ul>
</div>
<div class="fusion-layout-tabs">
<?php if ( current_theme_supports( 'fusion-builder-demos' ) ) : // Display demos tab. ?>
<div id="fusion-builder-layouts-demos" class="fusion-builder-layouts-tab">
<div class="fusion-builder-layouts-header">
<?php $fusion_builder_demos = apply_filters( 'fusion_builder_get_demo_pages', [] ); ?>
<div class="fusion-builder-layouts-header-fields fusion-demo-selection-header">
<?php if ( $fusion_builder_demos ) : ?>
<?php asort( $fusion_builder_demos ); ?>
<div class="fusion-demo-selection-wrapper">
<h2><?php echo apply_filters( 'fusion_builder_import_title', esc_html__( 'Select a demo to view the pages you can import', 'fusion-builder' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></h2>
<select class="fusion-builder-demo-select fusion-select-field">
<option value="" selected><?php esc_html_e( 'Select Demo', 'fusion-builder' ); ?></option>
<?php foreach ( $fusion_builder_demos as $key => $fusion_builder_demo ) : ?>
<option value="<?php echo esc_attr( $key ); ?>">
<?php echo esc_html( $fusion_builder_demo['category'] ); ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="fusion-demo-selection-wrapper">
<h2><?php echo apply_filters( 'fusion_builder_demo_import_link_title', esc_html__( 'Paste a live demo page URL to import specific page ', 'fusion-builder' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></h2>
<input type="text" class="fusion-builder-demo-page-link" name="fusion-builder-demo-page-link" id="fusion-builder-demo-page-link" placeholder="https://avada.theme-fusion.com/"/>
</div>
<?php endif; ?>
</div>
<div class="fusion-builder-layouts-header-info">
<span class="fusion-builder-layout-info">
<?php echo apply_filters( 'fusion_builder_import_message', esc_attr__( 'Select a demo and the pages that are available to import will display.', 'fusion-builder' ) ); // phpcs:ignore WordPress.Security.EscapeOutput ?>
</span>
</div>
</div>
<h2 id="fusion-builder-demo-url-invalid" class="hidden"><?php esc_html_e( 'Unfortunately, no demo page matches the URL you entered. Please try again.', 'fusion-builder' ); ?></h2>
<?php foreach ( $fusion_builder_demos as $key => $fusion_builder_demo ) : ?>
<ul class="fusion-page-layouts demo-<?php echo esc_attr( $key ); ?> hidden">
<?php if ( isset( $fusion_builder_demo['pages'] ) && ! empty( $fusion_builder_demo['pages'] ) ) : ?>
<?php asort( $fusion_builder_demo['pages'] ); ?>
<?php foreach ( $fusion_builder_demo['pages'] as $page_key => $page ) : ?>
<?php $data_page_link = isset( $page['link'] ) ? str_replace( [ 'https://', 'http://', 'avada-xml/' ], '', esc_url( $page['link'] ) ) : ''; ?>
<li class="fusion-page-layout" data-layout_id="<?php echo esc_attr( $page['name'] ); ?>" data-page-link="<?php echo esc_attr( $data_page_link ); ?>" >
<h4 class="fusion-page-layout-title"><?php echo esc_html( ucwords( strtolower( $page['name'] ) ) ); ?></h4>
<span class="fusion-layout-buttons">
<a href="#" class="fusion-builder-demo-button-load" data-page-name="<?php echo esc_attr( $page_key ); ?>" data-demo-name="<?php echo esc_attr( $key ); ?>" data-post-id="<?php echo esc_attr( get_the_ID() ); ?>">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-plus"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Load', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php endforeach; ?>
<?php else : ?>
<li><p><?php esc_html_e( 'There are no demos in your library', 'fusion-builder' ); ?></p></li>
<?php endif; ?>
</ul>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php
// Display containers tab.
?>
<div id="fusion-builder-layouts-sections" class="fusion-builder-layouts-tab">
<div class="fusion-builder-layouts-header">
<div class="fusion-builder-layouts-header-fields fusion-builder-layouts-header-element-fields"></div>
<div class="fusion-builder-layouts-header-info">
<h2><?php esc_attr_e( 'Saved Containers', 'fusion-builder' ); ?></h2>
<span class="fusion-builder-layout-info">
<?php
printf(
/* translators: The "Fusion Documentation" link. */
__( 'Manage your saved containers. Containers cannot be inserted from the library window. The globe icon indicates the element is a <a href="%s" target="_blank">global element</a>.', 'fusion-builder' ), // phpcs:ignore WordPress.Security.EscapeOutput
'https://theme-fusion.com/documentation/fusion-builder/fusion-builder-library/fusion-builder-global-elements/'
);
?>
</span>
</div>
</div>
<?php
// Query containers.
$query = fusion_cached_query(
[
'post_status' => 'publish',
'post_type' => 'fusion_element',
'posts_per_page' => '-1',
'tax_query' => [
[
'taxonomy' => 'element_category',
'field' => 'slug',
'terms' => 'sections',
],
],
]
);
?>
<ul class="fusion-page-layouts fusion-layout-sections">
<?php
while ( $query->have_posts() ) :
$query->the_post();
$is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' );
global $post;
?>
<li class="<?php echo esc_attr( $is_global ); ?> fusion-page-layout" data-layout_id="<?php echo get_the_ID(); ?>">
<h4 class="fusion-page-layout-title" title="<?php the_title(); ?>">
<?php the_title(); ?>
<?php if ( '' !== $is_global && 'front' !== $location ) : ?>
<div class="fusion-global-tooltip-wrapper"><span class="fusion-global-tooltip"><?php esc_attr_e( 'This is a global container.', 'fusion-builder' ); ?></span></div>
<?php endif; ?>
</h4>
<span class="fusion-layout-buttons">
<a href="#" class="fusion-builder-layout-button-delete">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-trash-o"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Delete', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
<a href="<?php echo esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $post->ID ) ) ); ?>" class="fusion-builder-layout-button-edit" target="_blank">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-pen"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_attr_e( 'Edit', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php endwhile; ?>
<?php if ( 'front' === $location || ( 'front' !== $location && ! $query->have_posts() ) ) : ?>
<p class="fusion-empty-library-message">
<?php if ( 'front' === $location ) : ?>
<span class="icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 297.1 248.9" style="enable-background:new 0 0 297.1 248.9;" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;}.st1{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.0345,4.0115;}.st2{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.1323,4.0441;}</style><g><g><g><path class="st0" d="M290.4,143.8c-0.6-2-1.4-3.9-2.2-5.6h0l-2.3-5.5"/><path class="st1" d="M284.3,129L237.6,18c-4-8-14.6-14.6-23.6-14.6H83.4c-9,0-19.6,6.6-23.6,14.6L9.3,138.3c-4,8-6.1,21.8-4.6,30.7l10.9,59.2c1.5,8.9,10,16.1,19,16.1h228.3c9,0,17.5-7.2,19-16.1l10.9-59.2c1-6.5,0.2-15.6-1.9-23.2"/></g><g><path class="st0" d="M266,174.5c0.4,1.9,0.5,3.9,0.2,6h0l-1,5.9"/><path class="st2" d="M264.6,190.3l-2.4,14.2c-1.3,9.3-9.6,16.8-18.5,16.8H53.9c-8.9,0-17.3-7.6-18.5-16.8l-4.2-24.1c-1.2-9.3,5-16.8,14-16.8h207c6.2,0,11.1,3.6,13.2,8.9"/></g></g></g></svg></span>
<?php endif; ?>
<span class="text"><?php esc_attr_e( 'There are no custom containers in your library', 'fusion-builder' ); ?></span>
</p>
<?php endif; ?>
</ul>
<?php
$post = $saved_post ? $saved_post : $post;
wp_reset_postdata();
?>
</div>
<?php
// Display columns tab.
?>
<div id="fusion-builder-layouts-columns" class="fusion-builder-layouts-tab">
<div class="fusion-builder-layouts-header">
<div class="fusion-builder-layouts-header-fields fusion-builder-layouts-header-element-fields"></div>
<div class="fusion-builder-layouts-header-info">
<h2><?php esc_attr_e( 'Saved Columns', 'fusion-builder' ); ?></h2>
<span class="fusion-builder-layout-info">
<?php
printf(
/* translators: The "Fusion Documentation" link. */
__( 'Manage your saved columns. Columns cannot be inserted from the library window and they must always go inside a container. The globe icon indicates the element is a <a href="%s" target="_blank">global element</a>.', 'fusion-builder' ), // phpcs:ignore WordPress.Security.EscapeOutput
'https://theme-fusion.com/documentation/fusion-builder/fusion-builder-library/fusion-builder-global-elements/'
);
?>
</span>
</div>
</div>
<?php
// Query columns.
$query = fusion_cached_query(
[
'post_status' => 'publish',
'post_type' => 'fusion_element',
'posts_per_page' => '-1',
'tax_query' => [
[
'taxonomy' => 'element_category',
'field' => 'slug',
'terms' => 'columns',
],
],
]
);
?>
<ul class="fusion-page-layouts fusion-layout-columns">
<?php while ( $query->have_posts() ) : ?>
<?php
$query->the_post();
$is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' );
global $post;
?>
<li class="<?php echo esc_attr( $is_global ); ?> fusion-page-layout" data-layout_id="<?php echo get_the_ID(); ?>">
<h4 class="fusion-page-layout-title" title="<?php the_title(); ?>">
<?php the_title(); ?>
<?php if ( '' !== $is_global && 'front' !== $location ) : ?>
<div class="fusion-global-tooltip-wrapper"><span class="fusion-global-tooltip"><?php esc_attr_e( 'This is a global column.', 'fusion-builder' ); ?></span></div>
<?php endif; ?>
</h4>
<span class="fusion-layout-buttons">
<a href="<?php echo esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $post->ID ) ) ); ?>" class="fusion-builder-layout-button-edit" target="_blank">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-pen"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_attr_e( 'Edit', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
<a href="#" class="fusion-builder-layout-button-delete">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-trash-o"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Delete', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php endwhile; ?>
<?php if ( 'front' === $location || ( 'front' !== $location && ! $query->have_posts() ) ) : ?>
<p class="fusion-empty-library-message">
<?php if ( 'front' === $location ) : ?>
<span class="icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 297.1 248.9" style="enable-background:new 0 0 297.1 248.9;" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;}.st1{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.0345,4.0115;}.st2{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.1323,4.0441;}</style><g><g><g><path class="st0" d="M290.4,143.8c-0.6-2-1.4-3.9-2.2-5.6h0l-2.3-5.5"/><path class="st1" d="M284.3,129L237.6,18c-4-8-14.6-14.6-23.6-14.6H83.4c-9,0-19.6,6.6-23.6,14.6L9.3,138.3c-4,8-6.1,21.8-4.6,30.7l10.9,59.2c1.5,8.9,10,16.1,19,16.1h228.3c9,0,17.5-7.2,19-16.1l10.9-59.2c1-6.5,0.2-15.6-1.9-23.2"/></g><g><path class="st0" d="M266,174.5c0.4,1.9,0.5,3.9,0.2,6h0l-1,5.9"/><path class="st2" d="M264.6,190.3l-2.4,14.2c-1.3,9.3-9.6,16.8-18.5,16.8H53.9c-8.9,0-17.3-7.6-18.5-16.8l-4.2-24.1c-1.2-9.3,5-16.8,14-16.8h207c6.2,0,11.1,3.6,13.2,8.9"/></g></g></g></svg></span>
<?php endif; ?>
<span class="text"><?php esc_attr_e( 'There are no custom columns in your library', 'fusion-builder' ); ?></span>
</p>
<?php endif; ?>
</ul>
<?php
$post = $saved_post ? $saved_post : $post;
wp_reset_postdata();
?>
</div>
<?php
// Display elements tab.
?>
<div id="fusion-builder-layouts-elements" class="fusion-builder-layouts-tab">
<div class="fusion-builder-layouts-header">
<div class="fusion-builder-layouts-header-fields fusion-builder-layouts-header-element-fields"></div>
<div class="fusion-builder-layouts-header-info">
<h2><?php esc_attr_e( 'Saved Elements', 'fusion-builder' ); ?></h2>
<span class="fusion-builder-layout-info">
<?php
printf(
/* translators: The "Fusion Documentation" link. */
__( 'Manage your saved elements. Elements cannot be inserted from the library window and they must always go inside a column. The globe icon indicates the element is a <a href="%s" target="_blank">global element</a>.', 'fusion-builder' ), // phpcs:ignore WordPress.Security.EscapeOutput
'https://theme-fusion.com/documentation/fusion-builder/fusion-builder-library/fusion-builder-global-elements/'
);
?>
</span>
</div>
</div>
<?php
// Query elements.
$query = fusion_cached_query(
[
'post_status' => 'publish',
'post_type' => 'fusion_element',
'posts_per_page' => '-1',
'tax_query' => [
[
'taxonomy' => 'element_category',
'field' => 'slug',
'terms' => 'elements',
],
],
]
);
?>
<ul class="fusion-page-layouts fusion-layout-elements">
<?php
while ( $query->have_posts() ) :
$query->the_post();
$is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' );
global $post;
$element_type = esc_attr( get_post_meta( $post->ID, '_fusion_element_type', true ) );
?>
<li class="<?php echo esc_attr( $is_global ); ?> fusion-page-layout" data-layout_type="<?php echo esc_attr( $element_type ); ?>" data-layout_id="<?php echo esc_attr( get_the_ID() ); ?>">
<h4 class="fusion-page-layout-title" title="<?php the_title(); ?>">
<?php the_title(); ?>
<?php if ( '' !== $is_global && 'front' !== $location ) : ?>
<div class="fusion-global-tooltip-wrapper">
<span class="fusion-global-tooltip"><?php esc_attr_e( 'This is a global element.', 'fusion-builder' ); ?></span>
</div>
<?php endif; ?>
</h4>
<span class="fusion-layout-buttons">
<a href="<?php echo esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $post->ID ) ) ); ?>" class="fusion-builder-layout-button-edit" target="_blank">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-pen"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_attr_e( 'Edit', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
<a href="#" class="fusion-builder-layout-button-delete">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-trash-o"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Delete', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php endwhile; ?>
<?php if ( 'front' === $location || ( 'front' !== $location && ! $query->have_posts() ) ) : ?>
<p class="fusion-empty-library-message">
<?php if ( 'front' === $location ) : ?>
<span class="icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 297.1 248.9" style="enable-background:new 0 0 297.1 248.9;" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;}.st1{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.0345,4.0115;}.st2{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.1323,4.0441;}</style><g><g><g><path class="st0" d="M290.4,143.8c-0.6-2-1.4-3.9-2.2-5.6h0l-2.3-5.5"/><path class="st1" d="M284.3,129L237.6,18c-4-8-14.6-14.6-23.6-14.6H83.4c-9,0-19.6,6.6-23.6,14.6L9.3,138.3c-4,8-6.1,21.8-4.6,30.7l10.9,59.2c1.5,8.9,10,16.1,19,16.1h228.3c9,0,17.5-7.2,19-16.1l10.9-59.2c1-6.5,0.2-15.6-1.9-23.2"/></g><g><path class="st0" d="M266,174.5c0.4,1.9,0.5,3.9,0.2,6h0l-1,5.9"/><path class="st2" d="M264.6,190.3l-2.4,14.2c-1.3,9.3-9.6,16.8-18.5,16.8H53.9c-8.9,0-17.3-7.6-18.5-16.8l-4.2-24.1c-1.2-9.3,5-16.8,14-16.8h207c6.2,0,11.1,3.6,13.2,8.9"/></g></g></g></svg></span>
<?php endif; ?>
<span class="text"><?php esc_attr_e( 'There are no custom elements in your library', 'fusion-builder' ); ?></span>
</p>
<?php endif; ?>
</ul>
<?php
$post = $saved_post ? $saved_post : $post;
wp_reset_postdata();
?>
</div>
<?php
// Display templates tab.
?>
<div id="fusion-builder-layouts-templates" class="fusion-builder-layouts-tab">
<div class="fusion-builder-layouts-header">
<div class="fusion-builder-layouts-header-fields">
<a href="#" class="fusion-builder-layout-button-save"><?php esc_attr_e( 'Save Template', 'fusion-builder' ); ?></a>
<input type="text" id="new_template_name" value="" placeholder="<?php esc_attr_e( 'Custom template name', 'fusion-builder' ); ?>" />
</div>
<div class="fusion-builder-layouts-header-info">
<h2><?php esc_attr_e( 'Save current page layout as a template', 'fusion-builder' ); ?></h2>
<span class="fusion-builder-layout-info"><?php esc_attr_e( 'Enter a name for your template and click the Save button. This will save the entire page layout, page template from the page attributes box, custom css and Fusion Page Options. IMPORTANT: when loading a saved template, everything will load except for Fusion Page Options. The only time Fusion Page Options will load is if you choose to "Replace All Content".', 'fusion-builder' ); ?></span>
</div>
</div>
<?php
// Query page templates.
$query = fusion_cached_query(
[
'post_status' => 'publish',
'post_type' => 'fusion_template',
'posts_per_page' => '-1',
]
);
?>
<ul class="fusion-page-layouts fusion-layout-templates">
<?php while ( $query->have_posts() ) : ?>
<?php $query->the_post(); ?>
<?php global $post; ?>
<li class="fusion-page-layout" data-layout_id="<?php echo get_the_ID(); ?>">
<h4 class="fusion-page-layout-title" title="<?php the_title(); ?>">
<?php the_title(); ?>
</h4>
<span class="fusion-layout-buttons">
<a href="javascript:void(0)" class="fusion-builder-layout-button-load-dialog">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-plus"></span>
<span class="screen-reader-text"><?php esc_html_e( 'Load' ); ?></span>
<div class="fusion-builder-load-template-dialog-container">
<div class="fusion-builder-load-template-dialog">
<?php if ( 'front' === $location ) : ?>
<span class="screen-reader-text">
<?php endif; ?>
<span class="fusion-builder-save-element-title"><?php esc_html_e( 'How To Load Template?', 'fusion-builder' ); ?></span>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
<div class="fusion-builder-save-element-container">
<span class="fusion-builder-layout-button-load" data-load-type="replace">
<?php esc_attr_e( 'Replace all page content', 'fusion-builder' ); ?>
</span>
<span class="fusion-builder-layout-button-load" data-load-type="above">
<?php esc_attr_e( 'Insert above current content', 'fusion-builder' ); ?>
</span>
<span class="fusion-builder-layout-button-load" data-load-type="below">
<?php esc_attr_e( 'Insert below current content', 'fusion-builder' ); ?>
</span>
</div>
</div>
</div>
<?php else : ?>
<?php
printf(
/* translators: content. */
esc_html__( 'Load %s', 'fusion-builder' ),
'<div class="fusion-builder-load-template-dialog-container"><div class="fusion-builder-load-template-dialog"><span class="fusion-builder-save-element-title">' . esc_html__( 'How To Load Template?', 'fusion-builder' ) . '</span><div class="fusion-builder-save-element-container"><span class="fusion-builder-layout-button-load" data-load-type="replace">' . esc_attr__( 'Replace all page content', 'fusion-builder' ) . '</span><span class="fusion-builder-layout-button-load" data-load-type="above">' . esc_attr__( 'Insert above current content', 'fusion-builder' ) . '</span><span class="fusion-builder-layout-button-load" data-load-type="below">' . esc_attr__( 'Insert below current content', 'fusion-builder' ) . '</span></div></div></div>'
);
?>
<?php endif; ?>
</a>
<a href="<?php echo esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $post->ID ) ) ); ?>" class="" target="_blank" rel="noopener noreferrer">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-pen"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Edit', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
<a href="#" class="fusion-builder-layout-button-delete">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-trash-o"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Delete', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php endwhile; ?>
<?php if ( 'front' === $location || ( 'front' !== $location && ! $query->have_posts() ) ) : ?>
<p class="fusion-empty-library-message">
<?php if ( 'front' === $location ) : ?>
<span class="icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 297.1 248.9" style="enable-background:new 0 0 297.1 248.9;" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;}.st1{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.0345,4.0115;}.st2{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.1323,4.0441;}</style><g><g><g><path class="st0" d="M290.4,143.8c-0.6-2-1.4-3.9-2.2-5.6h0l-2.3-5.5"/><path class="st1" d="M284.3,129L237.6,18c-4-8-14.6-14.6-23.6-14.6H83.4c-9,0-19.6,6.6-23.6,14.6L9.3,138.3c-4,8-6.1,21.8-4.6,30.7l10.9,59.2c1.5,8.9,10,16.1,19,16.1h228.3c9,0,17.5-7.2,19-16.1l10.9-59.2c1-6.5,0.2-15.6-1.9-23.2"/></g><g><path class="st0" d="M266,174.5c0.4,1.9,0.5,3.9,0.2,6h0l-1,5.9"/><path class="st2" d="M264.6,190.3l-2.4,14.2c-1.3,9.3-9.6,16.8-18.5,16.8H53.9c-8.9,0-17.3-7.6-18.5-16.8l-4.2-24.1c-1.2-9.3,5-16.8,14-16.8h207c6.2,0,11.1,3.6,13.2,8.9"/></g></g></g></svg></span>
<?php endif; ?>
<span class="text"><?php esc_attr_e( 'There are no custom templates in your library', 'fusion-builder' ); ?></span>
</p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
</ul>
</div>
</div>
</div>
<?php
if ( $saved_post ) {
$post = $saved_post;
}
}
/**
* Load custom elements.
*/
function fusion_load_custom_elements() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( isset( $_POST['cat'] ) && '' !== $_POST['cat'] ) {
$cat = wp_unslash( $_POST['cat'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
// Query elements.
$query = fusion_cached_query(
[
'post_status' => 'publish',
'post_type' => 'fusion_element',
'posts_per_page' => '-1',
'tax_query' => [
[
'taxonomy' => 'element_category',
'field' => 'slug',
'terms' => $cat,
],
],
]
);
?>
<ul class="fusion-builder-all-modules">
<?php while ( $query->have_posts() ) : ?>
<?php $query->the_post(); ?>
<?php global $post; ?>
<?php $element_type = esc_attr( get_post_meta( $post->ID, '_fusion_element_type', true ) ); ?>
<?php $element_type_class = ( isset( $element_type ) && '' !== $element_type ) ? 'fusion-element-type-' . $element_type : ''; ?>
<li class="fusion-page-layout fusion_builder_custom_<?php echo esc_attr( $cat ); ?>_load <?php echo esc_attr( $element_type_class ); ?>" data-layout_id="<?php echo get_the_ID(); ?>">
<h4 class="fusion_module_title" title="<?php the_title(); ?>">
<?php the_title(); ?>
</h4>
</li>
<?php endwhile; ?>
<?php if ( 'front' === $location || ( 'front' !== $location && ! $query->have_posts() ) ) : ?>
<p class="fusion-empty-library-message">
<?php if ( 'front' === $location ) : ?>
<span class="icon"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 297.1 248.9" style="enable-background:new 0 0 297.1 248.9;" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;}.st1{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.0345,4.0115;}.st2{fill:none;stroke:#E0E0E0;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:12.1323,4.0441;}</style><g><g><g><path class="st0" d="M290.4,143.8c-0.6-2-1.4-3.9-2.2-5.6h0l-2.3-5.5"/><path class="st1" d="M284.3,129L237.6,18c-4-8-14.6-14.6-23.6-14.6H83.4c-9,0-19.6,6.6-23.6,14.6L9.3,138.3c-4,8-6.1,21.8-4.6,30.7l10.9,59.2c1.5,8.9,10,16.1,19,16.1h228.3c9,0,17.5-7.2,19-16.1l10.9-59.2c1-6.5,0.2-15.6-1.9-23.2"/></g><g><path class="st0" d="M266,174.5c0.4,1.9,0.5,3.9,0.2,6h0l-1,5.9"/><path class="st2" d="M264.6,190.3l-2.4,14.2c-1.3,9.3-9.6,16.8-18.5,16.8H53.9c-8.9,0-17.3-7.6-18.5-16.8l-4.2-24.1c-1.2-9.3,5-16.8,14-16.8h207c6.2,0,11.1,3.6,13.2,8.9"/></g></g></g></svg></span>
<?php endif; ?>
<span class="text"><?php esc_attr_e( 'There are no custom elements in your library', 'fusion-builder' ); ?></span>
</p>
<?php endif; ?>
</ul>
<?php
wp_reset_postdata();
}
wp_die();
}
add_action( 'wp_ajax_fusion_load_custom_elements', 'fusion_load_custom_elements' );
/**
* Load custom page layout.
*/
function fusion_builder_load_layout() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( ! isset( $_POST['fusion_layout_id'] ) && '' === $_POST['fusion_layout_id'] ) {
die( -1 );
}
$data = [];
$layout_id = (int) $_POST['fusion_layout_id'];
$layout = get_post( $layout_id );
// Globals.
if ( isset( $_POST['fusion_is_global'] ) && 'false' !== $_POST['fusion_is_global'] ) {
$position = strpos( $layout->post_content, ']' );
if ( false !== $position ) {
$layout->post_content = apply_filters( 'content_edit_pre', $layout->post_content, $layout->post_content, $layout_id );
$layout->post_content = substr_replace( $layout->post_content, ' fusion_global="' . $layout_id . '"]', $position, 1 );
}
}
if ( $layout ) {
// Set page content.
$data['post_content'] = apply_filters( 'content_edit_pre', $layout->post_content, $layout_id );
// Set page template.
if ( 'fusion_template' === get_post_type( $layout_id ) ) {
$page_template = get_post_meta( $layout_id, '_wp_page_template', true );
if ( isset( $page_template ) && ! empty( $page_template ) ) {
$data['page_template'] = $page_template;
}
$custom_css = get_post_meta( $layout_id, '_fusion_builder_custom_css', true );
$data['post_meta'] = get_post_meta( $layout_id );
if ( isset( $custom_css ) && ! empty( $custom_css ) ) {
$data['custom_css'] = $custom_css;
}
}
}
$json_data = wp_json_encode( $data );
die( $json_data ); // phpcs:ignore WordPress.Security.EscapeOutput
}
add_action( 'wp_ajax_fusion_builder_load_layout', 'fusion_builder_load_layout' );
/**
* Load custom page layout.
*/
function fusion_builder_load_demo() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( ! isset( $_POST['page_name'] ) && '' === $_POST['page_name'] ) {
die( -1 );
}
if ( ! isset( $_POST['demo_name'] ) && '' === $_POST['demo_name'] ) {
die( -1 );
}
if ( ! isset( $_POST['post_id'] ) && '' === $_POST['post_id'] ) {
die( -1 );
}
$data = [];
$page_name = sanitize_text_field( wp_unslash( $_POST['page_name'] ) );
$demo_name = sanitize_text_field( wp_unslash( $_POST['demo_name'] ) );
$post_id = (int) $_POST['post_id'];
$fusion_builder_demos = apply_filters( 'fusion_builder_get_demo_pages', [] );
if ( isset( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ] ) && ! empty( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ] ) ) {
// Set page content.
$data['post_content'] = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['content'];
// Set page template.
$page_template = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['page_template'];
if ( isset( $page_template ) && ! empty( $page_template ) ) {
$data['page_template'] = $page_template;
}
}
if ( isset( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'] ) && ! empty( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'] ) ) {
$data['meta'] = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'];
}
$json_data = wp_json_encode( $data );
die( $json_data ); // phpcs:ignore WordPress.Security.EscapeOutput
}
add_action( 'wp_ajax_fusion_builder_load_demo', 'fusion_builder_load_demo' );
/**
* Save custom layout.
*/
function fusion_builder_save_layout() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( isset( $_POST['fusion_layout_name'] ) && '' !== $_POST['fusion_layout_name'] ) {
$layout_name = wp_unslash( $_POST['fusion_layout_name'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
$taxonomy = 'element_category';
$term = '';
$meta = [];
$layout_type = '';
$global_data = '';
$global_type = [
'elements' => 'element',
'columns' => 'column',
'sections' => 'container',
];
if ( ! isset( $location ) ) {
$location = ( isset( $_POST['fusion_front_end'] ) && ( true === $_POST['fusion_front_end'] || 'true' === $_POST['fusion_front_end'] ) ) ? 'front' : 'back';
}
if ( isset( $_POST['fusion_layout_post_type'] ) && '' !== $_POST['fusion_layout_post_type'] ) {
$post_type = sanitize_text_field( wp_unslash( $_POST['fusion_layout_post_type'] ) );
if ( isset( $_POST['fusion_current_post_id'] ) && '' !== $_POST['fusion_current_post_id'] ) {
$post_id = wp_unslash( $_POST['fusion_current_post_id'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
}
if ( isset( $_POST['fusion_layout_element_type'] ) && '' !== $_POST['fusion_layout_element_type'] ) {
$meta['_fusion_element_type'] = wp_unslash( $_POST['fusion_layout_element_type'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
$layout_type = ' fusion-element-type-' . wp_unslash( $_POST['fusion_layout_element_type'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
}
if ( 'fusion_template' === $post_type ) {
$meta['fusion_builder_status'] = 'active';
// Save custom css.
if ( isset( $_POST['fusion_custom_css'] ) && '' !== $_POST['fusion_custom_css'] ) {
$meta['_fusion_builder_custom_css'] = wp_unslash( $_POST['fusion_custom_css'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
}
// Save page template.
if ( isset( $_POST['fusion_page_template'] ) && '' !== $_POST['fusion_page_template'] ) {
$meta['_wp_page_template'] = wp_unslash( $_POST['fusion_page_template'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
}
// Save globals.
$_POST['fusion_layout_content'] = apply_filters( 'content_save_pre', $_POST['fusion_layout_content'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
}
// Globals.
if ( isset( $_POST['fusion_save_global'] ) && 'false' !== $_POST['fusion_save_global'] ) {
$meta['_fusion_is_global'] = 'yes';
$global_data = 'fusion-global';
} else {
$position = false;
if ( isset( $_POST['fusion_layout_content'] ) ) {
$position = strpos( sanitize_text_field( wp_unslash( $_POST['fusion_layout_content'] ) ), 'fusion_global' );
}
if ( false !== $position ) {
// Remove fusion_global attributes from content if it is simple library element.
$_POST['fusion_layout_content'] = preg_replace( '/fusion_global=[^][^][0-9]*[^][^]/', '', wp_unslash( $_POST['fusion_layout_content'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
}
}
// Add Fusion Options to meta data.
if ( isset( $_POST['fusion_options'] ) && '' !== wp_unslash( $_POST['fusion_options'] ) && is_array( wp_unslash( $_POST['fusion_options'] ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
$_fusion_options = wp_unslash( $_POST['fusion_options'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
if ( isset( $_POST['fusion_po_type'] ) && 'object' === $_POST['fusion_po_type'] ) {
foreach ( $_fusion_options as $option => $value ) {
$meta[ $option ] = $value;
}
} else {
foreach ( $_fusion_options as $option ) {
$meta[ $option[0] ] = $option[1];
}
}
}
// Post category.
if ( isset( $_POST['fusion_layout_new_cat'] ) && '' !== $_POST['fusion_layout_new_cat'] ) {
$term = sanitize_text_field( wp_unslash( $_POST['fusion_layout_new_cat'] ) );
$global_type = $global_type[ $term ];
}
$post_fusion_layout_content = ( isset( $_POST['fusion_layout_content'] ) ) ? wp_unslash( $_POST['fusion_layout_content'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
$new_layout_id = fusion_builder_create_layout( $post_type, $layout_name, $post_fusion_layout_content, $meta, $taxonomy, $term );
?>
<?php if ( 'fusion_element' === $post_type ) : ?>
<li class="<?php echo esc_attr( $global_data ); ?> fusion-page-layout<?php echo esc_attr( $layout_type ); ?>" data-layout_id="<?php echo esc_attr( $new_layout_id ); ?>">
<h4 class="fusion-page-layout-title" title="<?php echo esc_attr( get_the_title( $new_layout_id ) ); ?>">
<?php echo get_the_title( $new_layout_id ); // phpcs:ignore WordPress.Security.EscapeOutput ?>
<?php if ( 'false' !== $_POST['fusion_save_global'] && 'front' !== $location ) : ?>
<?php /* translators: The global's type. */ ?>
<div class="fusion-global-tooltip-wrapper"><span class="fusion-global-tooltip"><?php printf( esc_attr__( 'This is a global %s.', 'fusion-builder' ), esc_attr( $global_type ) ); ?></span></div>
<?php endif; ?>
</h4>
<span class="fusion-layout-buttons">
<a href="<?php echo esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $new_layout_id ) ) ); ?>" class="" target="_blank" rel="noopener noreferrer">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-pen"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_attr_e( 'Edit', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
<a href="#" class="fusion-builder-layout-button-delete">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-trash-o"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Delete', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php elseif ( 'fusion_template' === $post_type ) : ?>
<li class="<?php echo esc_attr( $global_data ); ?> fusion-page-layout" data-layout_id="<?php echo esc_attr( $new_layout_id ); ?>">
<h4 class="fusion-page-layout-title" title="<?php echo esc_attr( get_the_title( $new_layout_id ) ); ?>">
<?php echo get_the_title( $new_layout_id ); // phpcs:ignore WordPress.Security.EscapeOutput ?>
</h4>
<span class="fusion-layout-buttons">
<a href="javascript:void(0)" class="fusion-builder-layout-button-load-dialog">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-plus"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Load', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
<div class="fusion-builder-load-template-dialog-container">
<div class="fusion-builder-load-template-dialog">
<span class="fusion-builder-save-element-title<?php echo ( 'front' === $location ) ? ' screen-reader-text' : ''; ?>">
<?php esc_html_e( 'How To Load Template?', 'fusion-builder' ); ?>
</span>
<div class="fusion-builder-save-element-container">
<span class="fusion-builder-layout-button-load" data-load-type="replace">
<?php esc_html_e( 'Replace all page content', 'fusion-builder' ); ?>
</span>
<span class="fusion-builder-layout-button-load" data-load-type="above">
<?php esc_html_e( 'Insert above current content', 'fusion-builder' ); ?>
</span>
<span class="fusion-builder-layout-button-load" data-load-type="below">
<?php esc_html_e( 'Insert below current content', 'fusion-builder' ); ?>
</span>
</div>
</div>
</div>
</a>
<a href="<?php echo esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $new_layout_id ) ) ); ?>" class="" target="_blank" rel="noopener noreferrer">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-pen"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_attr_e( 'Edit', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
<a href="#" class="fusion-builder-layout-button-delete">
<?php if ( 'front' === $location ) : ?>
<span class="fusiona-trash-o"></span>
<span class="screen-reader-text">
<?php endif; ?>
<?php esc_html_e( 'Delete', 'fusion-builder' ); ?>
<?php if ( 'front' === $location ) : ?>
</span>
<?php endif; ?>
</a>
</span>
</li>
<?php endif; ?>
<?php
}
}
wp_die();
}
add_action( 'wp_ajax_fusion_builder_save_layout', 'fusion_builder_save_layout' );
/**
* Save custom layout.
*/
function fusion_builder_update_layout() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( isset( $_POST['fusion_layout_id'] ) && '' !== $_POST['fusion_layout_id'] && apply_filters( 'fusion_global_save', true, 'ajax' ) ) {
$layout_id = wp_unslash( $_POST['fusion_layout_id'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
$content = isset( $_POST['fusion_layout_content'] ) ? wp_unslash( $_POST['fusion_layout_content'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
$to_replace = addslashes( ' fusion_global="' . $layout_id . '"' );
$content = str_replace( $to_replace, '', $content );
// Filter nested globals.
$content = apply_filters( 'content_save_pre', $content, $content, $layout_id );
$post = [
'ID' => $layout_id,
'post_content' => $content,
];
wp_update_post( $post );
}
wp_die();
}
add_action( 'wp_ajax_fusion_builder_update_layout', 'fusion_builder_update_layout' );
/**
* Get image URL from image ID.
*/
function fusion_builder_get_image_url() {
check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' );
if ( ! isset( $_POST['fusion_image_ids'] ) && '' === $_POST['fusion_image_ids'] ) {
die( -1 );
}
$data = [];
$image_ids = wp_unslash( $_POST['fusion_image_ids'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
foreach ( $image_ids as $image_id ) {
if ( '' !== $image_id ) {
$image_url = wp_get_attachment_url( $image_id, 'thumbnail' );
$image_html = '<div class="fusion-multi-image" data-image-id="' . $image_id . '">';
$image_html .= '<img src="' . $image_url . '"/>';
$image_html .= '<span class="fusion-multi-image-remove dashicons dashicons-no-alt"></span>';
$image_html .= '</div>';
$data['images'][] = $image_html;
}
}
$json_data = wp_json_encode( $data );
die( $json_data ); // phpcs:ignore WordPress.Security.EscapeOutput
}
add_action( 'wp_ajax_fusion_builder_get_image_url', 'fusion_builder_get_image_url' );
/**
* Process action for trash element.
*
* @since 1.0
* @return void
*/
function fusion_library_trash_element() {
if ( current_user_can( 'delete_published_pages' ) ) {
$element_ids = '';
if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$element_ids = wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security
}
if ( '' !== $element_ids ) {
$element_ids = (array) $element_ids;
}
if ( ! empty( $element_ids ) ) {
foreach ( $element_ids as $id ) {
wp_trash_post( $id );
}
}
}
$referer = fusion_get_referer();
if ( $referer ) {
wp_safe_redirect( $referer );
exit;
}
}
add_action( 'admin_action_fusion_trash_element', 'fusion_library_trash_element' );
/**
* Process action for restore element.
*
* @since 1.0
* @return void
*/
function fusion_library_restore_element() {
if ( current_user_can( 'publish_pages' ) ) {
$element_ids = '';
if ( isset( $_GET['post'] ) ) { // // phpcs:ignore WordPress.Security.NonceVerification
$element_ids = wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security
}
if ( '' !== $element_ids ) {
$element_ids = (array) $element_ids;
}
if ( ! empty( $element_ids ) ) {
foreach ( $element_ids as $id ) {
wp_untrash_post( $id );
}
}
}
$referer = fusion_get_referer();
if ( $referer ) {
wp_safe_redirect( $referer );
exit;
}
}
add_action( 'admin_action_fusion_restore_element', 'fusion_library_restore_element' );
/**
* Process action for untrash element.
*
* @since 1.0
* @return void
*/
function fusion_library_delete_element_post() {
if ( current_user_can( 'delete_published_pages' ) ) {
$element_ids = '';
if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$element_ids = wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security
}
if ( '' !== $element_ids ) {
$element_ids = (array) $element_ids;
}
if ( ! empty( $element_ids ) ) {
foreach ( $element_ids as $id ) {
wp_delete_post( $id, true );
}
}
}
$referer = fusion_get_referer();
if ( $referer ) {
wp_safe_redirect( $referer );
exit;
}
}
add_action( 'admin_action_fusion_delete_element', 'fusion_library_delete_element_post' );