function et_pb_check_options_access() { // display wp error screen if theme customizer disabled for current user if (!et_pb_is_allowed('theme_options')) { wp_die(__("you don't have sufficient permissions to access this page", 'extra')); } }
/** * Register portability. * * This function should be called in an 'admin_init' action callback. * * @since 1.0.0 * * @param string $context A unique ID used to register the portability arguments. * * @param array $args { * Array of arguments used to register the portability. * * @type string $name The name used in the various text string. * @type bool $view Whether the assets and content should load or not. * Example: `isset( $_GET['page'] ) && $_GET['page'] == 'example'`. * @type string $db The option_name from the wp_option table used to export and import data. * @type array $include Optional. Array of all the options scritcly included. Options ids must be set * as the array keys. * @type array $exclude Optional. Array of excluded options. Options ids must be set as the array keys. * } * @return bool. */ function et_core_portability_register($context, $args) { $defaults = array('context' => $context, 'name' => false, 'view' => false, 'type' => false, 'target' => false, 'include' => array(), 'exclude' => array()); $data = apply_filters("et_core_portability_args_{$context}", (object) array_merge($defaults, (array) $args)); et_core_cache_set($context, $data, 'et_core_portability'); // Stop here if not allowed. if (function_exists('et_pb_is_allowed') && !et_pb_is_allowed(array('portability', "{$data->context}_portability"))) { // Set view to false if not allowed. $data->view = false; et_core_cache_set($context, $data, 'et_core_portability'); return; } if ($data->view) { et_core_portability_load($context); } }
function et_fb_backend_helpers() { global $post, $paged; $layout_type = ''; $post_type = isset($post->post_type) ? $post->post_type : false; $post_id = isset($post->ID) ? $post->ID : false; $post_status = isset($post->post_status) ? $post->post_status : false; if ('et_pb_layout' === $post_type) { $layout_type = et_fb_get_layout_type($post_id); } $google_fonts = array_merge(array('Default' => array()), et_builder_get_google_fonts()); $current_user = wp_get_current_user(); $current_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $export_url = add_query_arg(array('et_core_portability' => true, 'context' => 'et_builder', 'name' => 'temp_name', 'nonce' => wp_create_nonce('et_core_portability_nonce')), admin_url()); $fb_modules_array = apply_filters('et_fb_modules_array', ET_Builder_Element::get_modules_array($post_type, true, true)); $helpers = array('debug' => true, 'postId' => $post_id, 'postStatus' => $post_status, 'postType' => $post_type, 'layoutType' => $layout_type, 'publishCapability' => is_page() && !current_user_can('publish_pages') || !is_page() && !current_user_can('publish_posts') ? 'no_publish' : 'publish', 'shortcodeObject' => array(), 'ajaxUrl' => admin_url('admin-ajax.php'), 'tinymceSkinUrl' => ET_FB_ASSETS_URI . '/vendors/tinymce-skin', 'tinymceCSSFiles' => esc_url(includes_url('js/tinymce') . '/skins/wordpress/wp-content.css'), 'images_uri' => ET_BUILDER_URI . '/images', 'generalFields' => array(), 'advancedFields' => array(), 'customCssFields' => array(), 'moduleParentShortcodes' => ET_Builder_Element::get_parent_shortcodes($post_type), 'moduleChildShortcodes' => ET_Builder_Element::get_child_shortcodes($post_type), 'moduleChildSlugs' => ET_Builder_Element::get_child_slugs($post_type), 'moduleRawContentShortcodes' => ET_Builder_Element::get_raw_content_shortcodes($post_type), 'modules' => $fb_modules_array, 'modulesCount' => count($fb_modules_array), 'modulesWithChildren' => ET_Builder_Element::get_shortcodes_with_children($post_type), 'structureModules' => ET_Builder_Element::get_structure_modules($post_type), 'et_builder_css_media_queries' => ET_Builder_Element::get_media_quries('for_js'), 'commentsModuleMarkup' => et_fb_get_comments_markup(), 'shortcode_tags' => et_fb_shortcode_tags(), 'getFontIconSymbols' => et_pb_get_font_icon_symbols(), 'failureNotification' => et_builder_get_failure_notification_modal(), 'exitNotification' => et_builder_get_exit_notification_modal(), 'getTaxonomies' => apply_filters('et_fb_taxonomies', array('category' => get_categories(), 'project_category' => get_categories(array('taxonomy' => 'project_category')), 'product_category' => class_exists('WooCommerce') ? get_terms('product_cat') : '')), 'googleAPIKey' => et_pb_is_allowed('theme_options') ? get_option('et_google_api_settings') : '', 'googleFontsList' => array_keys($google_fonts), 'googleFonts' => $google_fonts, 'gutterWidth' => et_get_option('gutter_width', 3), 'fontIcons' => et_pb_get_font_icon_symbols(), 'fontIconsDown' => et_pb_get_font_down_icon_symbols(), 'widgetAreas' => et_builder_get_widget_areas_list(), 'site_url' => get_site_url(), 'etBuilderAccentColor' => et_builder_accent_color(), 'gmt_offset_string' => et_pb_get_gmt_offset_string(), 'et_builder_fonts_data' => et_builder_get_fonts(), 'currentUserDisplayName' => $current_user->display_name, 'locale' => get_locale(), 'roleSettings' => et_pb_get_role_settings(), 'currentRole' => et_pb_get_current_user_role(), 'exportUrl' => $export_url, 'urls' => array('loginFormUrl' => esc_url(site_url('wp-login.php', 'login_post')), 'forgotPasswordUrl' => esc_url(wp_lostpassword_url()), 'logoutUrl' => esc_url(wp_logout_url()), 'logoutUrlRedirect' => esc_url(wp_logout_url($current_url)), 'themeOptionsUrl' => esc_url(et_pb_get_options_page_link()), 'builderPreviewStyle' => ET_BUILDER_URI . '/styles/preview.css'), 'nonces' => array('moduleContactFormSubmit' => wp_create_nonce('et-pb-contact-form-submit'), 'et_admin_load' => wp_create_nonce('et_admin_load_nonce'), 'computedProperty' => wp_create_nonce('et_pb_process_computed_property_nonce'), 'renderShortcode' => wp_create_nonce('et_pb_render_shortcode_nonce'), 'backendHelper' => wp_create_nonce('et_fb_backend_helper_nonce'), 'renderSave' => wp_create_nonce('et_fb_save_nonce'), 'prepareShortcode' => wp_create_nonce('et_fb_prepare_shortcode_nonce'), 'processImportedData' => wp_create_nonce('et_fb_process_imported_data_nonce'), 'retrieveLibraryModules' => wp_create_nonce('et_fb_retrieve_library_modules_nonce'), 'saveLibraryModules' => wp_create_nonce('et_fb_save_library_modules_nonce'), 'preview' => wp_create_nonce('et_pb_preview_nonce')), 'conditionalTags' => et_fb_conditional_tag_params(), 'currentPage' => et_fb_current_page_params(), 'appPreferences' => et_fb_app_preferences(), 'classNames' => array('hide_on_mobile_class' => 'et-hide-mobile'), 'columnLayouts' => et_builder_get_columns(), 'pageSettingsFields' => et_pb_get_builder_settings_configurations(), 'pageSettingsValues' => et_pb_get_builder_settings_values(), 'splitTestSubjects' => false !== ($all_subjects_raw = get_post_meta($post_id, '_et_pb_ab_subjects', true)) ? explode(',', $all_subjects_raw) : array(), 'defaults' => array('contactFormInputs' => et_fb_process_shortcode(sprintf('[et_pb_contact_field field_title="%1$s" field_type="input" field_id="Name" required_mark="on" fullwidth_field="off" /][et_pb_contact_field field_title="%2$s" field_type="email" field_id="Email" required_mark="on" fullwidth_field="off" /][et_pb_contact_field field_title="%3$s" field_type="text" field_id="Message" required_mark="on" fullwidth_field="on" /]', esc_attr__('Name', 'et_builder'), esc_attr__('Email Address', 'et_builder'), esc_attr__('Message', 'et_builder')))), 'all_modules_default_attrs' => ET_Builder_Element::get_all_modules_default_fields($post_type), 'saveModuleLibraryCategories' => et_fb_prepare_library_cats(), 'columnSettingFields' => array('advanced' => array('bg_img_%s' => array('label' => esc_html__('Column %s Background Image', 'et_builder'), 'type' => 'upload', 'option_category' => 'basic_option', 'upload_button_text' => esc_attr__('Upload an image', 'et_builder'), 'choose_text' => esc_attr__('Choose a Background Image', 'et_builder'), 'update_text' => esc_attr__('Set As Background', 'et_builder'), 'description' => esc_html__('If defined, this image will be used as the background for this module. To remove a background image, simply delete the URL from the settings field.', 'et_builder'), 'tab_slug' => 'advanced'), 'parallax_%s' => array('label' => esc_html__('Column %s Parallax Effect', 'et_builder'), 'type' => 'yes_no_button', 'option_category' => 'configuration', 'options' => array('on' => esc_html__('Yes', 'et_builder'), 'off' => esc_html__('No', 'et_builder')), 'affects' => array('parallax_method_%s'), 'description' => esc_html__('Here you can choose whether or not use parallax effect for the featured image', 'et_builder'), 'tab_slug' => 'advanced'), 'parallax_method_%s' => array('label' => esc_html__('Column %s Parallax Method', 'et_builder'), 'type' => 'select', 'option_category' => 'configuration', 'options' => array('off' => esc_html__('CSS', 'et_builder'), 'on' => esc_html__('True Parallax', 'et_builder')), 'depends_show_if' => 'on', 'depends_to' => array('parallax_%s'), 'description' => esc_html__('Here you can choose which parallax method to use for the featured image', 'et_builder'), 'tab_slug' => 'advanced'), 'background_color_%s' => array('label' => esc_html__('Column %s Background Color', 'et_builder'), 'type' => 'color-alpha', 'custom_color' => true, 'tab_slug' => 'advanced'), 'padding_%s' => array('label' => esc_html__('Column %s Custom Padding', 'et_builder'), 'type' => 'custom_padding', 'mobile_options' => true, 'option_category' => 'layout', 'description' => esc_html__('Adjust padding to specific values, or leave blank to use the default padding.', 'et_builder'), 'tab_slug' => 'advanced')), 'css' => array('module_id_%s' => array('label' => esc_html__('Column %s CSS ID', 'et_builder'), 'type' => 'text', 'option_category' => 'configuration', 'tab_slug' => 'custom_css', 'option_class' => 'et_pb_custom_css_regular'), 'module_class_%s' => array('label' => esc_html__('Column %s CSS Class', 'et_builder'), 'type' => 'text', 'option_category' => 'configuration', 'tab_slug' => 'custom_css', 'option_class' => 'et_pb_custom_css_regular'), 'custom_css_before_%s' => array('label' => esc_html__('Column %s before', 'et_builder'), 'no_space_before_selector' => true, 'selector' => ':before'), 'custom_css_main_%s' => array('label' => esc_html__('Column %s Main Element', 'et_builder')), 'custom_css_after_%s' => array('label' => esc_html__('Column %s After', 'et_builder'), 'no_space_before_selector' => true, 'selector' => ':after')))); // Internationalization. $helpers['i18n'] = array('modules' => array('audio' => array('meta' => _x('by <strong>%1$s</strong>', 'Audio Module meta information', 'et_builder')), 'contactForm' => array('thankYou' => esc_html__('Thanks for contacting us', 'et_builder'), 'submit' => esc_attr__('Submit', 'et_builder')), 'countdownTimer' => array('dayFull' => esc_html__('Day(s)', 'et_builder'), 'dayShort' => esc_html__('Day', 'et_builder'), 'hourFull' => esc_html__('Hour(s)', 'et_builder'), 'hourShort' => esc_html__('Hrs', 'et_builder'), 'minuteFull' => esc_html__('Minute(s)', 'et_builder'), 'minuteShort' => esc_html__('Min', 'et_builder'), 'secondFull' => esc_html__('Second(s)', 'et_builder'), 'secondShort' => esc_html__('Sec', 'et_builder')), 'signup' => array('emailAddress' => esc_attr__('Email Address', 'et_builder'), 'firstName' => esc_attr__('First Name', 'et_builder'), 'lastName' => esc_attr__('Last Name', 'et_builder'), 'name' => esc_attr__('Name', 'et_builder'), 'email' => esc_attr__('Email', 'et_builder')), 'filterablePortfolio' => array('all' => esc_html__('All', 'et_builder')), 'login' => array('loginAs' => sprintf(esc_html__('Login as %s', 'et_builder'), $current_user->display_name), 'login' => esc_html__('Login', 'et_builder'), 'logout' => esc_html__('Log out', 'et_builder'), 'forgotPassword' => esc_html__('Forgot your password?', 'et_builder'), 'username' => esc_html__('Username', 'et_builder'), 'password' => esc_html__('Password', 'et_builder')), 'search' => array('submitButtonText' => esc_html__('Search', 'et_builder'), 'searchfor' => esc_html__('Search for:', 'et_builder')), 'fullwidthPostSlider' => array('by' => esc_html('by ', 'et_builder'))), 'saveButtonText' => esc_attr__('Save', 'et_builder'), 'saveDraftButtonText' => esc_attr__('Save Draft', 'et_builder'), 'publishButtonText' => is_page() && !current_user_can('publish_pages') || !is_page() && !current_user_can('publish_posts') ? esc_attr__('Submit', 'et_builder') : esc_attr__('Publish', 'et_builder'), 'controls' => array('tinymce' => array('visual' => esc_html__('Visual', 'et_builder'), 'text' => esc_html__('Text', 'et_builder')), 'moduleItem' => array('addNew' => esc_html__('Add New Item', 'et_builder')), 'upload' => array('buttonText' => esc_html__('Upload', 'et_builder')), 'insertMedia' => array('buttonText' => esc_html__('Add Media', 'et_builder'), 'modalTitleText' => esc_html__('Insert Media', 'et_builder')), 'inputMargin' => array('top' => esc_html__('Top', 'et_builder'), 'right' => esc_html__('Right', 'et_builder'), 'bottom' => esc_html__('Bottom', 'et_builder'), 'left' => esc_html__('Left', 'et_builder')), 'colorpicker' => array('clear' => esc_html__('Clear', 'et_builder')), 'uploadGallery' => array('uploadButtonText' => esc_html__('Update Gallery', 'et_builder')), 'centerMap' => array('updateMapButtonText' => esc_html__('Find', 'et_builder'), 'geoCodeError' => esc_html__('Geocode was not successful for the following reason', 'et_builder'), 'geoCodeError_2' => esc_html__('Geocoder failed due to', 'et_builder'), 'noResults' => esc_html__('No results found', 'et_builder'), 'mapPinAddressInvalid' => esc_html__('Invalid Pin and address data. Please try again.', 'et_builder')), 'tabs' => array('general' => esc_html__('General', 'et_builder'), 'design' => esc_html__('Design', 'et_builder'), 'css' => esc_html__('CSS', 'et_builder')), 'additionalButton' => array('changeApiKey' => esc_html__('Change API Key', 'et_builder'), 'generateImageUrlFromVideo' => esc_html__('Generate From Video', 'et_builder'))), 'rightClickMenuItems' => array('undo' => esc_html__('Undo', 'et_builder'), 'redo' => esc_html__('Redo', 'et_builder'), 'lock' => esc_html__('Lock', 'et_builder'), 'unlock' => esc_html__('Unlock', 'et_builder'), 'copy' => esc_html__('Copy', 'et_builder'), 'paste' => esc_html__('Paste', 'et_builder'), 'copyStyle' => esc_html__('Copy Style', 'et_builder'), 'pasteStyle' => esc_html__('Paste Style', 'et_builder'), 'disable' => esc_html__('Disable', 'et_builder'), 'enable' => esc_html__('Enable', 'et_builder'), 'save' => esc_html__('Save to Library', 'et_builder'), 'moduleType' => array('module' => esc_html__('Module', 'et_builder'), 'row' => esc_html__('Row', 'et_builder'), 'section' => esc_html__('Section', 'et_builder')), 'disableGlobal' => esc_html__('Disable Global', 'et_builder')), 'tooltips' => array('insertModule' => esc_html__('Insert Module', 'et_builder'), 'insertColumn' => esc_html__('Insert Columns', 'et_builder'), 'insertSection' => esc_html__('Insert Section', 'et_builder'), 'insertRow' => esc_html__('Insert Row', 'et_builder'), 'newModule' => esc_html__('New Module', 'et_builder'), 'newRow' => esc_html__('New Row', 'et_builder'), 'newSection' => esc_html__('New Section', 'et_builder'), 'addFromLibrary' => esc_html__('Add From Library', 'et_builder'), 'addToLibrary' => esc_html__('Add to Library', 'et_builder'), 'loading' => esc_html__('loading...', 'et_builder'), 'regular' => esc_html__('Regular', 'et_builder'), 'fullwidth' => esc_html__('Fullwidth', 'et_builder'), 'specialty' => esc_html__('Specialty', 'et_builder'), 'changeRow' => esc_html__('Choose Layout', 'et_builder'), 'clearLayout' => esc_html__('Clear Layout', 'et_builder'), 'clearLayoutText' => esc_html__('All of your current page content will be lost. Do you wish to proceed?', 'et_builder'), 'yes' => esc_html__('Yes', 'et_builder'), 'loadLayout' => esc_html__('Load From Library', 'et_builder'), 'predefinedLayout' => esc_html__('Predefined Layouts', 'et_builder'), 'replaceLayout' => esc_html__('Replace existing content.', 'et_builder'), 'search' => esc_html__('Search', 'et_builder') . '...', 'portability' => esc_html__('Portability', 'et_builder'), 'export' => esc_html__('Export', 'et_builder'), 'import' => esc_html__('Import', 'et_builder'), 'exportText' => esc_html__('Exporting your Divi Builder Layout will create a JSON file that can be imported into a different website.', 'et_builder'), 'exportName' => esc_html__('Export File Name', 'et_builder'), 'exportButton' => esc_html__('Export Divi Builder Layout', 'et_builder'), 'importText' => esc_html__('Importing a previously-exported Divi Builder Layout file will overwrite all content currently on this page.', 'et_builder'), 'importField' => esc_html__('Select File To Import', 'et_builder'), 'importBackUp' => esc_html__('Download backup before importing', 'et_builder'), 'importButton' => esc_html__('Import Divi Builder Layout', 'et_builder'), 'noFile' => esc_html__('No File Selected', 'et_builder'), 'chooseFile' => esc_html__('Choose File', 'et_builder')), 'saveModuleLibraryAttrs' => array('general' => esc_html__('Include General Settings', 'et_builder'), 'advanced' => esc_html__('Include Advanced Design Settings', 'et_builder'), 'css' => esc_html__('Include Custom CSS', 'et_builder'), 'selectCategoriesText' => esc_html__('Select category(ies) for new template or type a new name ( optional )', 'et_builder'), 'templateName' => esc_html__('Template Name', 'et_builder'), 'selectiveSync' => esc_html__('Selective Sync', 'et_builder'), 'selectiveError' => esc_html__('Please select at least 1 tab to save', 'et_builder'), 'globalTitle' => esc_html__('Save as Global', 'et_builder'), 'globalText' => esc_html__('Make this a global item', 'et_builder'), 'createCatText' => esc_html__('Create New Category', 'et_builder'), 'addToCatText' => esc_html__('Add To Categories', 'et_builder'), 'descriptionText' => esc_html__('Here you can add the current item to your Divi Library for later use.', 'et_builder'), 'descriptionTextLayout' => esc_html__('Save your current page to the Divi Library for later use.', 'et_builder'), 'saveText' => esc_html__('Save to Library', 'et_builder'), 'allCategoriesText' => esc_html__('All Categories', 'et_builder')), 'modals' => array('tabItemTitles' => array('general' => esc_html__('General', 'et_builder'), 'design' => esc_html__('Design', 'et_builder'), 'css' => esc_html__('CSS', 'et_builder')), 'pageSettings' => array('title' => esc_html__('Page Settings', 'et_builder'))), 'history' => array('modal' => array('title' => esc_html__('Editing History', 'et_builder'), 'tabs' => array('states' => esc_html__('History States', 'et_builder'))), 'meta' => et_pb_history_localization()), 'help' => array('modal' => array('title' => esc_html__('Divi Builder Helper', 'et_builder'), 'tabs' => array('shortcut' => esc_html__('Shortcuts', 'et_builder'))), 'shortcuts' => array('page_title' => esc_html__('Page Shortcuts', 'et_builder'), 'page' => array('undo' => array('kbd' => array('super', 'z'), 'desc' => esc_html__('Undo', 'et_builder')), 'redo' => array('kbd' => array('super', 'y'), 'desc' => esc_html__('Redo', 'et_builder')), 'save' => array('kbd' => array('super', 's'), 'desc' => esc_html__('Save Page', 'et_builder')), 'save_as_draft' => array('kbd' => array('super', 'shift', 's'), 'desc' => esc_html__('Save Page As Draft', 'et_builder')), 'exit' => array('kbd' => array('super', 'e'), 'desc' => esc_html__('Exit Visual Builder', 'et_builder')), 'exit_to_backend_builder' => array('kbd' => array('super', 'shift', 'e'), 'desc' => esc_html__('Exit To Backend Builder', 'et_builder')), 'toggle_settings_bar' => array('kbd' => array('t'), 'desc' => esc_html__('Toggle Settings Bar', 'et_builder')), 'open_page_settings' => array('kbd' => array('o'), 'desc' => esc_html__('Open Page Settings', 'et_builder')), 'open_history' => array('kbd' => array('h'), 'desc' => esc_html__('Open History Window', 'et_builder')), 'open_portability' => array('kbd' => array('p'), 'desc' => esc_html__('Open Portability Window', 'et_builder')), 'zoom_in' => array('kbd' => array('super', '+'), 'desc' => esc_html__('Responsive Zoom In', 'et_builder')), 'zoom_out' => array('kbd' => array('super', '-'), 'desc' => esc_html__('Responsive Zoom Out', 'et_builder')), 'help' => array('kbd' => array('?'), 'desc' => esc_html__('List All Shortcuts', 'et_builder'))), 'inline_title' => esc_html__('Inline Editor Shortcuts', 'et_builder'), 'inline' => array('escape' => array('kbd' => array('esc'), 'desc' => esc_html__('Exit Inline Editor', 'et_builder'))), 'module_title' => esc_html__('Module Shortcuts', 'et_builder'), 'module' => array('module_copy' => array('kbd' => array('super', 'c'), 'desc' => esc_html__('Copy Module', 'et_builder')), 'module_cut' => array('kbd' => array('super', 'x'), 'desc' => esc_html__('Cut Module', 'et_builder')), 'module_paste' => array('kbd' => array('super', 'v'), 'desc' => esc_html__('Paste Module', 'et_builder')), 'module_copy_styles' => array('kbd' => array('super', 'alt', 'c'), 'desc' => esc_html__('Copy Module Styles', 'et_builder')), 'module_paste_styles' => array('kbd' => array('super', 'alt', 'v'), 'desc' => esc_html__('Paste Module Styles', 'et_builder')), 'module_lock' => array('kbd' => array('l'), 'desc' => esc_html__('Lock Module', 'et_builder')), 'module_disable' => array('kbd' => array('d'), 'desc' => esc_html__('Disable Module', 'et_builder')), 'drag_auto_copy' => array('kbd' => array('alt', 'module move'), 'desc' => esc_html__('Move and copy module into dropped location', 'et_builder')), 'column_change_structure' => array('kbd' => array('c', array('1', '2', '3', '4')), 'desc' => esc_html__('Change Column Structure', 'et_builder')), 'row_make_fullwidth' => array('kbd' => array('r', 'f'), 'desc' => esc_html__('Make Row Fullwidth', 'et_builder')), 'row_edit_gutter' => array('kbd' => array('g', array('1', '2', '3', '4')), 'desc' => esc_html__('Change Gutter Width', 'et_builder')), 'add_new_row' => array('kbd' => array('r', array('1', '2', '3', '4')), 'desc' => esc_html__('Add New Row', 'et_builder')), 'add_new_section' => array('kbd' => array('s', array('1', '2', '3')), 'desc' => esc_html__('Add New Section', 'et_builder')), 'resize_padding_auto_opposite' => array('kbd' => array('shift', 'Drag Padding'), 'desc' => esc_html__('Restrict padding to 10px increments', 'et_builder')), 'resize_padding_limited' => array('kbd' => array('alt', 'Drag Padding'), 'desc' => esc_html__('Padding limited to opposing value', 'et_builder')), 'resize_padding_10' => array('kbd' => array('shift', 'alt', 'Drag Padding'), 'desc' => esc_html__('Mirror padding on both sides', 'et_builder')), 'increase_padding_row' => array('kbd' => array('r', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Increase Row Padding', 'et_builder')), 'decrease_padding_row' => array('kbd' => array('r', 'alt', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Decrease Row Padding', 'et_builder')), 'increase_padding_section' => array('kbd' => array('s', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Increase Section Padding', 'et_builder')), 'decrease_padding_section' => array('kbd' => array('s', 'alt', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Decrease Section Padding', 'et_builder')), 'increase_padding_row_10' => array('kbd' => array('r', 'shift', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Increase Row Padding By 10px', 'et_builder')), 'decrease_padding_row_10' => array('kbd' => array('r', 'alt', 'shift', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Decrease Row Padding By 10px', 'et_builder')), 'increase_padding_section_10' => array('kbd' => array('s', 'shift', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Increase Section Padding By 10px', 'et_builder')), 'decrease_padding_section_10' => array('kbd' => array('s', 'alt', 'shift', array('left', 'right', 'up', 'down')), 'desc' => esc_html__('Decrease Section Padding By 10px', 'et_builder'))), 'modal_title' => esc_html__('Modal Shortcuts', 'et_builder'), 'modal' => array('escape' => array('kbd' => array('esc'), 'desc' => esc_html__('Close Modal', 'et_builder')), 'save_changes' => array('kbd' => array('enter'), 'desc' => esc_html__('Save Changes', 'et_builder')), 'undo' => array('kbd' => array('super', 'z'), 'desc' => esc_html__('Undo', 'et_builder')), 'redo' => array('kbd' => array('super', 'shift', 'z'), 'desc' => esc_html__('Redo', 'et_builder')), 'switch_tabs' => array('kbd' => array('shift', 'tab'), 'desc' => esc_html__('Switch Tabs', 'et_builder')), 'toggle_expand' => array('kbd' => array('super', 'enter'), 'desc' => esc_html__('Expand Modal Fullscreen', 'et_builder')), 'toggle_snap' => array('kbd' => array('super', array('left', 'right')), 'desc' => esc_html__('Snap Modal Left / Right', 'et_builder'))))), 'sortable' => array('has_no_ab_permission' => esc_html__('You do not have permission to edit the module, row or section in this split test.', 'et_builder'), 'cannot_move_goal_into_subject' => esc_html__('A split testing goal cannot be moved inside of a split testing subject. To perform this action you must first end your split test.', 'et_builder'), 'cannot_move_subject_into_goal' => esc_html__('A split testing subject cannot be moved inside of a split testing goal. To perform this action you must first end your split test.', 'et_builder'), 'cannot_move_row_goal_out_from_subject' => esc_html__('Once set, a goal that has been placed inside a split testing subject cannot be moved outside the split testing subject. You can end your split test and start a new one if you would like to make this change.', 'et_builder'), 'section_only_row_dragged_away' => esc_html__('The section should have at least one row.', 'et_builder'), 'global_module_alert' => esc_html__('You cannot add global modules into global sections or rows', 'et_builder'), 'cannot_move_module_goal_out_from_subject' => esc_html__('Once set, a goal that has been placed inside a split testing subject cannot be moved outside the split testing subject. You can end your split test and start a new one if you would like to make this change.', 'et_builder'), 'stop_dropping_3_col_row' => esc_html__('3 column row can\'t be used in this column.', 'et_builder')), 'tooltip' => array('pageSettingsBar' => array('responsive' => array('zoom' => esc_html__('Zoom Out', 'et_builder'), 'desktop' => esc_html__('Desktop View', 'et_builder'), 'tablet' => esc_html__('Tablet View', 'et_builder'), 'phone' => esc_html__('Phone View', 'et_builder')), 'main' => array('loadLibrary' => esc_html__('Load From Library', 'et_builder'), 'saveToLibrary' => esc_html__('Save To Library', 'et_builder'), 'clearLayout' => esc_html__('Clear Layout', 'et_builder'), 'pageSettingsModal' => esc_html__('Page Settings', 'et_builder'), 'history' => esc_html__('Editing History', 'et_builder'), 'portability' => esc_html__('Portability', 'et_builder'), 'open' => esc_html__('Expand Settings', 'et_builder'), 'close' => esc_html__('Collapse Settings', 'et_builder')), 'save' => array('saveDraft' => esc_html__('Save as Draft', 'et_builder'), 'save' => esc_html__('Save', 'et_builder'), 'publish' => esc_html__('Publish', 'et_builder'))), 'modal' => array('expandModal' => esc_html__('Expand Modal', 'et_builder'), 'contractModal' => esc_html__('Contract Modal', 'et_builder'), 'resize' => esc_html__('Resize Modal', 'et_builder'), 'snapModal' => esc_html__('Snap to Left', 'et_builder'), 'separateModal' => esc_html__('Separate Modal', 'et_builder'), 'redo' => esc_html__('Redo', 'et_builder'), 'undo' => esc_html__('Undo', 'et_builder'), 'cancel' => esc_html__('Discard All Changes', 'et_builder'), 'save' => esc_html__('Save Changes', 'et_builder')), 'inlineEditor' => array('back' => esc_html__('Go Back', 'et_builder'), 'increaseFontSize' => esc_html__('Decrease Font Size', 'et_builder'), 'decreaseFontSize' => esc_html__('Increase Font Size', 'et_builder'), 'bold' => esc_html__('Bold Text', 'et_builder'), 'italic' => esc_html__('Italic Text', 'et_builder'), 'underline' => esc_html__('Underline Text', 'et_builder'), 'link' => esc_html__('Insert Link', 'et_builder'), 'quote' => esc_html__('Insert Quote', 'et_builder'), 'alignment' => esc_html__('Text Alignment', 'et_builder'), 'centerText' => esc_html__('Center Text', 'et_builder'), 'rightText' => esc_html__('Right Text', 'et_builder'), 'leftText' => esc_html__('Left Text', 'et_builder'), 'justifyText' => esc_html__('Justify Text', 'et_builder'), 'list' => esc_html__('List Settings', 'et_builder'), 'indent' => esc_html__('Indent List', 'et_builder'), 'undent' => esc_html__('Undent List', 'et_builder'), 'orderedList' => esc_html__('Insert Ordered List', 'et_builder'), 'unOrderedList' => esc_html__('Insert Unordered List', 'et_builder'), 'text' => esc_html__('Text Settings', 'et_builder'), 'textColor' => esc_html__('Text Color', 'et_builder'), 'heading' => array('one' => esc_html__('Insert Heading One', 'et_builder'), 'two' => esc_html__('Insert Heading Two', 'et_builder'), 'three' => esc_html__('Insert Heading Three', 'et_builder'), 'four' => esc_html__('Insert Heading Four', 'et_builder'))), 'section' => array('tab' => array('move' => esc_html__('Move Section', 'et_builder'), 'settings' => esc_html__('Section Settings', 'et_builder'), 'duplicate' => esc_html__('Duplicate Section', 'et_builder'), 'addToLibrary' => esc_html__('Save Section To Library', 'et_builder'), 'delete' => esc_html__('Delete Section', 'et_builder')), 'addButton' => esc_html__('Add New Section', 'et_builder')), 'row' => array('tab' => array('move' => esc_html__('Move Row', 'et_builder'), 'settings' => esc_html__('Row Settings', 'et_builder'), 'duplicate' => esc_html__('Duplicate Row', 'et_builder'), 'addToLibrary' => esc_html__('Save Row To Library', 'et_builder'), 'delete' => esc_html__('Delete Row', 'et_builder'), 'update' => esc_html__('Change Column Structure', 'et_builder')), 'addButton' => esc_html__('Add New Row', 'et_builder')), 'module' => array('tab' => array('move' => esc_html__('Move Module', 'et_builder'), 'settings' => esc_html__('Module Settings', 'et_builder'), 'duplicate' => esc_html__('Duplicate Module', 'et_builder'), 'addToLibrary' => esc_html__('Save Module To Library', 'et_builder'), 'delete' => esc_html__('Delete Module', 'et_builder')), 'addButton' => esc_html__('Add New Module', 'et_builder'))), 'unsavedConfirmation' => esc_html__('Unsaved changes will be lost if you leave the Divi Builder at this time.', 'et_builder'), 'libraryLoadError' => esc_html__('Error loading Library items from server. Please refresh the page and try again.', 'et_builder')); // Pass helpers via localization. wp_localize_script('et-frontend-builder', 'ETBuilderBackend', $helpers); }
function et_fb_enabled() { if (defined('ET_FB_ENABLED')) { return ET_FB_ENABLED; } if (empty($_GET['et_fb'])) { return false; } if (is_customize_preview()) { return false; } if (!is_single() && !is_page()) { return false; } if (!et_fb_is_user_can_edit()) { return false; } if (!et_pb_is_allowed('use_visual_builder')) { return false; } return true; }
/** * * Adds js script which removes the top menu item from Divi menu if it's disabled * */ function et_pb_hide_options_menu() { // do nothing if plugin options should be displayed in the menu if (et_pb_is_allowed('theme_options')) { return; } wp_enqueue_script('et-builder-custom-admin-menu', ET_BUILDER_PLUGIN_URI . '/js/menu_fix.js', array('jquery'), $this->plugin_version, true); }
function wrap_settings($output) { $tabs_output = ''; $i = 0; $tabs = array(); // General Settings Tab should be added to all modules if allowed if (et_pb_is_allowed('general_settings')) { $tabs['general'] = isset($this->main_tabs['general']) ? $this->main_tabs['general'] : __('General Settings', 'et_builder'); } foreach ($this->used_tabs as $tab_slug) { if ('general' === $tab_slug) { continue; } // Add only tabs allowed for current user if (et_pb_is_allowed($tab_slug . '_settings')) { $tabs[$tab_slug] = $this->main_tabs[$tab_slug]; } } foreach ($tabs as $tab_slug => $tab_name) { $i++; $tabs_output .= sprintf('<li class="%2$s%3$s"> <a href="#">%1$s</a> </li>', esc_html($tab_name), esc_attr("et_pb_options_tab_{$tab_slug}"), 1 === $i ? ' et-pb-options-tabs-links-active' : ''); } $tabs_output = sprintf('<ul class="et-pb-options-tabs-links">%1$s</ul>', $tabs_output); $preview_tabs_output = sprintf('<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>', esc_html__('Mobile', 'et_builder'), esc_html__('Tablet', 'et_builder'), esc_html__('Desktop', 'et_builder')); $output = sprintf('%2$s %3$s <div class="et-pb-options-tabs"> %1$s </div> <!-- .et-pb-options-tabs --> <div class="et-pb-preview-tab"></div> <!-- .et-pb-preview-tab --> ', $output, $tabs_output, $preview_tabs_output); return sprintf('%2$s<div class="et-pb-main-settings">%1$s</div> <!-- .et-pb-main-settings -->%3$s', "\n\t\t" . $output, "\n\t\t", "\n"); }
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, """ ) %%></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, """ ) %%></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, """ ) %%></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'); }
/** * Returns array of builder settings' configuration * * @return array builder settings' configuration */ function et_pb_get_builder_settings_configurations() { $settings = array(); if (et_pb_is_allowed('ab_testing')) { $ab_testing_settings = array(array('type' => 'yes_or_no', 'id' => 'et_pb_enable_ab_testing', 'label' => esc_html__('Enable Split Testing', 'et_builder'), 'autoload' => false, 'class' => 'et-pb-visible', 'affects' => array('et_pb_ab_bounce_rate_limit', 'et_pb_ab_refresh_interval', 'et_pb_enable_shortcode_tracking')), array('type' => 'range', 'id' => 'et_pb_ab_bounce_rate_limit', 'label' => esc_html__('Bounce Rate Limit', 'et_builder'), 'default' => 5, 'step' => 1, 'min' => 3, 'max' => 60, 'depends_show_if' => 'on'), array('type' => 'select', 'id' => 'et_pb_ab_refresh_interval', 'label' => esc_html__('Stats refresh interval', 'et_builder'), 'autoload' => false, 'depends_show_if' => 'on', 'values' => array('hourly' => esc_html__('Hourly', 'et_builder'), 'daily' => esc_html__('Daily', 'et_builder'))), array('type' => 'yes_or_no', 'id' => 'et_pb_enable_shortcode_tracking', 'label' => esc_html__('Shortcode Tracking', 'et_builder'), 'depends_show_if' => 'on', 'affects' => array('et_pb_ab_current_shortcode')), array('type' => 'textarea', 'id' => 'et_pb_ab_current_shortcode', 'label' => esc_html__('Shortcode for Tracking:', 'et_builder'), 'autoload' => false, 'readonly' => 'readonly', 'depends_show_if' => 'on')); $settings = array_merge($settings, $ab_testing_settings); } $standard_settings = array(array('type' => 'textarea', 'id' => 'et_pb_custom_css', 'label' => esc_html__('Custom CSS', 'et_builder')), array('type' => 'colorpalette', 'id' => 'et_pb_color_palette', 'label' => esc_html__('Color Picker Color Pallete', 'et_builder'), 'default' => implode('|', et_pb_get_default_color_palette())), array('type' => 'range', 'id' => 'et_pb_gutter_width', 'label' => esc_html__('Gutter Width', 'et_builder'), 'step' => 1, 'min' => 1, 'max' => 4, 'default' => et_get_option('gutter_width', 3)), array('type' => 'colorpicker', 'id' => 'et_pb_light_text_color', 'label' => esc_html__('Light Text Color', 'et_builder'), 'default' => '#FFFFFF'), array('type' => 'colorpicker', 'id' => 'et_pb_dark_text_color', 'label' => esc_html__('Dark Text Color', 'et_builder'), 'default' => '#666666'), array('type' => 'colorpicker', 'id' => 'et_pb_content_area_background_color', 'label' => esc_html__('Content Area Background Color', 'et_builder')), array('type' => 'colorpicker', 'id' => 'et_pb_section_background_color', 'label' => esc_html__('Section Background Color', 'et_builder'), 'default' => '#FFFFFF')); $settings = array_merge($settings, $standard_settings); return apply_filters('et_pb_get_builder_settings_configurations', $settings); }
function wrap_settings($output) { $tabs_output = ''; $i = 0; $tabs = array(); // General Settings Tab should be added to all modules if allowed if (et_pb_is_allowed('general_settings')) { $tabs['general'] = isset($this->main_tabs['general']) ? $this->main_tabs['general'] : esc_html__('General Settings', 'et_builder'); } foreach ($this->used_tabs as $tab_slug) { if ('general' === $tab_slug) { continue; } // Add only tabs allowed for current user if (et_pb_is_allowed($tab_slug . '_settings')) { $tabs[$tab_slug] = $this->main_tabs[$tab_slug]; } } $tabs_array = array(); $tabs_json = ''; foreach ($tabs as $tab_slug => $tab_name) { $i++; $tabs_array[$i] = array('slug' => $tab_slug, 'label' => $tab_name); $tabs_json = json_encode($tabs_array); } $tabs_output = sprintf('<%%= window.et_builder.options_tabs_output(%1$s) %%>', $tabs_json); $preview_tabs_output = '<%= window.et_builder.preview_tabs_output() %>'; $output = sprintf('%2$s %3$s <div class="et-pb-options-tabs"> %1$s </div> <!-- .et-pb-options-tabs --> <div class="et-pb-preview-tab"></div> <!-- .et-pb-preview-tab --> ', $output, $tabs_output, $preview_tabs_output); return sprintf('%2$s<div class="et-pb-main-settings">%1$s</div> <!-- .et-pb-main-settings -->%3$s', "\n\t\t" . $output, "\n\t\t", "\n"); }
function et_fb_is_enabled($post_id = false) { if (!$post_id) { global $post; $post_id = isset($post->ID) ? $post->ID : false; } if (is_admin()) { return false; } if (is_customize_preview()) { return false; } if (!$post_id) { return false; } if (empty($_GET['et_fb'])) { return false; } if (!current_user_can('edit_posts')) { return false; } if (!et_pb_is_pagebuilder_used($post_id)) { return false; } if (!et_pb_is_allowed('use_visual_builder')) { return false; } return true; }
function et_pb_ab_clear_stats() { // Verify nonce if (isset($_POST['et_pb_ab_nonce']) && !wp_verify_nonce($_POST['et_pb_ab_nonce'], 'ab_testing_builder_nonce')) { die(-1); } // Verify user permission if (!current_user_can('edit_posts') || !et_pb_is_allowed('ab_testing')) { die(-1); } $test_id = intval($_POST['et_pb_test_id']); et_pb_ab_remove_stats($test_id); et_pb_ab_clear_cache_handler($test_id); die(1); }
function et_pb_get_saved_templates() { if (!wp_verify_nonce($_POST['et_admin_load_nonce'], 'et_admin_load_nonce')) { die(-1); } if (!current_user_can('edit_posts')) { die(-1); } $templates_data = array(); $layout_type = !empty($_POST['et_layout_type']) ? sanitize_text_field($_POST['et_layout_type']) : 'layout'; $module_width = !empty($_POST['et_module_width']) && 'module' === $layout_type ? sanitize_text_field($_POST['et_module_width']) : ''; $additional_condition = '' !== $module_width ? array('taxonomy' => 'module_width', 'field' => 'slug', 'terms' => $module_width) : ''; $is_global = !empty($_POST['et_is_global']) ? sanitize_text_field($_POST['et_is_global']) : 'false'; $global_operator = 'global' === $is_global ? 'IN' : 'NOT IN'; $meta_query = array(); $specialty_query = !empty($_POST['et_specialty_columns']) && 'row' === $layout_type ? sanitize_text_field($_POST['et_specialty_columns']) : '0'; if ('0' !== $specialty_query) { $columns_val = '3' === $specialty_query ? array('4_4', '1_2,1_2', '1_3,1_3,1_3') : array('4_4', '1_2,1_2'); $meta_query[] = array('key' => '_et_pb_row_layout', 'value' => $columns_val, 'compare' => 'IN'); } $post_type = !empty($_POST['et_post_type']) ? sanitize_text_field($_POST['et_post_type']) : 'post'; $post_type = apply_filters('et_pb_show_all_layouts_built_for_post_type', $post_type, $layout_type); $meta_query[] = array('key' => '_et_pb_built_for_post_type', 'value' => $post_type, 'compare' => 'IN'); $query = new WP_Query(array('tax_query' => array('relation' => 'AND', array('taxonomy' => 'layout_type', 'field' => 'slug', 'terms' => $layout_type), array('taxonomy' => 'scope', 'field' => 'slug', 'terms' => array('global'), 'operator' => $global_operator), $additional_condition), 'post_type' => ET_BUILDER_LAYOUT_POST_TYPE, 'posts_per_page' => '-1', 'meta_query' => $meta_query)); wp_reset_postdata(); if (!empty($query->posts)) { foreach ($query->posts as $single_post) { if ('module' === $layout_type) { $module_type = get_post_meta($single_post->ID, '_et_pb_module_type', true); } else { $module_type = ''; } // add only modules allowed for current user if ('' === $module_type || et_pb_is_allowed($module_type)) { $categories = wp_get_post_terms($single_post->ID, 'layout_category'); $categories_processed = array(); if (!empty($categories)) { foreach ($categories as $category_data) { $categories_processed[] = esc_html($category_data->slug); } } $templates_data[] = array('ID' => $single_post->ID, 'title' => esc_html($single_post->post_title), 'shortcode' => $single_post->post_content, 'is_global' => $is_global, 'layout_type' => $layout_type, 'module_type' => $module_type, 'categories' => $categories_processed); } } } if (empty($templates_data)) { $templates_data = array('error' => esc_html__('You have not saved any items to your Divi Library yet. Once an item has been saved to your library, it will appear here for easy use.', 'et_builder')); } $json_templates = json_encode($templates_data); die($json_templates); }
/** * Add "Use Visual Builder" link to WP-Admin bar * * @return void */ function et_fb_add_admin_bar_link() { if (!is_singular(et_builder_get_builder_post_types()) || !et_pb_is_allowed('use_visual_builder')) { return; } global $wp_admin_bar, $wp_the_query; $page_url = get_permalink(get_the_ID()); // Don't add the link, if Frontend Builder has been loaded already if (et_fb_is_enabled()) { $wp_admin_bar->add_menu(array('id' => 'et-disable-visual-builder', 'title' => esc_html__('Exit Visual Builder', 'et_builder'), 'href' => esc_url($page_url))); return; } $current_object = $wp_the_query->get_queried_object(); if (!current_user_can('edit_post', $current_object->ID)) { return; } $use_visual_builder_url = et_pb_is_pagebuilder_used(get_the_ID()) ? add_query_arg('et_fb', '1', et_fb_prepare_ssl_link($page_url)) : add_query_arg(array('et_fb_activation_nonce' => wp_create_nonce('et_fb_activation_nonce_' . get_the_ID())), $page_url); $wp_admin_bar->add_menu(array('id' => 'et-use-visual-builder', 'title' => esc_html__('Enable Visual Builder', 'et_builder'), 'href' => esc_url($use_visual_builder_url))); }
function extra_add_customizer_admin_menu() { if (!current_user_can('customize')) { return; } global $wp_admin_bar; $wp_admin_bar->remove_menu('customize'); $current_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $current_url = urlencode(esc_url($current_url)); $customize_url = add_query_arg(array('url' => $current_url), wp_customize_url()); // add Theme Customizer admin menu only if it's enabled for current user if (et_pb_is_allowed('theme_customizer')) { $wp_admin_bar->add_menu(array('parent' => 'appearance', 'id' => 'customize-extra-theme', 'title' => __('Theme Customizer', 'extra'), 'href' => add_query_arg(array('et_customizer_option_set' => 'theme'), $customize_url), 'meta' => array('class' => 'hide-if-no-customize'))); } // add Module Customizer admin menu only if it's enabled for current user if (et_pb_is_allowed('module_customizer')) { $wp_admin_bar->add_menu(array('parent' => 'appearance', 'id' => 'customize-extra-module', 'title' => __('Module Customizer', 'extra'), 'href' => add_query_arg(array('et_customizer_option_set' => 'module'), $customize_url), 'meta' => array('class' => 'hide-if-no-customize'))); } }