function et_pb_pagebuilder_meta_box()
{
    global $typenow;
    do_action('et_pb_before_page_builder');
    echo '<div id="et_pb_hidden_editor">';
    wp_editor('', 'et_pb_content_new', array('media_buttons' => true));
    echo '</div>';
    printf('<div id="et_pb_main_container" class="post-type-%1$s"></div>', esc_attr($typenow));
    // App Template
    printf('<script type="text/template" id="et-builder-app-template">
			<div id="et_pb_layout_controls">
				<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-save" title="%1$s">
					<span>%1$s</span>
				</a>

				<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-load" title="%2$s">
					<span>%2$s</span>
				</a>

				<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-clear" title="%3$s">
					<span>%3$s</span>
				</a>
			</div>
		</script>', esc_html__('Save to Library', 'et_builder'), esc_html__('Load From Library', 'et_builder'), esc_html__('Clear Layout', 'et_builder'));
    // Section Template
    $settings_controls = sprintf('<div class="et-pb-controls">
			<%% if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
				<a href="#" class="et-pb-settings et-pb-settings-section" title="%1$s"><span>%1$s</span></a>
			<%% } %%>

			<%% if ( typeof et_pb_template_type === \'undefined\' || ( \'section\' !== et_pb_template_type && \'row\' !== et_pb_template_type && \'module\' !== et_pb_template_type ) ) { %%>
				<a href="#" class="et-pb-clone et-pb-clone-section" title="%2$s"><span>%2$s</span></a>
				<a href="#" class="et-pb-remove" title="%3$s"><span>%3$s</span></a>
			<%% } %%>
		</div>', esc_html__('Settings', 'et_builder'), esc_html__('Clone Section', 'et_builder'), esc_html__('Delete Section', 'et_builder'));
    $settings_add_controls = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || ( \'section\' !== et_pb_template_type && \'row\' !== et_pb_template_type && \'module\' !== et_pb_template_type ) ) { %%>
			<a href="#" class="et-pb-section-add">
				<span class="et-pb-section-add-main">%1$s</span>
				<span class="et-pb-section-add-fullwidth">%2$s</span>
				<span class="et-pb-section-add-specialty">%3$s</span>
				<span class="et-pb-section-add-saved">%4$s</span>
			</a>
		<%% } %%>', esc_html__('Standard Section', 'et_builder'), esc_html__('Fullwidth Section', 'et_builder'), esc_html__('Specialty Section', 'et_builder'), esc_html__('Add From Library', 'et_builder'));
    printf('<script type="text/template" id="et-builder-section-template">
			%1$s
			<div class="et-pb-section-content et-pb-data-cid" data-cid="<%%= cid %%>" data-skip="<%%= typeof( et_pb_skip_module ) === \'undefined\' ? \'false\' : \'true\' %%>">
			</div>
			%2$s
		</script>', apply_filters('et_builder_section_settings_controls', $settings_controls), apply_filters('et_builder_section_add_controls', $settings_add_controls));
    // Row Template
    $settings = sprintf('<div class="et-pb-controls">

		<%% if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			<a href="#" class="et-pb-settings et-pb-settings-row" title="%1$s"><span>%1$s</span></a>
		<%% } %%>

		<%% if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
			<a href="#" class="et-pb-clone et-pb-clone-row" title="%2$s"><span>%2$s</span></a>
			<a href="#" class="et-pb-remove" title="%3$s"><span>%3$s</span></a>
		<%% }

		if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			<a href="#" class="et-pb-change-structure" title="%4$s"><span>%4$s</span></a>
		<%% } %%>

		</div>', esc_html__('Settings', 'et_builder'), esc_html__('Clone Row', 'et_builder'), esc_html__('Delete Row', 'et_builder'), esc_html__('Change Structure', 'et_builder'));
    $row_class = 'class="et-pb-row-content et-pb-data-cid <%= typeof et_pb_template_type !== \'undefined\' && \'module\' === et_pb_template_type ? \' et_pb_hide_insert\' : \'\' %>"';
    $data_skip = 'data-skip="<%= typeof( et_pb_skip_module ) === \'undefined\' ? \'false\' : \'true\' %>"';
    $add_row_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
			<a href="#" class="et-pb-row-add">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Add Row', 'et_builder'));
    printf('<script type="text/template" id="et-builder-row-template">
			%1$s
			<div data-cid="<%%= cid %%>" %2$s %3$s>
				<div class="et-pb-row-container"></div>
				<a href="#" class="et-pb-insert-column">
					<span>%4$s</span>
				</a>
			</div>
			%5$s
		</script>', apply_filters('et_builder_row_settings_controls', $settings), $row_class, $data_skip, esc_html__('Insert Column(s)', 'et_builder'), $add_row_button);
    // Module Block Template
    $clone_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			<a href="#" class="et-pb-clone et-pb-clone-module" title="%1$s">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Clone Module', 'et_builder'));
    $remove_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			<a href="#" class="et-pb-remove" title="%1$s">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Remove Module', 'et_builder'));
    printf('<script type="text/template" id="et-builder-block-module-template">
			<a href="#" class="et-pb-settings" title="%1$s">
				<span>%1$s</span>
			</a>
			%2$s
			%3$s
			<span class="et-pb-module-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', esc_html__('Module Settings', 'et_builder'), $clone_button, $remove_button);
    // Modal Template
    $save_template_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' ) { %%>
			<a href="#" class="et-pb-modal-save-template button">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Save & Add To Library', 'et_builder'));
    printf('<script type="text/template" id="et-builder-modal-template">
			<div class="et-pb-modal-container">

				<a href="#" class="et-pb-modal-close">
					<span>%1$s</span>
				</a>

			<%% if ( ! ( typeof open_view !== \'undefined\' && open_view === \'column_specialty_settings\' ) && typeof type !== \'undefined\' && ( type === \'module\' || type === \'section\' || type === \'row_inner\' || ( type === \'row\' && typeof open_view === \'undefined\' ) ) ) { %%>
				<div class="et-pb-modal-bottom-container">
					%2$s
					<a href="#" class="et-pb-modal-save button button-primary">
						<span>%3$s</span>
					</a>
				</div>
			<%% } %%>

			</div>
		</script>', esc_html__('Cancel', 'et_builder'), $save_template_button, esc_html__('Save & Exit', 'et_builder'));
    // Column Settings Template
    $columns_number = '<% if ( view.model.attributes.specialty_columns === 3 ) { %>
			3
		<% } else { %>
			2
		<% } %>';
    $data_specialty_columns = sprintf('<%% if ( typeof view !== \'undefined\' && typeof view.model.attributes.specialty_columns !== \'undefined\' ) { %%>
			data-specialty_columns="%1$s"
		<%% } %%>', $columns_number);
    printf('<script type="text/template" id="et-builder-column-settings-template">

			<h3 class="et-pb-settings-heading" data-current_row="<%%= cid %%>">%1$s</h3>

		<%% if ( ( typeof change_structure === \'undefined\' || \'true\' !== change_structure ) && ( typeof et_pb_specialty === \'undefined\' || et_pb_specialty !== \'on\' ) ) { %%>
			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher" %2$s>
				<li class="et-pb-saved-module et-pb-options-tabs-links-active" data-open_tab="et-pb-new-modules-tab" data-content_loaded="true">
					<a href="#">%3$s</a>
				</li>

				<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
					<a href="#">%4$s</a>
				</li>
			</ul>
		<%% } %%>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-new-modules-tab active-container">
				<ul class="et-pb-column-layouts">
					%5$s
				</ul>
			</div>

		<%% if ( ( typeof change_structure === \'undefined\' || \'true\' !== change_structure ) && ( typeof et_pb_specialty === \'undefined\' || et_pb_specialty !== \'on\' ) ) { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab"></div>
		<%% } %%>

		</script>', esc_html__('Insert Columns', 'et_builder'), $data_specialty_columns, esc_html__('New Row', 'et_builder'), esc_html__('Add From Library', 'et_builder'), et_builder_get_columns_layout());
    // "Add Module" Template
    $fullwidth_class = '<% if ( typeof module.fullwidth_only !== \'undefined\' && module.fullwidth_only === \'on\' ) { %> et_pb_fullwidth_only_module<% } %>';
    printf('<script type="text/template" id="et-builder-modules-template">
			<h3 class="et-pb-settings-heading">%1$s</h3>

			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher">
				<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-all-modules-tab">
					<a href="#">%2$s</a>
				</li>

				<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
					<a href="#">%3$s</a>
				</li>
			</ul>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-all-modules-tab active-container">
				<ul class="et-pb-all-modules">
				<%% _.each(modules, function(module) { %%>
					<%% if ( "et_pb_row" !== module.label && "et_pb_section" !== module.label && "et_pb_column" !== module.label && "et_pb_row_inner" !== module.label ) { %%>
						<li class="<%%= module.label %%>%4$s">
							<span class="et_module_title"><%%= module.title %%></span>
						</li>
					<%% } %%>
				<%% }); %%>
				</ul>
			</div>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab"></div>
		</script>', esc_html__('Insert Module', 'et_builder'), esc_html__('New Module', 'et_builder'), esc_html__('Add From Library', 'et_builder'), $fullwidth_class);
    // Load Layout Template
    printf('<script type="text/template" id="et-builder-load_layout-template">
			<h3 class="et-pb-settings-heading">%1$s</h3>

		<%% if ( typeof display_switcher !== \'undefined\' && display_switcher === \'on\' ) { %%>
			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher">
				<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-all-modules-tab">
					<a href="#">%2$s</a>
				</li>
				<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
					<a href="#">%3$s</a>
				</li>
			</ul>
		<%% } %%>

		<%% if ( typeof display_switcher !== \'undefined\' && display_switcher === \'on\' ) { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-all-modules-tab active-container"></div>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab" style="display: none;"></div>
		<%% } else { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab active-container"></div>
		<%% } %%>
		</script>', esc_html__('Load Layout', 'et_builder'), esc_html__('Predefined Layouts', 'et_builder'), esc_html__('Add From Library', 'et_builder'));
    // Column Template
    printf('<script type="text/template" id="et-builder-column-template">
			<a href="#" class="et-pb-insert-module<%%= typeof et_pb_template_type === \'undefined\' || \'module\' !== et_pb_template_type ? \'\' : \' et_pb_hidden_button\' %%>">
				<span>%1$s</span>
			</a>
		</script>', esc_html__('Insert Module(s)', 'et_builder'));
    // Advanced Settings Buttons Module
    printf('<script type="text/template" id="et-builder-advanced-setting">
			<a href="#" class="et-pb-advanced-setting-remove">
				<span>%1$s</span>
			</a>

			<a href="#" class="et-pb-advanced-setting-options">
				<span>%2$s</span>
			</a>

			<a href="#" class="et-pb-clone et-pb-advanced-setting-clone">
				<span>%3$s</span>
			</a>
		</script>', esc_html__('Delete', 'et_builder'), esc_html__('Settings', 'et_builder'), esc_html__('Clone Module', 'et_builder'));
    // Advanced Settings Modal Buttons Template
    printf('<script type="text/template" id="et-builder-advanced-setting-edit">
			<div class="et-pb-modal-container">
				<a href="#" class="et-pb-modal-close">
					<span>%1$s</span>
				</a>

				<div class="et-pb-modal-bottom-container">
					<a href="#" class="et-pb-modal-save">
						<span>%2$s</span>
					</a>
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Deactivate Builder" Modal Message Template
    printf('<script type="text/template" id="et-builder-prompt-modal-deactivate_builder-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('Disable Builder', 'et_builder'), esc_html__('All content created in the Divi Builder will be lost. Previous content will be restored.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Clear Layout" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-clear_layout-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('Clear Layout', 'et_builder'), esc_html__('All of your current page content will be lost.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Reset Advanced Settings" Modal Template
    printf('<script type="text/template" id="et-builder-prompt-modal-reset_advanced_settings-text">
			<p>%1$s</p>
			<p>%2$s</p>
		</script>', esc_html__('All advanced module settings in will be lost.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Save Layout" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-save_layout">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Save Layout" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-save_layout-text">
			<h3>%1$s</h3>
			<p>%2$s</p>

			<label>%3$s</label>
			<input type="text" value="" id="et_pb_new_layout_name" class="regular-text" />
		</script>', esc_html__('Save To Library', 'et_builder'), esc_html__('Save your current page to the Divi Library for later use.', 'et_builder'), esc_html__('Layout Name:', 'et_builder'));
    // "Save Template" Modal Window Layout
    printf('<script type="text/template" id="et-builder-prompt-modal-save_template">
			<div class="et_pb_prompt_modal et_pb_prompt_modal_save_library">
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%1$s" />
				</div>
			</div>
		</script>', esc_attr__('Save And Add To Library', 'et_builder'));
    // "Save Template" Content Layout
    $layout_categories = get_terms('layout_category', array('hide_empty' => false));
    $categories_output = sprintf('<div class="et-pb-option"><label>%1$s</label>', __('Add To Categories:', 'et_builder'));
    if (is_array($layout_categories) && !empty($layout_categories)) {
        $categories_output .= '<div class="et-pb-option-container layout_cats_container">';
        foreach ($layout_categories as $category) {
            $categories_output .= sprintf('<label>%1$s<input type="checkbox" value="%2$s"/></label>', esc_html($category->name), esc_html($category->term_id));
        }
        $categories_output .= '</div></div>';
    }
    $categories_output .= sprintf('
		<div class="et-pb-option">
			<label>%1$s:</label>
			<div class="et-pb-option-container">
				<input type="text" value="" id="et_pb_new_cat_name" class="regular-text" />
			</div>
		</div>', esc_html__('Create New Category', 'et_builder'));
    printf('<script type="text/template" id="et-builder-prompt-modal-save_template-text">
			<div class="et-pb-main-settings">
				<p>%1$s</p>

				<div class="et-pb-option">
					<label>%2$s:</label>

					<div class="et-pb-option-container">
						<input type="text" value="" id="et_pb_new_template_name" class="regular-text" />
					</div>
				</div>

			<%% if ( \'module\' === module_type ) { %%>
				<div class="et-pb-option">
					<label>%3$s:</label>

					<div class="et-pb-option-container et_pb_select_module_tabs">
						<label>
							%4$s <input type="checkbox" value="general" id="et_pb_template_general" checked />
						</label>

						<label>
							%5$s <input type="checkbox" value="advanced" id="et_pb_template_advanced" checked />
						</label>

						<label>
							%6$s <input type="checkbox" value="css" id="et_pb_template_css" checked />
						</label>

						<p class="et_pb_error_message_save_template" style="display: none;">
							%7$s
						</p>
					</div>
				</div>
			<%% } %%>

			<%% if ( \'global\' !== is_global && \'global\' !== is_global_child ) { %%>
				<div class="et-pb-option">
					<label>%8$s</label>

					<div class="et-pb-option-container">
						<label>
							%9$s <input type="checkbox" value="" id="et_pb_template_global" />
						</label>
					</div>
				</div>
			<%% } %%>

				%10$s
			</div>
		</script>', esc_html__('Here you can save the current item and add it to your Divi Library for later use as well.', 'et_builder'), esc_html__('Template Name', 'et_builder'), esc_html__('Selective Sync', 'et_builder'), esc_html__('Include General settings', 'et_builder'), esc_html__('Include Advanced Design settings', 'et_builder'), esc_html__('Include Custom CSS', 'et_builder'), esc_html__('Please select at least 1 tab to save', 'et_builder'), esc_html__('Save as Global:', 'et_builder'), esc_html__('Make this a global item', 'et_builder'), $categories_output);
    // Prompt Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s<span>
				</a>

				<div class="et_pb_prompt_buttons">
					<a href="#" class="et_pb_prompt_proceed">%2$s</a>
				</div>
			</div>
		</script>', esc_html__('No', 'et_builder'), esc_html__('Yes', 'et_builder'));
    // "Add Specialty Section" Button Template
    printf('<script type="text/template" id="et-builder-add-specialty-section-button">
			<a href="#" class="et-pb-section-add-specialty et-pb-add-specialty-template" data-is_template="true">%1$s</a>
		</script>', esc_html__('Add Specialty Section', 'et_builder'));
    // Saved Entry Template
    echo '<script type="text/template" id="et-builder-saved-entry">
			<a class="et_pb_saved_entry_item"><%= title %></a>
		</script>';
    do_action('et_pb_after_page_builder');
}
Example #2
0
function et_pb_pagebuilder_meta_box()
{
    global $typenow;
    do_action('et_pb_before_page_builder');
    echo '<div id="et_pb_hidden_editor">';
    wp_editor('', 'et_pb_content_new', array('media_buttons' => true));
    echo '</div>';
    printf('<div id="et_pb_main_container" class="post-type-%1$s%2$s"></div>', esc_attr($typenow), !et_pb_is_allowed('move_module') ? ' et-pb-disable-sort' : '');
    $rename_module_menu = sprintf('<%% if ( this.hasOption( "rename" ) ) { %%>
			<li><a class="et-pb-right-click-rename" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Rename', 'et_builder'));
    $copy_module_menu = sprintf('<%% if ( this.hasOption( "copy" ) ) { %%>
			<li><a class="et-pb-right-click-copy" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Copy', 'et_builder'));
    $paste_after_menu = sprintf('<%% if ( this.hasOption( "paste-after" ) ) { %%>
			<li><a class="et-pb-right-click-paste-after" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Paste After', 'et_builder'));
    $paste_menu_item = sprintf('<%% if ( this.hasOption( "paste-column" ) ) { %%>
			<li><a class="et-pb-right-click-paste-column" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Paste', 'et_builder'));
    $paste_app_menu_item = sprintf('<%% if ( this.hasOption( "paste-app" ) ) { %%>
			<li><a class="et-pb-right-click-paste-app" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Paste', 'et_builder'));
    $save_to_lib_menu = sprintf('<%% if ( this.hasOption( "save-to-library") ) { %%>
			<li><a class="et-pb-right-click-save-to-library" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Save to Library', 'et_builder'));
    $lock_unlock_menu = sprintf('<%% if ( this.hasOption( "lock" ) ) { %%>
			<li><a class="et-pb-right-click-lock" href="#"><span class="unlock">%1$s</span><span class="lock">%2$s</span></a></li>
		<%% } %%>', esc_html__('Unlock', 'et_builder'), esc_html__('Lock', 'et_builder'));
    $enable_disable_menu = sprintf('<%% if ( this.hasOption( "disable" ) ) { %%>
			<li><a class="et-pb-right-click-disable" href="#"><span class="enable">%1$s</span><span class="disable">%2$s</span></a></li>
		<%% } %%>', esc_html__('Enable', 'et_builder'), esc_html__('Disable', 'et_builder'));
    // Right click options Template
    printf('<script type="text/template" id="et-builder-right-click-controls-template">
		<ul class="options">
			<%% if ( "module" !== this.options.model.attributes.type || _.contains( %13$s, this.options.model.attributes.module_type ) ) { %%>
				%1$s

				%8$s

				<%% if ( this.hasOption( "undo" ) ) { %%>
				<li><a class="et-pb-right-click-undo" href="#">%9$s</a></li>
				<%% } %%>

				<%% if ( this.hasOption( "redo" ) ) { %%>
				<li><a class="et-pb-right-click-redo" href="#">%10$s</a></li>
				<%% } %%>

				%2$s

				%3$s

				<%% if ( this.hasOption( "collapse" ) ) { %%>
				<li><a class="et-pb-right-click-collapse" href="#"><span class="expand">%4$s</span><span class="collapse">%5$s</span></a></li>
				<%% } %%>

				%6$s

				%7$s

				%12$s

				%11$s

			<%% } %%>

			<%% if ( this.hasOption( "preview" ) ) { %%>
			<li><a class="et-pb-right-click-preview" href="#">%14$s</a></li>
			<%% } %%>
		</ul>
		</script>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $rename_module_menu : '', et_pb_is_allowed('disable_module') ? $enable_disable_menu : '', et_pb_is_allowed('lock_module') ? $lock_unlock_menu : '', esc_html__('Expand', 'et_builder'), esc_html__('Collapse', 'et_builder'), et_pb_is_allowed('add_module') ? $copy_module_menu : '', et_pb_is_allowed('add_module') ? $paste_after_menu : '', et_pb_is_allowed('divi_library') && et_pb_is_allowed('save_library') ? $save_to_lib_menu : '', esc_html__('Undo', 'et_builder'), esc_html__('Redo', 'et_builder'), et_pb_is_allowed('add_module') ? $paste_menu_item : '', et_pb_is_allowed('add_module') ? $paste_app_menu_item : '', et_pb_allowed_modules_list(), esc_html__('Preview', 'et_builder'));
    // "Rename Module Admin Label" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-rename_admin_label">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_attr__('Save', 'et_builder'));
    // "Rename Module Admin Label" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-rename_admin_label-text">
			<h3>%1$s</h3>
			<p>%2$s</p>

			<input type="text" value="" id="et_pb_new_admin_label" class="regular-text" />
		</script>', esc_html__('Rename', 'et_builder'), esc_html__('Enter a new name for this module', 'et_builder'));
    $save_to_lib_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-save" title="%1$s">
			<span>%2$s</span>
		</a>', esc_attr__('Save to Library', 'et_builder'), esc_html__('Save to Library', 'et_builder'));
    $load_from_lib_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-load" title="%1$s">
			<span>%2$s</span>
		</a>', esc_attr__('Load From Library', 'et_builder'), esc_html__('Load From Library', 'et_builder'));
    $clear_layout_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-clear" title="%1$s">
			<span>%2$s</span>
		</a>', esc_attr__('Clear Layout', 'et_builder'), esc_html__('Clear Layout', 'et_builder'));
    // App Template
    printf('<script type="text/template" id="et-builder-app-template">
			<div id="et_pb_layout_controls">

				%1$s

				%2$s

				%3$s

				<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-history" title="%8$s">
					<span class="icon"></span><span class="label">%9$s</span>
				</a>

				<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-redo" title="%4$s">
					<span class="icon"></span><span class="label">%5$s</span>
				</a>

				<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-undo" title="%6$s">
					<span class="icon"></span><span class="label">%7$s</span>
				</a>
			</div>
			<div id="et-pb-histories-visualizer-overlay"></div>
			<ol id="et-pb-histories-visualizer"></ol>
		</script>', et_pb_is_allowed('divi_library') && et_pb_is_allowed('save_library') ? $save_to_lib_button : '', et_pb_is_allowed('divi_library') && et_pb_is_allowed('load_layout') && et_pb_is_allowed('add_library') && et_pb_is_allowed('add_module') ? $load_from_lib_button : '', et_pb_is_allowed('add_module') ? $clear_layout_button : '', esc_attr__('Redo', 'et_builder'), esc_html__('Redo', 'et_builder'), esc_attr__('Undo', 'et_builder'), esc_html__('Undo', 'et_builder'), esc_attr__('See History', 'et_builder'), esc_html__('See History', 'et_builder'));
    $section_settings_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type || \'\' === et_pb_template_type )%3$s ) { %%>
			<a href="#" class="et-pb-settings et-pb-settings-section" title="%1$s"><span>%2$s</span></a>
		<%% } %%>', esc_attr__('Settings', 'et_builder'), esc_html__('Settings', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' && typeof et_pb_global_module === "undefined"' : '');
    $section_clone_button = sprintf('<a href="#" class="et-pb-clone et-pb-clone-section" title="%1$s"><span>%2$s</span></a>', esc_attr__('Clone Section', 'et_builder'), esc_html__('Clone Section', 'et_builder'));
    $section_remove_button = sprintf('<a href="#" class="et-pb-remove et-pb-remove-section" title="%1$s"><span>%2$s</span></a>', esc_attr__('Delete Section', 'et_builder'), esc_html__('Delete Section', 'et_builder'));
    $section_unlock_button = sprintf('<a href="#" class="et-pb-unlock" title="%1$s"><span>%2$s</span></a>', esc_attr__('Unlock Section', 'et_builder'), esc_html__('Unlock Section', 'et_builder'));
    // Section Template
    $settings_controls = sprintf('<div class="et-pb-controls">
			%1$s

			<%% if ( typeof et_pb_template_type === \'undefined\' || ( \'section\' !== et_pb_template_type && \'row\' !== et_pb_template_type && \'module\' !== et_pb_template_type ) ) { %%>
				%2$s
				%3$s
			<%% } %%>

			<a href="#" class="et-pb-expand" title="%4$s"><span>%5$s</span></a>
			%6$s
		</div>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $section_settings_button : '', et_pb_is_allowed('add_module') ? $section_clone_button : '', et_pb_is_allowed('add_module') ? $section_remove_button : '', esc_attr__('Expand Section', 'et_builder'), esc_html__('Expand Section', 'et_builder'), et_pb_is_allowed('lock_module') ? $section_unlock_button : '');
    $add_from_lib_section = sprintf('<span class="et-pb-section-add-saved">%1$s</span>', esc_html__('Add From Library', 'et_builder'));
    $settings_add_controls = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || ( \'section\' !== et_pb_template_type && \'row\' !== et_pb_template_type && \'module\' !== et_pb_template_type ) ) { %%>
			<a href="#" class="et-pb-section-add">
				<span class="et-pb-section-add-main">%1$s</span>
				<span class="et-pb-section-add-fullwidth">%2$s</span>
				<span class="et-pb-section-add-specialty">%3$s</span>
				%4$s
			</a>
		<%% } %%>', esc_html__('Standard Section', 'et_builder'), esc_html__('Fullwidth Section', 'et_builder'), esc_html__('Specialty Section', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $add_from_lib_section : '');
    printf('<script type="text/template" id="et-builder-section-template">
			<div class="et-pb-right-click-trigger-overlay"></div>
			%1$s
			<div class="et-pb-section-content et-pb-data-cid%3$s%4$s" data-cid="<%%= cid %%>" data-skip="<%%= typeof( et_pb_skip_module ) === \'undefined\' ? \'false\' : \'true\' %%>">
			</div>
			%2$s
			<div class="et-pb-locked-overlay et-pb-locked-overlay-section"></div>
			<span class="et-pb-section-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', apply_filters('et_builder_section_settings_controls', $settings_controls), et_pb_is_allowed('add_module') ? apply_filters('et_builder_section_add_controls', $settings_add_controls) : '', !et_pb_is_allowed('move_module') ? ' et-pb-disable-sort' : '', !et_pb_is_allowed('edit_global_library') ? sprintf('<%%= typeof et_pb_global_module !== \'undefined\' ? \' et-pb-disable-sort\' : \'\' %%>') : '');
    $row_settings_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' )%3$s ) { %%>
			<a href="#" class="et-pb-settings et-pb-settings-row" title="%1$s"><span>%2$s</span></a>
		<%% } %%>', esc_attr__('Settings', 'et_builder'), esc_html__('Settings', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' && ( typeof et_pb_global_module === "undefined" || "" === et_pb_global_module ) && ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent )' : '');
    $row_clone_button = sprintf('%3$s
			<a href="#" class="et-pb-clone et-pb-clone-row" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Clone Row', 'et_builder'), esc_html__('Clone Row', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) { %>' : '', !et_pb_is_allowed('edit_global_library') ? '<% } %>' : '');
    $row_remove_button = sprintf('%3$s
			<a href="#" class="et-pb-remove et-pb-remove-row" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Delete Row', 'et_builder'), esc_html__('Delete Row', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) { %>' : '', !et_pb_is_allowed('edit_global_library') ? '<% } %>' : '');
    $row_change_structure_button = sprintf('%3$s
			<a href="#" class="et-pb-change-structure" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Change Structure', 'et_builder'), esc_html__('Change Structure', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( ( typeof et_pb_global_module === "undefined" || "" === et_pb_global_module ) && ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) ) { %>' : '', !et_pb_is_allowed('edit_global_library') ? '<% } %>' : '');
    $row_unlock_button = sprintf('<a href="#" class="et-pb-unlock" title="%1$s"><span>%2$s</span></a>', esc_attr__('Unlock Row', 'et_builder'), esc_html__('Unlock Row', 'et_builder'));
    // Row Template
    $settings = sprintf('<div class="et-pb-controls">
			%1$s
		<%% if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
			%2$s
		<%% }

		if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			%4$s
		<%% }

		if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
			%3$s
		<%% } %%>

		<a href="#" class="et-pb-expand" title="%5$s"><span>%6$s</span></a>
		%7$s
		</div>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $row_settings_button : '', et_pb_is_allowed('add_module') ? $row_clone_button : '', et_pb_is_allowed('add_module') ? $row_remove_button : '', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $row_change_structure_button : '', esc_attr__('Expand Row', 'et_builder'), esc_html__('Expand Row', 'et_builder'), et_pb_is_allowed('lock_module') ? $row_unlock_button : '');
    $row_class = sprintf('class="et-pb-row-content et-pb-data-cid%1$s%2$s <%%= typeof et_pb_template_type !== \'undefined\' && \'module\' === et_pb_template_type ? \' et_pb_hide_insert\' : \'\' %%>"', !et_pb_is_allowed('move_module') ? ' et-pb-disable-sort' : '', !et_pb_is_allowed('edit_global_library') ? sprintf('<%%= typeof et_pb_global_parent !== \'undefined\' || typeof et_pb_global_module !== \'undefined\' ? \' et-pb-disable-sort\' : \'\' %%>') : '');
    $data_skip = 'data-skip="<%= typeof( et_pb_skip_module ) === \'undefined\' ? \'false\' : \'true\' %>"';
    $add_row_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type )%2$s ) { %%>
			<a href="#" class="et-pb-row-add">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Add Row', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' && typeof et_pb_global_parent === "undefined"' : '');
    $insert_column_button = sprintf('<a href="#" class="et-pb-insert-column">
			<span>%1$s</span>
		</a>', esc_html__('Insert Column(s)', 'et_builder'));
    printf('<script type="text/template" id="et-builder-row-template">
			<div class="et-pb-right-click-trigger-overlay"></div>
			%1$s
			<div data-cid="<%%= cid %%>" %2$s %3$s>
				<div class="et-pb-row-container"></div>
				%4$s
			</div>
			%5$s
			<div class="et-pb-locked-overlay et-pb-locked-overlay-row"></div>
			<span class="et-pb-row-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', apply_filters('et_builder_row_settings_controls', $settings), $row_class, $data_skip, et_pb_is_allowed('add_module') ? $insert_column_button : '', et_pb_is_allowed('add_module') ? $add_row_button : '');
    // Module Block Template
    $clone_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' )%3$s && _.contains(%4$s, module_type) ) { %%>
			<a href="#" class="et-pb-clone et-pb-clone-module" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_attr__('Clone Module', 'et_builder'), esc_html__('Clone Module', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' &&  ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent )' : '', et_pb_allowed_modules_list());
    $remove_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' )%3$s && _.contains(%4$s, module_type) ) { %%>
			<a href="#" class="et-pb-remove et-pb-remove-module" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_attr__('Remove Module', 'et_builder'), esc_html__('Remove Module', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' &&  ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent )' : '', et_pb_allowed_modules_list());
    $unlock_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			<a href="#" class="et-pb-unlock" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_html__('Unlock Module', 'et_builder'), esc_attr__('Unlock Module', 'et_builder'));
    $settings_button = sprintf('<%% if (%3$s _.contains( %4$s, module_type ) ) { %%>
			<a href="#" class="et-pb-settings" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_attr__('Module Settings', 'et_builder'), esc_html__('Module Settings', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) && ( typeof et_pb_global_module === "undefined" || "" === et_pb_global_module ) &&' : '', et_pb_allowed_modules_list());
    printf('<script type="text/template" id="et-builder-block-module-template">
			%1$s
			%2$s
			%3$s
			%4$s
			<span class="et-pb-module-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $settings_button : '', et_pb_is_allowed('add_module') ? $clone_button : '', et_pb_is_allowed('add_module') ? $remove_button : '', et_pb_is_allowed('lock_module') ? $unlock_button : '');
    // Modal Template
    $save_exit_button = sprintf('<a href="#" class="et-pb-modal-save button button-primary">
			<span>%1$s</span>
		</a>', esc_html__('Save & Exit', 'et_builder'));
    $save_template_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || \'\' === et_pb_template_type ) { %%>
			<a href="#" class="et-pb-modal-save-template button">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Save & Add To Library', 'et_builder'));
    $preview_template_button = sprintf('<a href="#" class="et-pb-modal-preview-template button">
			<span class="icon"></span>
			<span class="label">%1$s</span>
		</a>', esc_html__('Preview', 'et_builder'));
    $can_edit_or_has_modal_view_tab = et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings'));
    printf('<script type="text/template" id="et-builder-modal-template">
			<div class="et-pb-modal-container%6$s">

				<a href="#" class="et-pb-modal-close">
					<span>%1$s</span>
				</a>

			<%% if ( ! ( typeof open_view !== \'undefined\' && open_view === \'column_specialty_settings\' ) && typeof type !== \'undefined\' && ( type === \'module\' || type === \'section\' || type === \'row_inner\' || ( type === \'row\' && typeof open_view === \'undefined\' ) ) ) { %%>
				<div class="et-pb-modal-bottom-container%4$s">
					%2$s
					%5$s
					%3$s
				</div>
			<%% } %%>

			</div>
		</script>', esc_html__('Cancel', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('save_library') ? $save_template_button : '', $can_edit_or_has_modal_view_tab ? $save_exit_button : '', !et_pb_is_allowed('divi_library') || !et_pb_is_allowed('save_library') ? ' et_pb_single_button' : '', $preview_template_button, $can_edit_or_has_modal_view_tab ? '' : ' et_pb_no_editing');
    // Column Settings Template
    $columns_number = '<% if ( view.model.attributes.specialty_columns === 3 ) { %>
			3
		<% } else { %>
			2
		<% } %>';
    $data_specialty_columns = sprintf('<%% if ( typeof view !== \'undefined\' && typeof view.model.attributes.specialty_columns !== \'undefined\' ) { %%>
			data-specialty_columns="%1$s"
		<%% } %%>', $columns_number);
    $saved_row_tab = sprintf('<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
			<a href="#">%1$s</a>
		</li>', esc_html__('Add From Library', 'et_builder'));
    $saved_row_container = '<% if ( ( typeof change_structure === \'undefined\' || \'true\' !== change_structure ) && ( typeof et_pb_specialty === \'undefined\' || et_pb_specialty !== \'on\' ) ) { %>
								<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab"></div>
							<% } %>';
    printf('<script type="text/template" id="et-builder-column-settings-template">

			<h3 class="et-pb-settings-heading" data-current_row="<%%= cid %%>">%1$s</h3>

		<%% if ( ( typeof change_structure === \'undefined\' || \'true\' !== change_structure ) && ( typeof et_pb_specialty === \'undefined\' || et_pb_specialty !== \'on\' ) ) { %%>
			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher" %2$s>
				<li class="et-pb-saved-module et-pb-options-tabs-links-active" data-open_tab="et-pb-new-modules-tab" data-content_loaded="true">
					<a href="#">%3$s</a>
				</li>
				%4$s
			</ul>
		<%% } %%>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-new-modules-tab active-container">
				<ul class="et-pb-column-layouts">
					%5$s
				</ul>
			</div>

			%6$s

		</script>', esc_html__('Insert Columns', 'et_builder'), $data_specialty_columns, esc_html__('New Row', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_row_tab : '', et_builder_get_columns_layout(), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_row_container : '');
    // "Add Module" Template
    $fullwidth_class = '<% if ( typeof module.fullwidth_only !== \'undefined\' && module.fullwidth_only === \'on\' ) { %> et_pb_fullwidth_only_module<% } %>';
    $saved_modules_tab = sprintf('<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
			<a href="#">%1$s</a>
		</li>', esc_html__('Add From Library', 'et_builder'));
    $saved_modules_container = '<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab"></div>';
    printf('<script type="text/template" id="et-builder-modules-template">
			<h3 class="et-pb-settings-heading">%1$s</h3>

			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher">
				<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-all-modules-tab">
					<a href="#">%2$s</a>
				</li>

				%3$s
			</ul>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-all-modules-tab active-container">
				<ul class="et-pb-all-modules">
				<%% _.each(modules, function(module) { %%>
					<%% if ( "et_pb_row" !== module.label && "et_pb_section" !== module.label && "et_pb_column" !== module.label && "et_pb_row_inner" !== module.label && _.contains(%6$s, module.label ) ) { %%>
						<li class="<%%= module.label %%>%4$s">
							<span class="et_module_title"><%%= module.title %%></span>
						</li>
					<%% } %%>
				<%% }); %%>
				</ul>
			</div>

			%5$s
		</script>', esc_html__('Insert Module', 'et_builder'), esc_html__('New Module', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_modules_tab : '', $fullwidth_class, et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_modules_container : '', et_pb_allowed_modules_list());
    // Load Layout Template
    printf('<script type="text/template" id="et-builder-load_layout-template">
			<h3 class="et-pb-settings-heading">%1$s</h3>

		<%% if ( typeof display_switcher !== \'undefined\' && display_switcher === \'on\' ) { %%>
			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher">
				<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-all-modules-tab">
					<a href="#">%2$s</a>
				</li>
				<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
					<a href="#">%3$s</a>
				</li>
			</ul>
		<%% } %%>

		<%% if ( typeof display_switcher !== \'undefined\' && display_switcher === \'on\' ) { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-all-modules-tab active-container"></div>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab" style="display: none;"></div>
		<%% } else { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab active-container"></div>
		<%% } %%>
		</script>', esc_html__('Load Layout', 'et_builder'), esc_html__('Predefined Layouts', 'et_builder'), esc_html__('Add From Library', 'et_builder'));
    $insert_module_button = sprintf('%2$s
		<a href="#" class="et-pb-insert-module<%%= typeof et_pb_template_type === \'undefined\' || \'module\' !== et_pb_template_type ? \'\' : \' et_pb_hidden_button\' %%>">
			<span>%1$s</span>
		</a>
		%3$s', esc_html__('Insert Module(s)', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( typeof et_pb_global_parent === "undefined" ) { %>' : '', !et_pb_is_allowed('edit_global_library') ? '<% } %>' : '');
    // Column Template
    printf('<script type="text/template" id="et-builder-column-template">
			%1$s
		</script>', et_pb_is_allowed('add_module') ? $insert_module_button : '');
    // Advanced Settings Buttons Module
    printf('<script type="text/template" id="et-builder-advanced-setting">
			<a href="#" class="et-pb-advanced-setting-remove">
				<span>%1$s</span>
			</a>

			<a href="#" class="et-pb-advanced-setting-options">
				<span>%2$s</span>
			</a>

			<a href="#" class="et-pb-clone et-pb-advanced-setting-clone">
				<span>%3$s</span>
			</a>
		</script>', esc_html__('Delete', 'et_builder'), esc_html__('Settings', 'et_builder'), esc_html__('Clone Module', 'et_builder'));
    // Advanced Settings Modal Buttons Template
    printf('<script type="text/template" id="et-builder-advanced-setting-edit">
			<div class="et-pb-modal-container">
				<a href="#" class="et-pb-modal-close">
					<span>%1$s</span>
				</a>

				<div class="et-pb-modal-bottom-container">
					<a href="#" class="et-pb-modal-save">
						<span>%2$s</span>
					</a>
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Deactivate Builder" Modal Message Template
    printf('<script type="text/template" id="et-builder-prompt-modal-deactivate_builder-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('Disable Builder', 'et_builder'), esc_html__('All content created in the Divi Builder will be lost. Previous content will be restored.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Clear Layout" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-clear_layout-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('Clear Layout', 'et_builder'), esc_html__('All of your current page content will be lost.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Reset Advanced Settings" Modal Template
    printf('<script type="text/template" id="et-builder-prompt-modal-reset_advanced_settings-text">
			<p>%1$s</p>
			<p>%2$s</p>
		</script>', esc_html__('All advanced module settings in will be lost.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Save Layout" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-save_layout">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Save Layout" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-save_layout-text">
			<h3>%1$s</h3>
			<p>%2$s</p>

			<label>%3$s</label>
			<input type="text" value="" id="et_pb_new_layout_name" class="regular-text" />
		</script>', esc_html__('Save To Library', 'et_builder'), esc_html__('Save your current page to the Divi Library for later use.', 'et_builder'), esc_html__('Layout Name:', 'et_builder'));
    // "Save Template" Modal Window Layout
    printf('<script type="text/template" id="et-builder-prompt-modal-save_template">
			<div class="et_pb_prompt_modal et_pb_prompt_modal_save_library">
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%1$s" />
				</div>
			</div>
		</script>', esc_attr__('Save And Add To Library', 'et_builder'));
    // "Save Template" Content Layout
    $layout_categories = get_terms('layout_category', array('hide_empty' => false));
    $categories_output = sprintf('<div class="et-pb-option"><label>%1$s</label>', __('Add To Categories:', 'et_builder'));
    if (is_array($layout_categories) && !empty($layout_categories)) {
        $categories_output .= '<div class="et-pb-option-container layout_cats_container">';
        foreach ($layout_categories as $category) {
            $categories_output .= sprintf('<label>%1$s<input type="checkbox" value="%2$s"/></label>', esc_html($category->name), esc_attr($category->term_id));
        }
        $categories_output .= '</div></div>';
    }
    $categories_output .= sprintf('
		<div class="et-pb-option">
			<label>%1$s:</label>
			<div class="et-pb-option-container">
				<input type="text" value="" id="et_pb_new_cat_name" class="regular-text" />
			</div>
		</div>', esc_html__('Create New Category', 'et_builder'));
    $general_checkbox = sprintf('<label>
			%1$s <input type="checkbox" value="general" id="et_pb_template_general" checked />
		</label>', esc_html__('Include General settings', 'et_builder'));
    $advanced_checkbox = sprintf('<label>
			%1$s <input type="checkbox" value="advanced" id="et_pb_template_advanced" checked />
		</label>', esc_html__('Include Advanced Design settings', 'et_builder'));
    $css_checkbox = sprintf('<label>
			%1$s <input type="checkbox" value="css" id="et_pb_template_css" checked />
		</label>', esc_html__('Include Custom CSS', 'et_builder'));
    printf('<script type="text/template" id="et-builder-prompt-modal-save_template-text">
			<div class="et-pb-main-settings">
				<p>%1$s</p>

				<div class="et-pb-option">
					<label>%2$s:</label>

					<div class="et-pb-option-container">
						<input type="text" value="" id="et_pb_new_template_name" class="regular-text" />
					</div>
				</div>

			<%% if ( \'module\' === module_type ) { %%>
				<div class="et-pb-option">
					<label>%3$s:</label>

					<div class="et-pb-option-container et_pb_select_module_tabs">
						%4$s

						%5$s

						%6$s
						<p class="et_pb_error_message_save_template" style="display: none;">
							%7$s
						</p>
					</div>
				</div>
			<%% } %%>

			<%% if ( \'global\' !== is_global && \'global\' !== is_global_child ) { %%>
				<div class="et-pb-option">
					<label>%8$s</label>

					<div class="et-pb-option-container">
						<label>
							%9$s <input type="checkbox" value="" id="et_pb_template_global" />
						</label>
					</div>
				</div>
			<%% } %%>

				%10$s
			</div>
		</script>', esc_html__('Here you can save the current item and add it to your Divi Library for later use as well.', 'et_builder'), esc_html__('Template Name', 'et_builder'), esc_html__('Selective Sync', 'et_builder'), et_pb_is_allowed('general_settings') ? $general_checkbox : '', et_pb_is_allowed('advanced_settings') ? $advanced_checkbox : '', et_pb_is_allowed('custom_css_settings') ? $css_checkbox : '', esc_html__('Please select at least 1 tab to save', 'et_builder'), esc_html__('Save as Global:', 'et_builder'), esc_html__('Make this a global item', 'et_builder'), $categories_output);
    // Prompt Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s<span>
				</a>

				<div class="et_pb_prompt_buttons">
					<a href="#" class="et_pb_prompt_proceed">%2$s</a>
				</div>
			</div>
		</script>', esc_html__('No', 'et_builder'), esc_html__('Yes', 'et_builder'));
    // "Add Specialty Section" Button Template
    printf('<script type="text/template" id="et-builder-add-specialty-section-button">
			<a href="#" class="et-pb-section-add-specialty et-pb-add-specialty-template" data-is_template="true">%1$s</a>
		</script>', esc_html__('Add Specialty Section', 'et_builder'));
    // Saved Entry Template
    echo '<script type="text/template" id="et-builder-saved-entry">
			<a class="et_pb_saved_entry_item"><%= title %></a>
		</script>';
    // Font Icons Template
    printf('<script type="text/template" id="et-builder-google-fonts-options-items">
			%1$s
		</script>', et_builder_get_font_options_items());
    // Font Icons Template
    printf('<script type="text/template" id="et-builder-font-icon-list-items">
			%1$s
		</script>', et_pb_get_font_icon_list_items());
    // Histories Visualizer Item Template
    printf('<script type="text/template" id="et-builder-histories-visualizer-item-template">
			<li id="et-pb-history-<%%= this.options.get( "timestamp" ) %%>" class="<%%= this.options.get( "current_active_history" ) ? "active" : "undo"  %%>" data-timestamp="<%%= this.options.get( "timestamp" )  %%>">
				<span class="datetime"><%%= this.options.get( "datetime" )  %%></span>
				<span class="verb"> <%%= this.getVerb()  %%></span>
				<span class="noun"> <%%= this.getNoun()  %%></span>
			</li>
		</script>');
    // Font Down Icons Template
    printf('<script type="text/template" id="et-builder-font-down-icon-list-items">
			%1$s
		</script>', et_pb_get_font_down_icon_list_items());
    do_action('et_pb_after_page_builder');
}
Example #3
0
function et_pb_pagebuilder_meta_box()
{
    global $typenow, $post;
    do_action('et_pb_before_page_builder');
    echo '<div id="et_pb_hidden_editor">';
    wp_editor('', 'et_pb_content_new', array('media_buttons' => true, 'tinymce' => array('wp_autoresize_on' => true)));
    echo '</div>';
    printf('<div id="et_pb_main_container" class="post-type-%1$s%2$s"></div>', esc_attr($typenow), !et_pb_is_allowed('move_module') ? ' et-pb-disable-sort' : '');
    $rename_module_menu = sprintf('<%% if ( this.hasOption( "rename" ) ) { %%>
			<li><a class="et-pb-right-click-rename" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Rename', 'et_builder'));
    $copy_module_menu = sprintf('<%% if ( this.hasOption( "copy" ) ) { %%>
			<li><a class="et-pb-right-click-copy" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Copy', 'et_builder'));
    $paste_after_menu = sprintf('<%% if ( this.hasOption( "paste-after" ) ) { %%>
			<li><a class="et-pb-right-click-paste-after" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Paste After', 'et_builder'));
    $paste_menu_item = sprintf('<%% if ( this.hasOption( "paste-column" ) ) { %%>
			<li><a class="et-pb-right-click-paste-column" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Paste', 'et_builder'));
    $paste_app_menu_item = sprintf('<%% if ( this.hasOption( "paste-app" ) ) { %%>
			<li><a class="et-pb-right-click-paste-app" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Paste', 'et_builder'));
    $save_to_lib_menu = sprintf('<%% if ( this.hasOption( "save-to-library") ) { %%>
			<li><a class="et-pb-right-click-save-to-library" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Save to Library', 'et_builder'));
    $lock_unlock_menu = sprintf('<%% if ( this.hasOption( "lock" ) ) { %%>
			<li><a class="et-pb-right-click-lock" href="#"><span class="unlock">%1$s</span><span class="lock">%2$s</span></a></li>
		<%% } %%>', esc_html__('Unlock', 'et_builder'), esc_html__('Lock', 'et_builder'));
    $enable_disable_menu = sprintf('<%% if ( this.hasOption( "disable" ) ) { %%>
			<li><a class="et-pb-right-click-disable" href="#"><span class="enable">%1$s</span><span class="disable">%2$s</span></a>
				<span class="et_pb_disable_on_options"><span class="et_pb_disable_on_option et_pb_disable_on_phone"></span><span class="et_pb_disable_on_option et_pb_disable_on_tablet"></span><span class="et_pb_disable_on_option et_pb_disable_on_desktop"></span></span>
			</li>
		<%% } %%>', esc_html__('Enable', 'et_builder'), esc_html__('Disable', 'et_builder'));
    $start_ab_testing_menu = sprintf('<%% if ( this.hasOption( "start-ab-testing") ) { %%>
			<li><a class="et-pb-right-click-start-ab-testing" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Split Test', 'et_builder'));
    $end_ab_testing_menu = sprintf('<%% if ( this.hasOption( "end-ab-testing") ) { %%>
			<li><a class="et-pb-right-click-end-ab-testing" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('End Split Test', 'et_builder'));
    $disable_global_menu = sprintf('<%% if ( this.hasOption( "disable-global") ) { %%>
			<li><a class="et-pb-right-click-disable-global" href="#">%1$s</a></li>
		<%% } %%>', esc_html__('Disable Global', 'et_builder'));
    // Right click options Template
    printf('<script type="text/template" id="et-builder-right-click-controls-template">
		<ul class="options">
			<%% if ( "module" !== this.options.model.attributes.type || _.contains( %13$s, this.options.model.attributes.module_type ) ) { %%>
				%1$s

				%15$s

				%16$s

				%17$s

				%8$s

				<%% if ( this.hasOption( "undo" ) ) { %%>
				<li><a class="et-pb-right-click-undo" href="#">%9$s</a></li>
				<%% } %%>

				<%% if ( this.hasOption( "redo" ) ) { %%>
				<li><a class="et-pb-right-click-redo" href="#">%10$s</a></li>
				<%% } %%>

				%2$s

				%3$s

				<%% if ( this.hasOption( "collapse" ) ) { %%>
				<li><a class="et-pb-right-click-collapse" href="#"><span class="expand">%4$s</span><span class="collapse">%5$s</span></a></li>
				<%% } %%>

				%6$s

				%7$s

				%12$s

				%11$s

			<%% } %%>

			<%% if ( this.hasOption( "preview" ) ) { %%>
			<li><a class="et-pb-right-click-preview" href="#">%14$s</a></li>
			<%% } %%>
		</ul>
		</script>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $rename_module_menu : '', et_pb_is_allowed('disable_module') ? $enable_disable_menu : '', et_pb_is_allowed('lock_module') ? $lock_unlock_menu : '', esc_html__('Expand', 'et_builder'), esc_html__('Collapse', 'et_builder'), et_pb_is_allowed('add_module') ? $copy_module_menu : '', et_pb_is_allowed('add_module') ? $paste_after_menu : '', et_pb_is_allowed('divi_library') && et_pb_is_allowed('save_library') ? $save_to_lib_menu : '', esc_html__('Undo', 'et_builder'), esc_html__('Redo', 'et_builder'), et_pb_is_allowed('add_module') ? $paste_menu_item : '', et_pb_is_allowed('add_module') ? $paste_app_menu_item : '', et_pb_allowed_modules_list(), esc_html__('Preview', 'et_builder'), et_pb_is_allowed('ab_testing') ? $start_ab_testing_menu : '', et_pb_is_allowed('ab_testing') ? $end_ab_testing_menu : '', et_pb_is_allowed('edit_module') && et_pb_is_allowed('edit_global_library') ? $disable_global_menu : '');
    // "Rename Module Admin Label" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-rename_admin_label">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_attr__('Save', 'et_builder'));
    // "Rename Module Admin Label" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-rename_admin_label-text">
			<h3>%1$s</h3>
			<p>%2$s</p>

			<input type="text" value="" id="et_pb_new_admin_label" class="regular-text" />
		</script>', esc_html__('Rename', 'et_builder'), esc_html__('Enter a new name for this module', 'et_builder'));
    // Builder's Main Buttons
    $save_to_lib_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-save" title="%1$s">
			<span>%2$s</span>
		</a>', esc_attr__('Save to Library', 'et_builder'), esc_html__('Save to Library', 'et_builder'));
    $load_from_lib_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-load" title="%1$s">
			<span>%2$s</span>
		</a>', esc_attr__('Load From Library', 'et_builder'), esc_html__('Load From Library', 'et_builder'));
    $clear_layout_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-clear" title="%1$s">
			<span>%2$s</span>
		</a>', esc_attr__('Clear Layout', 'et_builder'), esc_html__('Clear Layout', 'et_builder'));
    // Builder's History Buttons
    $history_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-history" title="%1$s">
			<span class="icon"></span><span class="label">%2$s</span>
		</a>', esc_attr__('See History', 'et_builder'), esc_html__('See History', 'et_builder'));
    $redo_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-redo" title="%1$s">
			<span class="icon"></span><span class="label">%2$s</span>
		</a>', esc_attr__('Redo', 'et_builder'), esc_html__('Redo', 'et_builder'));
    $undo_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-undo" title="%1$s">
			<span class="icon"></span><span class="label">%2$s</span>
		</a>', esc_attr__('Undo', 'et_builder'), esc_html__('Undo', 'et_builder'));
    // App View Stats Button
    $view_ab_stats_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-view-ab-stats" title="%1$s">
			<span class="icon"></span><span class="label">%2$s</span>
		</a>', esc_attr__('View Stats', 'et_builder'), esc_html__('View Stats', 'et_builder'));
    // App Settings Button
    $settings_button = sprintf('<a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-settings" title="%1$s">
			<span class="icon"></span><span class="label">%2$s</span>
		</a>', esc_attr__('Settings', 'et_builder'), esc_html__('Settings', 'et_builder'));
    // App Template
    printf('<script type="text/template" id="et-builder-app-template">
			<div id="et_pb_layout_controls">
				%1$s
				%2$s
				%3$s
				%4$s
				%5$s
				%6$s
				%7$s
				%8$s
			</div>
			<div id="et-pb-histories-visualizer-overlay"></div>
			<ol id="et-pb-histories-visualizer"></ol>
		</script>', et_pb_is_allowed('divi_library') && et_pb_is_allowed('save_library') ? $save_to_lib_button : '', et_pb_is_allowed('divi_library') && et_pb_is_allowed('load_layout') && et_pb_is_allowed('add_library') && et_pb_is_allowed('add_module') ? $load_from_lib_button : '', et_pb_is_allowed('add_module') ? $clear_layout_button : '', $history_button, $redo_button, $undo_button, $view_ab_stats_button, $settings_button);
    // App Settings Buttons Template
    $builder_button_ab_testing_conditional = '( typeof et_pb_ab_goal === "undefined" || et_pb_ab_goal === "off" || typeof et_pb_ab_subject !== "undefined" )';
    $is_ab_active = isset($post->ID) && 'on' === get_post_meta($post->ID, '_et_pb_use_ab_testing', true);
    $view_stats_active_class = $is_ab_active ? 'active' : '';
    $view_stats_button = sprintf('<a href="#" class="et-pb-app-view-ab-stats-button %1$s" title="%2$s">
			<span class="icon">
				<object type="image/svg+xml" data="%3$s/images/stats.svg"></object>
			</span>
			<span class="label">%2$s</span>
		</a>', esc_attr($view_stats_active_class), esc_attr__('View Split Testing Stats', 'et_builder'), esc_url(ET_BUILDER_URI));
    $portability_class = 'et-pb-app-portability-button';
    if ($is_ab_active) {
        $portability_class .= ' et-core-disabled';
    }
    printf('<script type="text/template" id="et-builder-app-settings-button-template">
			<a href="#" class="et-pb-app-settings-button" title="%1$s">
				<span class="icon">
					<object type="image/svg+xml" data="%5$s/images/menu.svg"></object>
				</span>
				<span class="label">%2$s</span>
			</a>
			%3$s
			%4$s
		</script>', esc_attr__('Settings', 'et_builder'), esc_html__('Settings', 'et_builder'), et_core_portability_link('et_builder', array('class' => $portability_class)), et_pb_is_allowed('ab_testing') ? $view_stats_button : '', esc_url(ET_BUILDER_URI));
    $section_settings_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type || \'\' === et_pb_template_type )%3$s ) { %%>
			<a href="#" class="et-pb-settings et-pb-settings-section" title="%1$s"><span>%2$s</span></a>
		<%% } %%>', esc_attr__('Settings', 'et_builder'), esc_html__('Settings', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' && typeof et_pb_global_module === "undefined"' : '');
    $section_clone_button = sprintf('%3$s
			<a href="#" class="et-pb-clone et-pb-clone-section" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Clone Section', 'et_builder'), esc_html__('Clone Section', 'et_builder'), '<% if ( ' . $builder_button_ab_testing_conditional . ' ) { %>', '<% } %>');
    $section_remove_button = sprintf('%3$s
			<a href="#" class="et-pb-remove et-pb-remove-section" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Delete Section', 'et_builder'), esc_html__('Delete Section', 'et_builder'), '<% if ( ' . $builder_button_ab_testing_conditional . ' ) { %>', '<% } %>');
    $section_unlock_button = sprintf('<a href="#" class="et-pb-unlock" title="%1$s"><span>%2$s</span></a>', esc_attr__('Unlock Section', 'et_builder'), esc_html__('Unlock Section', 'et_builder'));
    // Section Template
    $settings_controls = sprintf('<div class="et-pb-controls">
			%1$s

			<%% if ( typeof et_pb_template_type === \'undefined\' || ( \'section\' !== et_pb_template_type && \'row\' !== et_pb_template_type && \'module\' !== et_pb_template_type ) ) { %%>
				%2$s
				%3$s
			<%% } %%>

			<a href="#" class="et-pb-expand" title="%4$s"><span>%5$s</span></a>
			%6$s
		</div>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $section_settings_button : '', et_pb_is_allowed('add_module') ? $section_clone_button : '', et_pb_is_allowed('add_module') ? $section_remove_button : '', esc_attr__('Expand Section', 'et_builder'), esc_html__('Expand Section', 'et_builder'), et_pb_is_allowed('lock_module') ? $section_unlock_button : '');
    $add_from_lib_section = sprintf('<span class="et-pb-section-add-saved">%1$s</span>', esc_html__('Add From Library', 'et_builder'));
    $add_standard_section_button = sprintf('<span class="et-pb-section-add-main">%1$s</span>', esc_html__('Standard Section', 'et_builder'));
    $add_standard_section_button = apply_filters('et_builder_add_main_section_button', $add_standard_section_button);
    $add_fullwidth_section_button = sprintf('<span class="et-pb-section-add-fullwidth">%1$s</span>', esc_html__('Fullwidth Section', 'et_builder'));
    $add_fullwidth_section_button = apply_filters('et_builder_add_fullwidth_section_button', $add_fullwidth_section_button);
    $add_specialty_section_button = sprintf('<span class="et-pb-section-add-specialty">%1$s</span>', esc_html__('Specialty Section', 'et_builder'));
    $add_specialty_section_button = apply_filters('et_builder_add_specialty_section_button', $add_specialty_section_button);
    $settings_add_controls = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || ( \'section\' !== et_pb_template_type && \'row\' !== et_pb_template_type && \'module\' !== et_pb_template_type ) ) { %%>
			<a href="#" class="et-pb-section-add">
				%1$s
				%2$s
				%3$s
				%4$s
			</a>
		<%% } %%>', $add_standard_section_button, $add_fullwidth_section_button, $add_specialty_section_button, et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $add_from_lib_section : '');
    printf('<script type="text/template" id="et-builder-section-template">
			<div class="et-pb-right-click-trigger-overlay"></div>
			%1$s
			<div class="et-pb-section-content et-pb-data-cid%3$s%4$s" data-cid="<%%= cid %%>" data-skip="<%%= typeof( et_pb_skip_module ) === \'undefined\' ? \'false\' : \'true\' %%>">
			</div>
			%2$s
			<div class="et-pb-locked-overlay et-pb-locked-overlay-section"></div>
			<span class="et-pb-section-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', apply_filters('et_builder_section_settings_controls', $settings_controls), et_pb_is_allowed('add_module') ? apply_filters('et_builder_section_add_controls', $settings_add_controls) : '', !et_pb_is_allowed('move_module') ? ' et-pb-disable-sort' : '', !et_pb_is_allowed('edit_global_library') ? sprintf('<%%= typeof et_pb_global_module !== \'undefined\' ? \' et-pb-disable-sort\' : \'\' %%>') : '');
    $row_settings_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' )%3$s ) { %%>
			<a href="#" class="et-pb-settings et-pb-settings-row" title="%1$s"><span>%2$s</span></a>
		<%% } %%>', esc_attr__('Settings', 'et_builder'), esc_html__('Settings', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' && ( typeof et_pb_global_module === "undefined" || "" === et_pb_global_module ) && ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent )' : '');
    $row_clone_button = sprintf('%3$s
			<a href="#" class="et-pb-clone et-pb-clone-row" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Clone Row', 'et_builder'), esc_html__('Clone Row', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) && ' . $builder_button_ab_testing_conditional . ' ) { %>' : '<% if ( ' . $builder_button_ab_testing_conditional . ' ) { %>', '<% } %>');
    $row_remove_button = sprintf('%3$s
			<a href="#" class="et-pb-remove et-pb-remove-row" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Delete Row', 'et_builder'), esc_html__('Delete Row', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent  ) && ' . $builder_button_ab_testing_conditional . ') { %>' : '<% if ( ' . $builder_button_ab_testing_conditional . ' ) { %>', '<% } %>');
    $row_change_structure_button = sprintf('%3$s
			<a href="#" class="et-pb-change-structure" title="%1$s"><span>%2$s</span></a>
		%4$s', esc_attr__('Change Structure', 'et_builder'), esc_html__('Change Structure', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( ( typeof et_pb_global_module === "undefined" || "" === et_pb_global_module ) && ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) ) { %>' : '', !et_pb_is_allowed('edit_global_library') ? '<% } %>' : '');
    $row_unlock_button = sprintf('<a href="#" class="et-pb-unlock" title="%1$s"><span>%2$s</span></a>', esc_attr__('Unlock Row', 'et_builder'), esc_html__('Unlock Row', 'et_builder'));
    // Row Template
    $settings = sprintf('<div class="et-pb-controls">
			%1$s
		<%% if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
			%2$s
		<%% }

		if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			%4$s
		<%% }

		if ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type ) { %%>
			%3$s
		<%% } %%>

		<a href="#" class="et-pb-expand" title="%5$s"><span>%6$s</span></a>
		%7$s
		</div>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $row_settings_button : '', et_pb_is_allowed('add_module') ? $row_clone_button : '', et_pb_is_allowed('add_module') ? $row_remove_button : '', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $row_change_structure_button : '', esc_attr__('Expand Row', 'et_builder'), esc_html__('Expand Row', 'et_builder'), et_pb_is_allowed('lock_module') ? $row_unlock_button : '');
    $row_class = sprintf('class="et-pb-row-content et-pb-data-cid%1$s%2$s <%%= typeof et_pb_template_type !== \'undefined\' && \'module\' === et_pb_template_type ? \' et_pb_hide_insert\' : \'\' %%>"', !et_pb_is_allowed('move_module') ? ' et-pb-disable-sort' : '', !et_pb_is_allowed('edit_global_library') ? sprintf('<%%= typeof et_pb_global_parent !== \'undefined\' || typeof et_pb_global_module !== \'undefined\' ? \' et-pb-disable-sort\' : \'\' %%>') : '');
    $data_skip = 'data-skip="<%= typeof( et_pb_skip_module ) === \'undefined\' ? \'false\' : \'true\' %>"';
    $add_row_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || \'section\' === et_pb_template_type )%2$s ) { %%>
			<a href="#" class="et-pb-row-add">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Add Row', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' && typeof et_pb_global_parent === "undefined"' : '');
    $insert_column_button = sprintf('<a href="#" class="et-pb-insert-column">
			<span>%1$s</span>
		</a>', esc_html__('Insert Column(s)', 'et_builder'));
    printf('<script type="text/template" id="et-builder-row-template">
			<div class="et-pb-right-click-trigger-overlay"></div>
			%1$s
			<div data-cid="<%%= cid %%>" %2$s %3$s>
				<div class="et-pb-row-container"></div>
				%4$s
			</div>
			%5$s
			<div class="et-pb-locked-overlay et-pb-locked-overlay-row"></div>
			<span class="et-pb-row-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', apply_filters('et_builder_row_settings_controls', $settings), $row_class, $data_skip, et_pb_is_allowed('add_module') ? $insert_column_button : '', et_pb_is_allowed('add_module') ? $add_row_button : '');
    // Module Block Template
    $clone_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' )%3$s && _.contains(%4$s, module_type) && ' . $builder_button_ab_testing_conditional . ' ) { %%>
			<a href="#" class="et-pb-clone et-pb-clone-module" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_attr__('Clone Module', 'et_builder'), esc_html__('Clone Module', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' &&  ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent )' : '', et_pb_allowed_modules_list());
    $remove_button = sprintf('<%% if ( ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' )%3$s && _.contains(%4$s, module_type) && ' . $builder_button_ab_testing_conditional . ' ) { %%>
			<a href="#" class="et-pb-remove et-pb-remove-module" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_attr__('Remove Module', 'et_builder'), esc_html__('Remove Module', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' &&  ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent )' : '', et_pb_allowed_modules_list());
    $unlock_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || et_pb_template_type !== \'module\' ) { %%>
			<a href="#" class="et-pb-unlock" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_html__('Unlock Module', 'et_builder'), esc_attr__('Unlock Module', 'et_builder'));
    $settings_button = sprintf('<%% if (%3$s _.contains( %4$s, module_type ) ) { %%>
			<a href="#" class="et-pb-settings" title="%1$s">
				<span>%2$s</span>
			</a>
		<%% } %%>', esc_attr__('Module Settings', 'et_builder'), esc_html__('Module Settings', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? ' ( typeof et_pb_global_parent === "undefined" || "" === et_pb_global_parent ) && ( typeof et_pb_global_module === "undefined" || "" === et_pb_global_module ) &&' : '', et_pb_allowed_modules_list());
    printf('<script type="text/template" id="et-builder-block-module-template">
			%1$s
			%2$s
			%3$s
			%4$s
			<span class="et-pb-module-title"><%%= admin_label.replace( /%%22/g, "&quot;" ) %%></span>
		</script>', et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings')) ? $settings_button : '', et_pb_is_allowed('add_module') ? $clone_button : '', et_pb_is_allowed('add_module') ? $remove_button : '', et_pb_is_allowed('lock_module') ? $unlock_button : '');
    // Modal Template
    $save_exit_button = sprintf('<a href="#" class="et-pb-modal-save button button-primary">
			<span>%1$s</span>
		</a>', esc_html__('Save & Exit', 'et_builder'));
    $save_template_button = sprintf('<%% if ( typeof et_pb_template_type === \'undefined\' || \'\' === et_pb_template_type ) { %%>
			<a href="#" class="et-pb-modal-save-template button">
				<span>%1$s</span>
			</a>
		<%% } %%>', esc_html__('Save & Add To Library', 'et_builder'));
    $preview_template_button = sprintf('<a href="#" class="et-pb-modal-preview-template button">
			<span class="icon"></span>
			<span class="label">%1$s</span>
		</a>', esc_html__('Preview', 'et_builder'));
    $can_edit_or_has_modal_view_tab = et_pb_is_allowed('edit_module') && (et_pb_is_allowed('general_settings') || et_pb_is_allowed('advanced_settings') || et_pb_is_allowed('custom_css_settings'));
    printf('<script type="text/template" id="et-builder-modal-template">
			<div class="et-pb-modal-container%6$s">

				<a href="#" class="et-pb-modal-close">
					<span>%1$s</span>
				</a>

			<%% if ( ! ( typeof open_view !== \'undefined\' && open_view === \'column_specialty_settings\' ) && typeof type !== \'undefined\' && ( type === \'module\' || type === \'section\' || type === \'row_inner\' || ( type === \'row\' && typeof open_view === \'undefined\' ) ) ) { %%>
				<div class="et-pb-modal-bottom-container%4$s">
					%2$s
					%5$s
					%3$s
				</div>
			<%% } %%>

			</div>
		</script>', esc_html__('Cancel', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('save_library') ? $save_template_button : '', $can_edit_or_has_modal_view_tab ? $save_exit_button : '', !et_pb_is_allowed('divi_library') || !et_pb_is_allowed('save_library') ? ' et_pb_single_button' : '', $preview_template_button, $can_edit_or_has_modal_view_tab ? '' : ' et_pb_no_editing');
    // Column Settings Template
    $columns_number = '<% if ( view.model.attributes.specialty_columns === 3 ) { %>
			3
		<% } else { %>
			2
		<% } %>';
    $data_specialty_columns = sprintf('<%% if ( typeof view !== \'undefined\' && typeof view.model.attributes.specialty_columns !== \'undefined\' ) { %%>
			data-specialty_columns="%1$s"
		<%% } %%>', $columns_number);
    $saved_row_tab = sprintf('<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
			<a href="#">%1$s</a>
		</li>', esc_html__('Add From Library', 'et_builder'));
    $saved_row_container = '<% if ( ( typeof change_structure === \'undefined\' || \'true\' !== change_structure ) && ( typeof et_pb_specialty === \'undefined\' || et_pb_specialty !== \'on\' ) ) { %>
								<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab"></div>
							<% } %>';
    printf('<script type="text/template" id="et-builder-column-settings-template">

			<h3 class="et-pb-settings-heading" data-current_row="<%%= cid %%>">%1$s</h3>

		<%% if ( ( typeof change_structure === \'undefined\' || \'true\' !== change_structure ) && ( typeof et_pb_specialty === \'undefined\' || et_pb_specialty !== \'on\' ) ) { %%>
			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher" %2$s>
				<li class="et-pb-saved-module et-pb-options-tabs-links-active" data-open_tab="et-pb-new-modules-tab" data-content_loaded="true">
					<a href="#">%3$s</a>
				</li>
				%4$s
			</ul>
		<%% } %%>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-new-modules-tab active-container">
				<ul class="et-pb-column-layouts">
					%5$s
				</ul>
			</div>

			%6$s

		</script>', esc_html__('Insert Columns', 'et_builder'), $data_specialty_columns, esc_html__('New Row', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_row_tab : '', et_builder_get_columns_layout(), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_row_container : '');
    // "Add Module" Template
    $fullwidth_class = '<% if ( typeof module.fullwidth_only !== \'undefined\' && module.fullwidth_only === \'on\' ) { %> et_pb_fullwidth_only_module<% } %>';
    $saved_modules_tab = sprintf('<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
			<a href="#">%1$s</a>
		</li>', esc_html__('Add From Library', 'et_builder'));
    $saved_modules_container = '<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab"></div>';
    printf('<script type="text/template" id="et-builder-modules-template">
			<h3 class="et-pb-settings-heading">%1$s</h3>

			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher">
				<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-all-modules-tab">
					<a href="#">%2$s</a>
				</li>

				%3$s
			</ul>

			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-all-modules-tab active-container">
				<ul class="et-pb-all-modules">
				<%% _.each(modules, function(module) { %%>
					<%% if ( "et_pb_row" !== module.label && "et_pb_section" !== module.label && "et_pb_column" !== module.label && "et_pb_row_inner" !== module.label && _.contains(%6$s, module.label ) ) { %%>
						<li class="<%%= module.label %%>%4$s">
							<span class="et_module_title"><%%= module.title %%></span>
						</li>
					<%% } %%>
				<%% }); %%>
				</ul>
			</div>

			%5$s
		</script>', esc_html__('Insert Module', 'et_builder'), esc_html__('New Module', 'et_builder'), et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_modules_tab : '', $fullwidth_class, et_pb_is_allowed('divi_library') && et_pb_is_allowed('add_library') ? $saved_modules_container : '', et_pb_allowed_modules_list());
    // Load Layout Template
    printf('<script type="text/template" id="et-builder-load_layout-template">
			<h3 class="et-pb-settings-heading">%1$s</h3>

		<%% if ( typeof display_switcher !== \'undefined\' && display_switcher === \'on\' ) { %%>
			<ul class="et-pb-options-tabs-links et-pb-saved-modules-switcher">
				<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-all-modules-tab">
					<a href="#">%2$s</a>
				</li>
				<li class="et-pb-saved-module" data-open_tab="et-pb-saved-modules-tab">
					<a href="#">%3$s</a>
				</li>
			</ul>
		<%% } %%>

		<%% if ( typeof display_switcher !== \'undefined\' && display_switcher === \'on\' ) { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-all-modules-tab active-container"></div>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab" style="display: none;"></div>
		<%% } else { %%>
			<div class="et-pb-main-settings et-pb-main-settings-full et-pb-saved-modules-tab active-container"></div>
		<%% } %%>
		</script>', esc_html__('Load Layout', 'et_builder'), esc_html__('Predefined Layouts', 'et_builder'), esc_html__('Add From Library', 'et_builder'));
    $insert_module_button = sprintf('%2$s
		<a href="#" class="et-pb-insert-module<%%= typeof et_pb_template_type === \'undefined\' || \'module\' !== et_pb_template_type ? \'\' : \' et_pb_hidden_button\' %%>">
			<span>%1$s</span>
		</a>
		%3$s', esc_html__('Insert Module(s)', 'et_builder'), !et_pb_is_allowed('edit_global_library') ? '<% if ( typeof et_pb_global_parent === "undefined" ) { %>' : '', !et_pb_is_allowed('edit_global_library') ? '<% } %>' : '');
    // Column Template
    printf('<script type="text/template" id="et-builder-column-template">
			%1$s
		</script>', et_pb_is_allowed('add_module') ? $insert_module_button : '');
    // Advanced Settings Buttons Module
    printf('<script type="text/template" id="et-builder-advanced-setting">
			<a href="#" class="et-pb-advanced-setting-remove">
				<span>%1$s</span>
			</a>

			<a href="#" class="et-pb-advanced-setting-options">
				<span>%2$s</span>
			</a>

			<a href="#" class="et-pb-clone et-pb-advanced-setting-clone">
				<span>%3$s</span>
			</a>
		</script>', esc_html__('Delete', 'et_builder'), esc_html__('Settings', 'et_builder'), esc_html__('Clone Module', 'et_builder'));
    // Advanced Settings Modal Buttons Template
    printf('<script type="text/template" id="et-builder-advanced-setting-edit">
			<div class="et-pb-modal-container">
				<a href="#" class="et-pb-modal-close">
					<span>%1$s</span>
				</a>

				<div class="et-pb-modal-bottom-container">
					<a href="#" class="et-pb-modal-save">
						<span>%2$s</span>
					</a>
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Deactivate Builder" Modal Message Template
    printf('<script type="text/template" id="et-builder-prompt-modal-deactivate_builder-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('Disable Builder', 'et_builder'), esc_html__('All content created in the Divi Builder will be lost. Previous content will be restored.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Clear Layout" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-clear_layout-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('Clear Layout', 'et_builder'), esc_html__('All of your current page content will be lost.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Reset Advanced Settings" Modal Template
    printf('<script type="text/template" id="et-builder-prompt-modal-reset_advanced_settings-text">
			<p>%1$s</p>
			<p>%2$s</p>
		</script>', esc_html__('All advanced module settings in will be lost.', 'et_builder'), esc_html__('Do you wish to proceed?', 'et_builder'));
    // "Save Layout" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-save_layout">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Save Layout" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-save_layout-text">
			<h3>%1$s</h3>
			<p>%2$s</p>

			<label>%3$s</label>
			<input type="text" value="" id="et_pb_new_layout_name" class="regular-text" />
		</script>', esc_html__('Save To Library', 'et_builder'), esc_html__('Save your current page to the Divi Library for later use.', 'et_builder'), esc_html__('Layout Name:', 'et_builder'));
    // "Save Template" Modal Window Layout
    printf('<script type="text/template" id="et-builder-prompt-modal-save_template">
			<div class="et_pb_prompt_modal et_pb_prompt_modal_save_library">
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%1$s" />
				</div>
			</div>
		</script>', esc_attr__('Save And Add To Library', 'et_builder'));
    // "Save Template" Content Layout
    $layout_categories = get_terms('layout_category', array('hide_empty' => false));
    $categories_output = sprintf('<div class="et-pb-option"><label>%1$s</label>', esc_html__('Add To Categories:', 'et_builder'));
    if (is_array($layout_categories) && !empty($layout_categories)) {
        $categories_output .= '<div class="et-pb-option-container layout_cats_container">';
        foreach ($layout_categories as $category) {
            $categories_output .= sprintf('<label>%1$s<input type="checkbox" value="%2$s"/></label>', esc_html($category->name), esc_attr($category->term_id));
        }
        $categories_output .= '</div></div>';
    }
    $categories_output .= sprintf('
		<div class="et-pb-option">
			<label>%1$s:</label>
			<div class="et-pb-option-container">
				<input type="text" value="" id="et_pb_new_cat_name" class="regular-text" />
			</div>
		</div>', esc_html__('Create New Category', 'et_builder'));
    $general_checkbox = sprintf('<label>
			%1$s <input type="checkbox" value="general" id="et_pb_template_general" checked />
		</label>', esc_html__('Include General settings', 'et_builder'));
    $advanced_checkbox = sprintf('<label>
			%1$s <input type="checkbox" value="advanced" id="et_pb_template_advanced" checked />
		</label>', esc_html__('Include Advanced Design settings', 'et_builder'));
    $css_checkbox = sprintf('<label>
			%1$s <input type="checkbox" value="css" id="et_pb_template_css" checked />
		</label>', esc_html__('Include Custom CSS', 'et_builder'));
    printf('<script type="text/template" id="et-builder-prompt-modal-save_template-text">
			<div class="et-pb-main-settings">
				<p>%1$s</p>

				<div class="et-pb-option">
					<label>%2$s:</label>

					<div class="et-pb-option-container">
						<input type="text" value="" id="et_pb_new_template_name" class="regular-text" />
					</div>
				</div>

			<%% if ( \'module\' === module_type ) { %%>
				<div class="et-pb-option">
					<label>%3$s:</label>

					<div class="et-pb-option-container et_pb_select_module_tabs">
						%4$s

						%5$s

						%6$s
						<p class="et_pb_error_message_save_template" style="display: none;">
							%7$s
						</p>
					</div>
				</div>
			<%% } %%>

			<%% if ( \'global\' !== is_global && \'global\' !== is_global_child ) { %%>
				<div class="et-pb-option">
					<label>%8$s</label>

					<div class="et-pb-option-container">
						<label>
							%9$s <input type="checkbox" value="" id="et_pb_template_global" />
						</label>
					</div>
				</div>
			<%% } %%>

				%10$s
			</div>
		</script>', esc_html__('Here you can save the current item and add it to your Divi Library for later use as well.', 'et_builder'), esc_html__('Template Name', 'et_builder'), esc_html__('Selective Sync', 'et_builder'), et_pb_is_allowed('general_settings') ? $general_checkbox : '', et_pb_is_allowed('advanced_settings') ? $advanced_checkbox : '', et_pb_is_allowed('custom_css_settings') ? $css_checkbox : '', esc_html__('Please select at least 1 tab to save', 'et_builder'), esc_html__('Save as Global:', 'et_builder'), esc_html__('Make this a global item', 'et_builder'), $categories_output);
    // Prompt Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s<span>
				</a>

				<div class="et_pb_prompt_buttons">
					<a href="#" class="et_pb_prompt_proceed">%2$s</a>
				</div>
			</div>
		</script>', esc_html__('No', 'et_builder'), esc_html__('Yes', 'et_builder'));
    // "Open Settings" Modal Window Template
    printf('<script type="text/template" id="et-builder-prompt-modal-open_settings">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Save', 'et_builder'));
    // "Open Settings" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-open_settings-text">
			<h3>%1$s</h3>
			<div class="et_pb_prompt_fields">
			%2$s
			</div><!-- .et_pb_prompt_fields -->
		</script>', esc_html__('Divi Builder Settings', 'et_builder'), et_pb_get_builder_settings_fields(et_pb_get_builder_settings_configurations()));
    /**
     * "Turn off Split Testing" Modal Window Template
     */
    printf('<script type="text/template" id="et-builder-prompt-modal-turn_off_ab_testing">
			<div class="et_pb_prompt_modal">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Yes', 'et_builder'));
    // "Turn off Split Testing" Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-turn_off_ab_testing-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<p>%3$s</p>
		</script>', esc_html__('End Split Test?', 'et_builder'), esc_html__('Upon ending your split test, you will be asked to select which subject variation you would like to keep. Remaining subjects will be removed.', 'et_builder'), esc_html__('Note: this process cannot be undone.', 'et_builder'));
    /**
     * Split Testing Alert :: Modal Window Template
     */
    printf('<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert">
			<div class="et_pb_prompt_modal">
				<div class="et_pb_prompt_buttons">
					<br/>
					<input type="submit" class="et_pb_prompt_proceed" value="%1$s" />
				</div>
			</div>
		</script>', esc_html__('Ok', 'et_builder'));
    // Split Testing Alert :: Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert-text">
			<%% if ( ! _.isUndefined( et_pb_ab_js_options[id] ) ) { %%>
				<h3><%%= et_pb_ab_js_options[id].title %%></h3>
				<p><%%= et_pb_ab_js_options[id].desc %%></p>
			<%% } else { %%>
				<h3>%1$s</h3>
				<p>%2$s</p>
			<%% } %%>
		</script>', esc_html__('An Error Occurred', 'et_builder'), esc_html__('For some reason, you cannot perform this task.', 'et_builder'));
    /**
     * Split Testing Alert Yes/No :: Modal Window Template
     */
    printf('<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert_yes_no">
			<div class="et_pb_prompt_modal">
				<div class="et_pb_prompt_buttons">
					<br/>
					<button class="et_pb_prompt_proceed_alternative et_pb_prompt_cancel">%1$s</button>
					<input type="submit" class="et_pb_prompt_proceed has_alternative has_cancel_alternative" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'), esc_html__('Proceed', 'et_builder'));
    // Split Testing Alert Yes/No :: Modal Content Template
    printf('<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert_yes_no-text">
			<%% if ( ! _.isUndefined( et_pb_ab_js_options[id] ) ) { %%>
				<h3><%%= et_pb_ab_js_options[id].title %%></h3>
				<p><%%= et_pb_ab_js_options[id].desc %%></p>
			<%% } else { %%>
				<h3>%1$s</h3>
				<p>%2$s</p>
			<%% } %%>
		</script>', esc_html__('An Error Occurred', 'et_builder'), esc_html__('For some reason, you cannot perform this task.', 'et_builder'));
    /**
     * Splir Testing :: Set global item winner status
     */
    printf('<script type="text/template" id="et-builder-prompt-modal-set_global_subject_winner">
			<div class="et_pb_prompt_modal">
				<div class="et_pb_prompt_buttons">
					<br/>
					<button class="et_pb_prompt_proceed_alternative">%1$s</button>
					<input type="submit" class="et_pb_prompt_proceed has_alternative" value="%2$s" />
				</div>
			</div>
		</script>', esc_html__('Save as Global Item', 'et_builder'), esc_html__('Save', 'et_builder'));
    // Split Testing :: Set global item winner status template
    printf('<script type="text/template" id="et-builder-prompt-modal-set_global_subject_winner-text">
			<h3>%1$s</h3>
			<p>%2$s</p>
			<ol>
				<li>%3$s</li>
				<li>%4$s</li>
			</ol>
		</script>', esc_html__('Set Winner Status', 'et_builder'), esc_html__('You were using global item as split testing winner. Consequently, you have to choose between:', 'et_builder'), esc_html__('Save winner as global item (selected subject will be synced and your global item will be updated in the Divi Library)', 'et_builder'), esc_html__('Save winner as non-global item (selected subject will no longer be a global item and your changes will not modify the global item)', 'et_builder'));
    /**
     * Split Testing :: View Stats Template
     */
    printf('<script type="text/template" id="et-builder-prompt-modal-view_ab_stats">
			<div class="et_pb_prompt_modal et_pb_ab_view_stats">
				<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
					<span>%1$s</span>
				</a>
			</div>
		</script>', esc_html__('Cancel', 'et_builder'));
    $view_stats_tabs = "";
    foreach (et_pb_ab_get_analysis_types() as $analysis) {
        $view_stats_tabs .= sprintf('<div class="view-stats-tab tab-%1$s" data-analysis="%1$s">
				<ul class="et-pb-ab-view-stats-time-filter">
					<li><a href="#" data-duration="day">%2$s</a></li>
					<li><a href="#" data-duration="week">%3$s</a></li>
					<li><a href="#" data-duration="month">%4$s</a></li>
					<li><a href="#" data-duration="all">%5$s</a></li>
				</ul><!-- .et-pb-ab-view-stats-time-filter -->

				<ul class="et-pb-ab-view-stats-subjects-filter">
				</ul><!-- .et-pb-ab-view-stats-subjects-filter -->

				<div class="view-stats-main-stats">
					<canvas id="ab-testing-stats-%1$s" class="ab-testing-stats" width="913" height="330"></canvas>
				</div>

				<h2 class="sub-heading">%6$s</h2>
				<div class="view-stats-table-wrapper">
					<table id="view-stats-table-%1$s" class="view-stats-table">
						<thead></thead>
						<tbody></tbody>
						<tfoot></tfoot>
					</table>
				</div><!-- .view-stats-table-wrapper -->
				<div class="view-stats-pie-wrapper">
					<canvas id="ab-testing-stats-pie-%1$s" class="ab-testing-stats-pie" width="200" height="200"></canvas>
					<ul class="ab-testing-stats-pie-legends">
					</ul><!-- .ab-testing-stats-pie-legends -->
				</div><!-- .view-stats-pie-wrapper -->
				<div class="no-stats">
					<span class="icon">
						<object type="image/svg+xml" data="%7$s/images/stats-no-data.svg"></object>
					</span>
					<h2>%8$s</h2>
					<p>%9$s</p>
				</div><!-- .no-stats -->
			</div>', esc_attr($analysis), esc_html__('Last 24 Hours', 'et_builder'), esc_html__('Last 7 Days', 'et_builder'), esc_html__('Last Month', 'et_builder'), esc_html__('All Time', 'et_builder'), esc_html__('Summary &amp; Data', 'et_builder'), esc_url(ET_BUILDER_URI), esc_html__('Statistics are still being collected for this time frame', 'et_builder'), esc_html__('Stats will be displayed upon sufficient data collection', 'et_builder'));
    }
    // Split Testing :: View Stats content
    printf('<script type="text/template" id="et-builder-prompt-modal-view_ab_stats-text">
			<h3>%1$s</h3>
			<ul class="et-pb-options-tabs-links">
				<li class="et_pb_options_tab_ab_stat_conversion et-pb-options-tabs-links-active" data-analysis="conversions">
					<a href="#">%6$s</a>
				</li>
				<li class="et_pb_options_tab_ab_stat_clicks" data-analysis="clicks">
					<a href="#">%2$s</a>
				</li>
				<li class="et_pb_options_tab_ab_stat_reads" data-analysis="reads">
					<a href="#">%3$s</a>
				</li>
				<li class="et_pb_options_tab_ab_stat_bounces" data-analysis="bounces">
					<a href="#">%4$s</a>
				</li>
				<li class="et_pb_options_tab_ab_stat_engagements" data-analysis="engagements">
					<a href="#">%5$s</a>
				</li>
				<li class="et_pb_options_tab_ab_stat_shortcode_conversions" data-analysis="shortcode_conversions">
					<a href="#">%13$s</a>
				</li>
				<li class="et_pb_ab_refresh_button">
					<a href="#" class="et-pb-ab-refresh-stats" title="%11$s">
						<span class="icon"></span><span class="label">%12$s</span>
					</a>
				</li>
			</ul><!-- .et-pb-options-tabs-links -->
			<div class="et-pb-ab-view-stats-content has-data">
				%7$s
			</div>
			<div class="et-pb-ab-view-stats-content no-data">
				<span class="icon">
					<object type="image/svg+xml" data="%8$s/images/stats-no-data.svg"></object>
				</span>
				<h2>%9$s</h2>
				<p>%10$s</p>
			</div>
			<div class="et_pb_prompt_buttons">
				<input type="submit" class="et_pb_prompt_proceed" value="%14$s">
			</div>
		</script>', esc_html__('Split Testing Statistics', 'et_builder'), esc_html__('Clicks', 'et_builder'), esc_html__('Reads', 'et_builder'), esc_html__('Bounces', 'et_builder'), esc_html__('Goal Engagement', 'et_builder'), esc_html__('Conversions', 'et_builder'), $view_stats_tabs, esc_url(ET_BUILDER_URI), esc_html__('Statistics are being collected', 'et_builder'), esc_html__('Stats will be displayed upon sufficient data collection', 'et_builder'), esc_attr__('Refresh Stats', 'et_builder'), esc_html__('Refresh Stats', 'et_builder'), esc_html__('Shortcode Conversions', 'et_builder'), esc_attr__('End Split Test &amp; Pick Winner', 'et_builder'));
    // "Add Specialty Section" Button Template
    printf('<script type="text/template" id="et-builder-add-specialty-section-button">
			<a href="#" class="et-pb-section-add-specialty et-pb-add-specialty-template" data-is_template="true">%1$s</a>
		</script>', esc_html__('Add Specialty Section', 'et_builder'));
    // Saved Entry Template
    echo '<script type="text/template" id="et-builder-saved-entry">
			<a class="et_pb_saved_entry_item"><%= title %></a>
		</script>';
    // Font Icons Template
    printf('<script type="text/template" id="et-builder-google-fonts-options-items">
			%1$s
		</script>', et_builder_get_font_options_items());
    // Font Icons Template
    printf('<script type="text/template" id="et-builder-font-icon-list-items">
			%1$s
		</script>', et_pb_get_font_icon_list_items());
    // Histories Visualizer Item Template
    printf('<script type="text/template" id="et-builder-histories-visualizer-item-template">
			<li id="et-pb-history-<%%= this.options.get( "timestamp" ) %%>" class="<%%= this.options.get( "current_active_history" ) ? "active" : "undo"  %%>" data-timestamp="<%%= this.options.get( "timestamp" )  %%>">
				<span class="datetime"><%%= this.options.get( "datetime" )  %%></span>
				<span class="verb"> <%%= this.getVerb()  %%></span>
				<span class="noun"> <%%= this.getNoun()  %%></span>
				<%% if ( typeof this.getAddition === "function" && "" !== this.getAddition() ) { %%>
					<span class="addition"> <%%= this.getAddition() %%></span>
				<%% } %%>
			</li>
		</script>');
    // Font Down Icons Template
    printf('<script type="text/template" id="et-builder-font-down-icon-list-items">
			%1$s
		</script>', et_pb_get_font_down_icon_list_items());
    printf('<script type="text/template" id="et-builder-preview-icons-template">
			<ul class="et-pb-preview-screensize-switcher">
				<li><a href="#" class="et-pb-preview-mobile" data-width="375"><span class="label">%1$s</span></a></li>
				<li><a href="#" class="et-pb-preview-tablet" data-width="768"><span class="label">%2$s</span></a></li>
				<li><a href="#" class="et-pb-preview-desktop active"><span class="label">%3$s</span></a></li>
			</ul>
		</script>', esc_html__('Mobile', 'et_builder'), esc_html__('Tablet', 'et_builder'), esc_html__('Desktop', 'et_builder'));
    printf('<script type="text/template" id="et-builder-options-tabs-links-template">
			<ul class="et-pb-options-tabs-links">
				<%% _.each(this.et_builder_template_options.tabs.options, function(tab, index) { %%>
					<li class="et_pb_options_tab_<%%= tab.slug %%><%%= \'1\' === index ? \' et-pb-options-tabs-links-active\' : \'\' %%>">
						<a href="#"><%%= tab.label %%></a>
					</li>
				<%% }); %%>
			</ul>
		</script>');
    printf('<script type="text/template" id="et-builder-mobile-options-tabs-template">
			<div class="et_pb_mobile_settings_tabs">
				<a href="#" class="et_pb_mobile_settings_tab et_pb_mobile_settings_active_tab" data-settings_tab="desktop">
					%1$s
				</a>
				<a href="#" class="et_pb_mobile_settings_tab" data-settings_tab="tablet">
					%2$s
				</a>
				<a href="#" class="et_pb_mobile_settings_tab" data-settings_tab="phone">
					%3$s
				</a>
			</div>
		</script>', esc_html__('Desktop', 'et_builder'), esc_html__('Tablet', 'et_builder'), esc_html__('Smartphone', 'et_builder'));
    printf('<script type="text/template" id="et-builder-padding-inputs-template">
			<label>
				<%%= this.et_builder_template_options.padding.options.label %%>
				<input type="text" class="et_custom_margin et_custom_margin_<%%= this.et_builder_template_options.padding.options.side %%><%%= this.et_builder_template_options.padding.options.class %%><%%= \'need_mobile\' === this.et_builder_template_options.padding.options.need_mobile ? \' et_pb_setting_mobile et_pb_setting_mobile_desktop et_pb_setting_mobile_active\' : \'\' %%>"<%%= \'need_mobile\' === this.et_builder_template_options.padding.options.need_mobile ? \' data-device="desktop"\' : \'\' %%> />
				<%% if ( \'need_mobile\' === this.et_builder_template_options.padding.options.need_mobile ) { %%>
					<input type="text" class="et_custom_margin et_pb_setting_mobile et_pb_setting_mobile_tablet et_custom_margin_<%%= this.et_builder_template_options.padding.options.side %%><%%= this.et_builder_template_options.padding.options.class %%>" data-device="tablet" />
					<input type="text" class="et_custom_margin et_pb_setting_mobile et_pb_setting_mobile_phone et_custom_margin_<%%= this.et_builder_template_options.padding.options.side %%><%%= this.et_builder_template_options.padding.options.class %%>" data-device="phone" />
				<%% } %%>
			</label>
		</script>');
    printf('<script type="text/template" id="et-builder-yes-no-button-template">
			<div class="et_pb_yes_no_button et_pb_off_state">
				<span class="et_pb_value_text et_pb_on_value"><%%= this.et_builder_template_options.yes_no_button.options.on %%></span>
				<span class="et_pb_button_slider"></span>
				<span class="et_pb_value_text et_pb_off_value"><%%= this.et_builder_template_options.yes_no_button.options.off %%></span>
			</div>
		</script>');
    printf('<script type="text/template" id="et-builder-font-buttons-option-template">
			<%% _.each(this.et_builder_template_options.font_buttons.options, function(font_button) { %%>
				<div class="et_builder_<%%= font_button %%>_font et_builder_font_style mce-widget mce-btn">
					<button type="button">
						<i class="mce-ico mce-i-<%%= font_button %%>"></i>
					</button>
				</div>
			<%% }); %%>
		</script>');
    printf('<script type="text/template" id="et-builder-failure-notice-template">
			%1$s
		</script>', et_builder_get_failure_notification_modal());
    printf('<script type="text/template" id="et-builder-cache-notice-template">
			%1$s
		</script>', et_builder_get_cache_notification_modal());
    do_action('et_pb_after_page_builder');
}