/** * Register theme and modules Customizer portability link. * * @since 2.7.0 * * @return bool Always return true. */ function et_divi_customizer_link() { if (is_customize_preview()) { echo et_core_portability_link('et_divi_mods', array('class' => 'customize-controls-close')); } }
function et_build_epanel() { global $themename, $shortname, $options, $et_disabled_jquery; // load theme settings array et_load_core_options(); if (isset($_GET['saved'])) { if ($_GET['saved']) { echo '<div id="message" class="updated fade"><p><strong>' . esc_html($themename) . ' ' . esc_html__('settings saved.', $themename) . '</strong></p></div>'; } } if (isset($_GET['reset'])) { if ($_GET['reset']) { echo '<div id="message" class="updated fade"><p><strong>' . esc_html($themename) . ' ' . esc_html__('settings reset.', $themename) . '</strong></p></div>'; } } ?> <div id="wrapper"> <div id="panel-wrap"> <div id="epanel-top"> <button class="save-button" id="epanel-save-top"><?php esc_html_e('Save Changes', $themename); ?> </button> </div> <form method="post" id="main_options_form" enctype="multipart/form-data"> <div id="epanel-wrapper"> <div id="epanel" class="onload"> <div id="epanel-content-wrap"> <div id="epanel-content"> <div id="epanel-header"> <h1 id="epanel-title"><?php printf(esc_html__('%s Theme Options', $themename), $themename); ?> </h1> <?php global $epanelMainTabs; $epanelMainTabs = apply_filters('epanel_page_maintabs', $epanelMainTabs); ?> <a href="#" class="defaults-button epanel-reset" title="<?php esc_attr_e('Reset to Defaults', $themename); ?> "><span class="label"><?php esc_html_e('Reset to Defaults', $themename); ?> </span></a> <?php echo et_core_portability_link('epanel', array('class' => 'defaults-button epanel-portability')); ?> </div> <ul id="epanel-mainmenu"> <?php if (in_array('general', $epanelMainTabs)) { ?> <li><a href="#wrap-general"><?php esc_html_e('General', $themename); ?> </a></li> <?php } ?> <?php if (in_array('navigation', $epanelMainTabs)) { ?> <li><a href="#wrap-navigation"><?php esc_html_e('Navigation', $themename); ?> </a></li> <?php } ?> <?php if (in_array('layout', $epanelMainTabs)) { ?> <li><a href="#wrap-layout"><?php esc_html_e('Layout', $themename); ?> </a></li> <?php } ?> <?php if (in_array('ad', $epanelMainTabs)) { ?> <li><a href="#wrap-advertisements"><?php esc_html_e('Ads', $themename); ?> </a></li> <?php } ?> <?php if (in_array('colorization', $epanelMainTabs)) { ?> <li><a href="#wrap-colorization"><?php esc_html_e('Colorization', $themename); ?> </a></li> <?php } ?> <?php if (in_array('seo', $epanelMainTabs)) { ?> <li><a href="#wrap-seo"><?php esc_html_e('SEO', $themename); ?> </a></li> <?php } ?> <?php if (in_array('integration', $epanelMainTabs)) { ?> <li><a href="#wrap-integration"><?php esc_html_e('Integration', $themename); ?> </a></li> <?php } ?> <?php if (in_array('updates', $epanelMainTabs)) { ?> <li><a href="#wrap-updates"><?php esc_html_e('Updates', $themename); ?> </a></li> <?php } ?> <?php do_action('epanel_render_maintabs', $epanelMainTabs); ?> </ul><!-- end epanel mainmenu --> <?php foreach ($options as $value) { if (!empty($value['depends_on'])) { // function defined in 'depends on' key returns false, if a setting shouldn't be displayed if (!call_user_func($value['depends_on'])) { continue; } } if (!empty($value['id'])) { $is_new_global_setting = false; $global_setting_main_name = $global_setting_sub_name = ''; if (isset($value['is_global']) && $value['is_global']) { $is_new_global_setting = true; $global_setting_main_name = isset($value['main_setting_name']) ? sanitize_text_field($value['main_setting_name']) : ''; $global_setting_sub_name = isset($value['sub_setting_name']) ? sanitize_text_field($value['sub_setting_name']) : ''; } } if (in_array($value['type'], array('text', 'textlimit', 'textarea', 'select', 'checkboxes', 'different_checkboxes', 'colorpicker', 'textcolorpopup', 'upload', 'callback_function', 'et_color_palette', 'password'))) { ?> <div class="epanel-box"> <div class="box-title"> <h3><?php echo esc_html($value['name']); ?> </h3> <div class="box-descr"> <p><?php echo wp_kses($value['desc'], array('a' => array('href' => array(), 'title' => array(), 'target' => array()))); ?> </p> </div> <!-- end box-desc-content div --> </div> <!-- end div box-title --> <div class="box-content"> <?php if (in_array($value['type'], array('text', 'password'))) { ?> <?php $et_input_value = ''; $et_input_value = '' != et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) ? et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) : $value['std']; $et_input_value = stripslashes($et_input_value); ?> <input name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " type="<?php echo esc_attr($value['type']); ?> " value="<?php echo esc_attr($et_input_value); ?> " /> <?php } elseif ('textlimit' == $value['type']) { ?> <?php $et_input_value = ''; $et_input_value = '' != et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) ? et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) : $value['std']; $et_input_value = stripslashes($et_input_value); ?> <input name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " type="text" maxlength="<?php echo esc_attr($value['max']); ?> " size="<?php echo esc_attr($value['max']); ?> " value="<?php echo esc_attr($et_input_value); ?> " /> <?php } elseif ('colorpicker' == $value['type']) { ?> <div id="colorpickerHolder"></div> <?php } elseif ('textcolorpopup' == $value['type']) { ?> <?php $et_input_value = ''; $et_input_value = '' != et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) ? et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) : $value['std']; ?> <input name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " class="colorpopup" type="text" value="<?php echo esc_attr($et_input_value); ?> " /> <?php } elseif ('textarea' == $value['type']) { ?> <?php $et_textarea_value = ''; $et_textarea_value = '' != et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) ? et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) : $value['std']; $et_textarea_value = stripslashes($et_textarea_value); ?> <textarea name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> "><?php echo esc_textarea($et_textarea_value); ?> </textarea> <?php } elseif ('upload' == $value['type']) { ?> <?php $et_upload_button_data = isset($value['button_text']) ? sprintf(' data-button_text="%1$s"', esc_attr($value['button_text'])) : ''; ?> <input id="<?php echo esc_attr($value['id']); ?> " class="uploadfield" type="text" size="90" name="<?php echo esc_attr($value['id']); ?> " value="<?php echo esc_url(et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name)); ?> " /> <div class="upload_buttons"> <span class="upload_image_reset"><?php esc_html_e('Reset', $themename); ?> </span> <input class="upload_image_button" type="button"<?php echo $et_upload_button_data; ?> value="<?php esc_attr_e('Upload', $themename); ?> " /> </div> <div class="clear"></div> <?php } elseif ('select' == $value['type']) { ?> <select name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> "> <?php foreach ($value['options'] as $option_key => $option) { ?> <?php $et_select_active = ''; $et_use_option_values = isset($value['et_array_for']) && in_array($value['et_array_for'], array('pages', 'categories')) || isset($value['et_save_values']) && $value['et_save_values'] ? true : false; $et_option_db_value = et_get_option($value['id']); if ($et_use_option_values && $et_option_db_value == $option_key || stripslashes($et_option_db_value) == trim(stripslashes($option)) || !$et_option_db_value && isset($value['std']) && stripslashes($option) == stripslashes($value['std'])) { $et_select_active = ' selected="selected"'; } ?> <option<?php if ($et_use_option_values) { echo ' value="' . esc_attr($option_key) . '"'; } ?> <?php echo $et_select_active; ?> ><?php echo esc_html(trim($option)); ?> </option> <?php } ?> </select> <?php } elseif ('checkboxes' == $value['type']) { ?> <?php if (empty($value['options'])) { esc_html_e("You don't have pages", $themename); } else { $i = 1; $className = 'inputs'; if (isset($value['excludeDefault']) && $value['excludeDefault'] == 'true') { $className .= ' different'; } foreach ($value['options'] as $option) { $checked = ""; $class_name_last = 0 == $i % 3 ? ' last' : ''; if (et_get_option($value['id'])) { if (in_array($option, et_get_option($value['id']))) { $checked = "checked=\"checked\""; } } $et_checkboxes_label = $value['id'] . '-' . $option; if ('custom' == $value['usefor']) { $et_helper = (array) $value['helper']; $et_checkboxes_value = $et_helper[$option]; } else { if ('taxonomy_terms' == $value['usefor'] && isset($value['taxonomy_name'])) { $et_checkboxes_term = get_term_by('id', $option, $value['taxonomy_name']); $et_checkboxes_value = sanitize_text_field($et_checkboxes_term->name); } else { $et_checkboxes_value = 'pages' == $value['usefor'] ? get_pagename($option) : get_categname($option); } } ?> <p class="<?php echo esc_attr($className . $class_name_last); ?> "> <input type="checkbox" class="usual-checkbox" name="<?php echo esc_attr($value['id']); ?> []" id="<?php echo esc_attr($et_checkboxes_label); ?> " value="<?php echo esc_attr($option); ?> " <?php echo esc_html($checked); ?> /> <label for="<?php echo esc_attr($et_checkboxes_label); ?> "><?php echo esc_html($et_checkboxes_value); ?> </label> </p> <?php $i++; } } ?> <br class="clearfix"/> <?php } elseif ('different_checkboxes' == $value['type']) { ?> <?php foreach ($value['options'] as $option) { $checked = ''; if (et_get_option($value['id']) !== false) { if (in_array($option, et_get_option($value['id']))) { $checked = "checked=\"checked\""; } } elseif (isset($value['std'])) { if (in_array($option, $value['std'])) { $checked = "checked=\"checked\""; } } ?> <p class="postinfo <?php echo esc_attr('postinfo-' . $option); ?> "> <input type="checkbox" class="usual-checkbox" name="<?php echo esc_attr($value['id']); ?> []" id="<?php echo esc_attr($value['id'] . '-' . $option); ?> " value="<?php echo esc_attr($option); ?> " <?php echo esc_html($checked); ?> /> </p> <?php } ?> <br class="clearfix"/> <?php } elseif ('callback_function' == $value['type']) { call_user_func($value['function_name']); ?> <?php } elseif ('et_color_palette' == $value['type']) { $items_amount = isset($value['items_amount']) ? $value['items_amount'] : 1; $et_input_value = '' !== str_replace('|', '', et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name)) ? et_get_option($value['id'], '', '', false, $is_new_global_setting, $global_setting_main_name, $global_setting_sub_name) : $value['std']; ?> <div class="et_pb_colorpalette_overview"> <?php for ($colorpalette_index = 1; $colorpalette_index <= $items_amount; $colorpalette_index++) { ?> <span class="colorpalette-item colorpalette-item-<?php echo esc_attr($colorpalette_index); ?> " data-index="<?php echo esc_attr($colorpalette_index); ?> "></span> <?php } ?> </div> <?php for ($colorpicker_index = 1; $colorpicker_index <= $items_amount; $colorpicker_index++) { ?> <div class="colorpalette-colorpicker" data-index="<?php echo esc_attr($colorpicker_index); ?> "> <input data-index="<?php echo esc_attr($colorpicker_index); ?> " type="text" class="input-colorpalette-colorpicker" data-alpha="true" /> </div> <?php } ?> <input name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " class="et_color_palette_main_input" type="hidden" value="<?php echo esc_attr($et_input_value); ?> " /> <?php } ?> </div> <!-- end box-content div --> <span class="box-description"></span> </div> <!-- end epanel-box div --> <?php } elseif ('checkbox' == $value['type'] || 'checkbox2' == $value['type']) { ?> <?php $et_box_class = 'checkbox' == $value['type'] ? 'epanel-box-small-1' : 'epanel-box-small-2'; ?> <div class="<?php echo esc_attr('epanel-box ' . $et_box_class); ?> "> <div class="box-title"><h3><?php echo esc_html($value['name']); ?> </h3> <div class="box-descr"> <p><?php echo wp_kses($value['desc'], array('a' => array('href' => array(), 'title' => array(), 'target' => array()))); ?> </p> </div> <!-- end box-desc-content div --> </div> <!-- end div box-title --> <div class="box-content"> <?php $checked = ''; if ('' != et_get_option($value['id'])) { if ('on' == et_get_option($value['id'])) { $checked = 'checked="checked"'; } else { $checked = ''; } } else { if ('on' == $value['std']) { $checked = 'checked="checked"'; } } ?> <input type="checkbox" class="checkbox yes_no_button" name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " <?php echo $checked; ?> /> </div> <!-- end box-content div --> <span class="box-description"></span> </div> <!-- end epanel-box-small div --> <?php } elseif ('support' == $value['type']) { ?> <div class="inner-content"> <?php include get_template_directory() . "/includes/functions/" . $value['name'] . ".php"; ?> </div> <?php } elseif ('contenttab-wrapstart' == $value['type'] || 'subcontent-start' == $value['type']) { ?> <?php $et_contenttab_class = 'contenttab-wrapstart' == $value['type'] ? 'content-div' : 'tab-content'; ?> <div id="<?php echo esc_attr($value['name']); ?> " class="<?php echo esc_attr($et_contenttab_class); ?> "> <?php } elseif ('contenttab-wrapend' == $value['type'] || 'subcontent-end' == $value['type']) { ?> </div> <!-- end <?php echo esc_html($value['name']); ?> div --> <?php } elseif ('subnavtab-start' == $value['type']) { ?> <ul class="idTabs"> <?php } elseif ('subnavtab-end' == $value['type']) { ?> </ul> <?php } elseif ('subnav-tab' == $value['type']) { ?> <li><a href="#<?php echo esc_attr($value['name']); ?> "><span class="pngfix"><?php echo esc_html($value['desc']); ?> </span></a></li> <?php } elseif ($value['type'] == "clearfix") { ?> <div class="clearfix"></div> <?php } ?> <?php } //end foreach ($options as $value) ?> </div> <!-- end epanel-content div --> </div> <!-- end epanel-content-wrap div --> </div> <!-- end epanel div --> </div> <!-- end epanel-wrapper div --> <div id="epanel-bottom"> <?php wp_nonce_field('epanel_nonce'); ?> <button class="save-button" name="save" id="epanel-save"><?php esc_html_e('Save Changes', $themename); ?> </button> <input type="hidden" name="action" value="save_epanel" /> </div><!-- end epanel-bottom div --> </form> <div class="reset-popup-overlay"> <div class="defaults-hover"> <div class="reset-popup-header"><?php esc_html_e('Reset', $themename); ?> </div> <?php _e(et_get_safe_localization('This will return all of the settings throughout the options page to their default values. <strong>Are you sure you want to do this?</strong>'), $themename); ?> <div class="clearfix"></div> <form method="post"> <?php wp_nonce_field('et-nojs-reset_epanel', '_wpnonce_reset'); ?> <input name="reset" type="submit" value="<?php esc_attr_e('Yes', $themename); ?> " id="epanel-reset" /> <input type="hidden" name="action" value="reset" /> </form> <span class="no"><?php esc_html_e('No', $themename); ?> </span> </div> </div> </div> <!-- end panel-wrap div --> </div> <!-- end wrapper div --> <div id="epanel-ajax-saving"> <img src="<?php echo esc_url(get_template_directory_uri() . '/includes/builder/images/ajax-loader.gif'); ?> " alt="loading" id="loading" /> </div> <script type="text/template" id="epanel-yes-no-button-template"> <div class="et_pb_yes_no_button_wrapper"> <div class="et_pb_yes_no_button"><!-- .et_pb_on_state || .et_pb_off_state --> <span class="et_pb_value_text et_pb_on_value"><?php esc_html_e('Enable', $themename); ?> </span> <span class="et_pb_button_slider"></span> <span class="et_pb_value_text et_pb_off_value"><?php esc_html_e('Disable', $themename); ?> </span> </div> </div> </script> <style type="text/css"> #epanel p.postinfo-author .mark:after { content: '<?php esc_html_e("Author", $themename); ?> '; } #epanel p.postinfo-date .mark:after { content: '<?php esc_html_e("Date", $themename); ?> '; } #epanel p.postinfo-categories .mark:after { content: '<?php esc_html_e("Categories", $themename); ?> '; } #epanel p.postinfo-comments .mark:after { content: '<?php esc_html_e("Comments", $themename); ?> '; } </style> <?php }
/** * * Prints the admin page for Role Editor * */ function et_pb_display_role_editor() { $all_role_options = et_pb_all_role_options(); $option_tabs = ''; $menu_tabs = ''; // get all roles registered in current WP if (!function_exists('get_editable_roles')) { require_once ABSPATH . '/wp-admin/includes/user.php'; } $all_roles = get_editable_roles(); $builder_roles_array = array(); if (!empty($all_roles)) { foreach ($all_roles as $role => $role_data) { // add roles with edit_posts capability into $builder_roles_array if (!empty($role_data['capabilities']['edit_posts']) && 1 === (int) $role_data['capabilities']['edit_posts']) { $builder_roles_array[$role] = $role_data['name']; } } } // fill the builder roles array with default roles if it's empty if (empty($builder_roles_array)) { $builder_roles_array = array('administrator' => esc_html__('Administrator', 'et_builder'), 'editor' => esc_html__('Editor', 'et_builder'), 'author' => esc_html__('Author', 'et_builder'), 'contributor' => esc_html__('Contributor', 'et_builder')); } foreach ($builder_roles_array as $role => $role_title) { $option_tabs .= et_pb_generate_roles_tab($all_role_options, $role); $menu_tabs .= sprintf('<a href="#" class="et-pb-layout-buttons%4$s" data-open_tab="et_pb_role-%3$s_options" title="%1$s"> <span>%2$s</span> </a>', esc_attr($role_title), esc_html($role_title), esc_attr($role), 'administrator' === $role ? ' et_pb_roles_active_menu' : ''); } printf('<div class="et_pb_roles_main_container"> <a href="#" id="et_pb_save_roles" class="button button-primary button-large">%3$s</a> <h3 class="et_pb_roles_title"><span>%2$s</span></h3> <div id="et_pb_main_container" class="post-type-page"> <div id="et_pb_layout_controls"> %1$s <a href="#" class="et-pb-layout-buttons et-pb-layout-buttons-reset" title="Reset all settings"> <span class="icon"></span><span class="label">Reset</span> </a> %4$s </div> </div> <div class="et_pb_roles_container_all"> %5$s </div> </div>', $menu_tabs, esc_html__('Divi Role Editor', 'et_builder'), esc_html__('Save Divi Roles', 'et_builder'), et_core_portability_link('et_pb_roles', array('class' => 'et-pb-layout-buttons et-pb-portability-button')), $option_tabs); }