PATH:
home
/
letacommog
/
vizeo
/
wp-content
/
themes
/
dt-the7
/
inc
/
extensions
/
options-framework
<?php /** * Generates the tabs that are used in the options menu */ function optionsframework_tabs() { $counter = 0; $menu = ''; $cur_page_id = optionsframework_get_cur_page_id(); $options = optionsframework_get_page_options( $cur_page_id ); foreach ( $options as $value ) { // Heading for Navigation if ( isset( $value['type'] ) && $value['type'] == "heading" ) { $counter++; $class = ''; $class = ! empty( $value['id'] ) ? $value['id'] : $value['name']; $class = preg_replace( '/[^a-zA-Z0-9._\-]/', '', strtolower($class) ) . '-tab'; $menu .= '<a id="options-group-'. $counter . '-tab" class="nav-tab ' . $class .'" title="' . esc_attr( $value['name'] ) . '" href="' . esc_attr( '#options-group-'. $counter ) . '">' . esc_html( $value['name'] ) . '</a>'; } } return $menu; } /** * Generates the options fields that are used in the form. */ function optionsframework_fields() { $cur_page_id = optionsframework_get_cur_page_id(); $options = optionsframework_get_page_options( $cur_page_id ); optionsframework_interface( $options, $cur_page_id ); } function optionsframework_interface( $options, $cur_page_id ) { $optionsframework_settings = get_option( 'optionsframework' ); // Gets the unique option id if ( isset( $optionsframework_settings['id'] ) ) { $option_name = $optionsframework_settings['id']; } else { $option_name = 'optionsframework'; }; $settings = apply_filters( "optionsframework_fields_saved_settings-{$cur_page_id}", get_option( $option_name ) ); $optionsframework_debug = presscore_options_debug(); $do_not_export = apply_filters( 'optionsframework_fields_black_list', array() ); $preserved_options = apply_filters( 'optionsframework_validate_preserve_fields', array() ); $in_block = false; $counter = 0; $menu = ''; $elements_without_wrap = array( 'block_begin', 'block_end', 'block', 'heading', 'info', 'page', 'js_hide_begin', 'js_hide_end', 'title', 'divider' ); foreach ( $options as $value ) { if ( ! is_array( $value ) || ! array_key_exists( 'type', $value ) ) { continue; } $val = ''; $select_value = ''; $checked = ''; $output = ''; // Set default value to $val if ( isset( $value['std'] ) ) { $val = $value['std']; } // If the option is already saved, ovveride $val if ( !in_array( $value['type'], array( 'page', 'info', 'heading' ) ) ) { if ( isset( $value['id'], $settings[($value['id'])] ) ) { $val = $settings[($value['id'])]; // Striping slashes of non-array options if ( !is_array($val) && ! in_array( $value['type'], array( 'textarea' ) ) ) { $val = stripslashes( $val ); } } } if ( !empty($value['before']) ) { $output .= $value['before']; } // Wrap all options if ( !in_array( $value['type'], $elements_without_wrap ) ) { $data_attr = ''; if ( in_array( $value['type'], array( 'radio', 'checkbox', 'select', 'slider', 'images' ) ) ) { $data_attr .= ' data-value="' . esc_attr( $val ) . '"'; } // Keep all ids lowercase with no spaces $value['id'] = preg_replace('/(\W!-)/', '', strtolower($value['id']) ); $id = 'section-' . $value['id']; $class = 'section'; if ( isset( $value['type'] ) ) { $class .= ' section-' . $value['type']; } if ( isset( $value['class'] ) ) { $class .= ' ' . $value['class']; } $output .= '<div id="' . esc_attr( $id ) .'" class="' . esc_attr( $class ) . '"' . $data_attr . '>'."\n"; if ( isset( $value['divider'] ) && in_array( $value['divider'], array( 'top', 'surround' ) ) ) { $output .= '<div class="divider"></div>' . "\n"; } $output .= '<div class="option">' . "\n"; if ( !empty( $value['name'] ) ) { $output .= '<div class="name">' . ( !empty( $value['name'] ) ? esc_html( $value['name'] ): '' ) . "\n"; if ( isset( $value['desc'] ) ) { $explain_value = $value['desc']; $output .= '<div class="explain"><small>' . esc_html( $explain_value ) . '</small></div>'."\n"; } $output .= '</div>' . "\n"; } if ( $value['type'] != 'editor' ) { if ( empty( $value['name'] ) ) { $output .= '<div class="controls controls-fullwidth">' . "\n"; } else { $output .= '<div class="controls">' . "\n"; } } else { $output .= '<div>' . "\n"; } } if ( isset( $value['dependency'] ) ) { optionsframework_fields_dependency()->set( $value['id'], $value['dependency'] ); } switch ( $value['type'] ) { // Basic text input case 'text': $output .= '<input id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" type="text" value="' . esc_attr( $val ) . '" />'; break; // Password input case 'password': $output .= '<input id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" type="password" value="' . esc_attr( $val ) . '" />'; break; // Textarea case 'textarea': $rows = '8'; if ( isset( $value['settings']['rows'] ) ) { $custom_rows = $value['settings']['rows']; if ( is_numeric( $custom_rows ) ) { $rows = $custom_rows; } } if ( empty( $value['sanitize'] ) || 'without_sanitize' != $value['sanitize'] ) { $val = stripslashes( $val ); } $output .= '<textarea id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" rows="' . $rows . '">' . esc_textarea( $val ) . '</textarea>'; break; // Select Box case 'select': $output .= '<select class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" id="' . esc_attr( $value['id'] ) . '">'; foreach ($value['options'] as $key => $option ) { $selected = ''; if ( $val != '' ) { if ( $val == $key) { $selected = ' selected="selected"';} } $output .= '<option'. $selected .' value="' . esc_attr( $key ) . '">' . esc_html( $option ) . '</option>'; } $output .= '</select>'; break; // Radio Box case "radio": $name = $option_name .'['. $value['id'] .']'; $wrap_class = 'controls-input-wrap'; if ( empty( $value['style'] ) || 'horizontal' == $value['style'] ) { $wrap_class .= ' inline-input-wrap'; } else if ( 'vertical' == $value['style'] ) { $wrap_class .= ' block-input-wrap'; } $show_hide = empty($value['show_hide']) ? array() : (array) $value['show_hide']; $classes = array( 'of-input', 'of-radio' ); if ( !empty($show_hide) ) { $classes[] = 'of-js-hider'; } foreach ($value['options'] as $key => $option) { $id = $option_name . '-' . $value['id'] .'-'. $key; $input_classes = $classes; $attr = ''; if ( !empty($show_hide[ $key ]) ) { $input_classes[] = 'js-hider-show'; if ( true !== $show_hide[ $key ] ) { if ( is_array( $show_hide[ $key ] ) ) { $data_js_atregt = implode( ', .', $show_hide[ $key ] ); } else { $data_js_atregt = $show_hide[ $key ]; } $attr = ' data-js-target="' . $data_js_atregt . '"'; } } $output .= '<div class="' . $wrap_class . '">' . '<input class="' . esc_attr(implode(' ', $input_classes)) . '"' . $attr . ' type="radio" name="' . esc_attr( $name ) . '" id="' . esc_attr( $id ) . '" value="'. esc_attr( $key ) . '" '. checked( $val, $key, false) .' />' . '<label for="' . esc_attr( $id ) . '">' . esc_html( $option ) . '</label>' . '</div>'; } break; // Image Selectors case "images": $name = $option_name .'['. $value['id'] .']'; $show_hide = empty($value['show_hide']) ? array() : (array) $value['show_hide']; $classes = array('of-radio-img-radio'); if ( !empty($show_hide) ) { $classes[] = 'of-js-hider'; } if ( empty($value['base_dir']) ) { $dir = get_template_directory_uri(); } else { $dir = $value['base_dir']; } foreach ( $value['options'] as $key => $option ) { $input_classes = $classes; $selected = ''; $checked = ''; $attr = ''; if ( $val == $key ) { $selected = ' of-radio-img-selected'; $checked = ' checked="checked"'; } if ( !empty($show_hide[ $key ]) ) { $input_classes[] = 'js-hider-show'; if ( true !== $show_hide[ $key ] ) { if ( is_array( $show_hide[ $key ] ) ) { $data_js_atregt = implode( ', .', $show_hide[ $key ] ); } else { $data_js_atregt = $show_hide[ $key ]; } $attr = ' data-js-target="' . $data_js_atregt . '"'; } } $output .= '<div class="of-radio-img-inner-container">'; $output .= '<input type="radio" id="' . esc_attr( $value['id'] .'_'. $key) . '" class="' . esc_attr(implode(' ', $input_classes)) . '"' . $attr . ' value="' . esc_attr( $key ) . '" name="' . esc_attr( $name ) . '" '. $checked .' />'; $img_info = ''; if ( is_array( $option ) && isset( $option['src'], $option['title'] ) ) { $img = $dir . $option['src']; $title = $option['title']; if ( $title ) { $img_title_style = ''; if ( isset( $option['title_width'] ) ) { $img_title_style = ' style="width: ' . absint( $option['title_width'] ) . 'px;"'; } $img_info = '<div class="of-radio-img-label"' . $img_title_style . '>' . esc_html($title) . '</div>'; } } else if ( $option !== $key ) { $img = $dir . $option; $title = $option; } else { $img = presscore_get_default_small_image(); $img = $img[0]; $title = $option; $img_title_style = ''; if ( isset( $option['title_width'] ) ) { $img_title_style = ' style="width: ' . absint( $option['title_width'] ) . 'px;"'; } $img_info = '<div class="of-radio-img-label"' . $img_title_style . '>' . esc_html($title) . '</div>'; } $output .= '<img src="' . esc_url( $img ) . '" alt="' . esc_attr($title) .'" class="of-radio-img-img' . $selected .'" onclick="dtRadioImagesSetCheckbox(\''. esc_attr($value['id'] .'_'. $key) .'\');" />'; $output .= $img_info; $output .= '</div>'; } break; // Checkbox case "checkbox": $classes = array(); $classes[] = 'checkbox'; $classes[] = 'of-input'; if( isset($value['options']['java_hide']) && $value['options']['java_hide'] ) { $classes[] = 'of-js-hider'; }else if( isset($value['options']['java_hide_global']) && $value['options']['java_hide_global'] ) { $classes[] = 'of-js-hider-global'; } $classes = implode(' ', $classes); $output .= '<input id="' . esc_attr( $value['id'] ) . '" class="' . $classes . '" type="checkbox" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" '. checked( $val, 1, false) .' />'; break; // Multicheck case "multicheck": foreach ($value['options'] as $key => $option) { $checked = ''; $label = $option; $option = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($key)); $id = $option_name . '-' . $value['id'] . '-'. $option; $name = $option_name . '[' . $value['id'] . '][' . $option .']'; if ( isset($val[$option]) ) { $checked = checked($val[$option], 1, false); } $output .= '<input id="' . esc_attr( $id ) . '" class="checkbox of-input" type="checkbox" name="' . esc_attr( $name ) . '" ' . $checked . ' /><label for="' . esc_attr( $id ) . '">' . esc_html( $label ) . '</label>'; } break; // Color picker case "color": $default_color = ''; if ( isset($value['std']) ) { if ( $val != $value['std'] ) $default_color = ' data-default-color="' .$value['std'] . '" '; } $output .= '<input name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" id="' . esc_attr( $value['id'] ) . '" class="of-color" type="text" value="' . esc_attr( $val ) . '"' . $default_color .' />'; break; // Uploader case "upload": $mode = isset( $value['mode'] ) ? $value['mode'] : 'uri_only'; $output .= optionsframework_uploader( $value['id'], $val, $mode, null ); break; // Typography case 'typography': unset( $font_size, $font_style, $font_face, $font_color ); $typography_defaults = array( 'size' => '', 'face' => '', 'style' => '', 'color' => '' ); $typography_stored = wp_parse_args( $val, $typography_defaults ); $typography_options = array( 'sizes' => of_recognized_font_sizes(), 'faces' => of_recognized_font_faces(), 'styles' => of_recognized_font_styles(), 'color' => true ); if ( isset( $value['options'] ) ) { $typography_options = wp_parse_args( $value['options'], $typography_options ); } // Font Size if ( $typography_options['sizes'] ) { $font_size = '<select class="of-typography of-typography-size" name="' . esc_attr( $option_name . '[' . $value['id'] . '][size]' ) . '" id="' . esc_attr( $value['id'] . '_size' ) . '">'; $sizes = $typography_options['sizes']; foreach ( $sizes as $i ) { $size = $i . 'px'; $font_size .= '<option value="' . esc_attr( $size ) . '" ' . selected( $typography_stored['size'], $size, false ) . '>' . esc_html( $size ) . '</option>'; } $font_size .= '</select>'; } // Font Face if ( $typography_options['faces'] ) { $font_face = '<select class="of-typography of-typography-face" name="' . esc_attr( $option_name . '[' . $value['id'] . '][face]' ) . '" id="' . esc_attr( $value['id'] . '_face' ) . '">'; $faces = $typography_options['faces']; foreach ( $faces as $key => $face ) { $font_face .= '<option value="' . esc_attr( $key ) . '" ' . selected( $typography_stored['face'], $key, false ) . '>' . esc_html( $face ) . '</option>'; } $font_face .= '</select>'; } // Font Styles if ( $typography_options['styles'] ) { $font_style = '<select class="of-typography of-typography-style" name="'.$option_name.'['.$value['id'].'][style]" id="'. $value['id'].'_style">'; $styles = $typography_options['styles']; foreach ( $styles as $key => $style ) { $font_style .= '<option value="' . esc_attr( $key ) . '" ' . selected( $typography_stored['style'], $key, false ) . '>'. $style .'</option>'; } $font_style .= '</select>'; } // Font Color if ( $typography_options['color'] ) { $default_color = ''; if ( isset($value['std']['color']) ) { if ( $val != $value['std']['color'] ) $default_color = ' data-default-color="' .$value['std']['color'] . '" '; } $font_color = '<input name="' . esc_attr( $option_name . '[' . $value['id'] . '][color]' ) . '" id="' . esc_attr( $value['id'] . '_color' ) . '" class="of-color of-typography-color type="text" value="' . esc_attr( $typography_stored['color'] ) . '"' . $default_color .' />'; } // Allow modification/injection of typography fields $typography_fields = compact( 'font_size', 'font_face', 'font_style', 'font_color' ); $typography_fields = apply_filters( 'of_typography_fields', $typography_fields, $typography_stored, $option_name, $value ); $output .= implode( '', $typography_fields ); break; // Background case 'background': $background = $val; // Background Color $default_color = ''; if ( isset( $value['std']['color'] ) ) { if ( $val != $value['std']['color'] ) $default_color = ' data-default-color="' .$value['std']['color'] . '" '; } $output .= '<input name="' . esc_attr( $option_name . '[' . $value['id'] . '][color]' ) . '" id="' . esc_attr( $value['id'] . '_color' ) . '" class="of-color of-background-color" type="text" value="' . esc_attr( $background['color'] ) . '"' . $default_color .' />'; // Background Image if ( !isset($background['image']) ) { $background['image'] = ''; } $output .= optionsframework_uploader( $value['id'], $background['image'], null, esc_attr( $option_name . '[' . $value['id'] . '][image]' ) ); $class = 'of-background-properties'; if ( '' == $background['image'] ) { $class .= ' hide'; } $output .= '<div class="' . esc_attr( $class ) . '">'; // Background Repeat $output .= '<select class="of-background of-background-repeat" name="' . esc_attr( $option_name . '[' . $value['id'] . '][repeat]' ) . '" id="' . esc_attr( $value['id'] . '_repeat' ) . '">'; $repeats = of_recognized_background_repeat(); foreach ($repeats as $key => $repeat) { $output .= '<option value="' . esc_attr( $key ) . '" ' . selected( $background['repeat'], $key, false ) . '>'. esc_html( $repeat ) . '</option>'; } $output .= '</select>'; // Background Position $output .= '<select class="of-background of-background-position" name="' . esc_attr( $option_name . '[' . $value['id'] . '][position]' ) . '" id="' . esc_attr( $value['id'] . '_position' ) . '">'; $positions = of_recognized_background_position(); foreach ($positions as $key=>$position) { $output .= '<option value="' . esc_attr( $key ) . '" ' . selected( $background['position'], $key, false ) . '>'. esc_html( $position ) . '</option>'; } $output .= '</select>'; // Background Attachment $output .= '<select class="of-background of-background-attachment" name="' . esc_attr( $option_name . '[' . $value['id'] . '][attachment]' ) . '" id="' . esc_attr( $value['id'] . '_attachment' ) . '">'; $attachments = of_recognized_background_attachment(); foreach ($attachments as $key => $attachment) { $output .= '<option value="' . esc_attr( $key ) . '" ' . selected( $background['attachment'], $key, false ) . '>' . esc_html( $attachment ) . '</option>'; } $output .= '</select>'; $output .= '</div>'; break; // Editor case 'editor': $output .= '<div class="explain">' . wp_kses( $explain_value, $allowedtags) . '</div>'."\n"; echo $output; $textarea_name = esc_attr( $option_name . '[' . $value['id'] . ']' ); $default_editor_settings = array( 'textarea_name' => $textarea_name, 'media_buttons' => false, 'tinymce' => array( 'plugins' => 'wordpress' ) ); $editor_settings = array(); if ( isset( $value['settings'] ) ) { $editor_settings = $value['settings']; } $editor_settings = array_merge($editor_settings, $default_editor_settings); wp_editor( $val, $value['id'], $editor_settings ); $output = ''; break; // Info case "info": $id = ''; $class = 'section'; if ( isset( $value['id'] ) ) { $id = 'id="' . esc_attr( $value['id'] ) . '" '; } if ( isset( $value['type'] ) ) { $class .= ' section-' . $value['type']; } if ( isset( $value['class'] ) ) { $class .= ' ' . $value['class']; } $output .= '<div ' . $id . 'class="' . esc_attr( $class ) . '"><div class="info-block">'; if ( isset($value['name']) ) { $output .= '<h4 class="heading">' . esc_html( $value['name'] ) . '</h4>'; } if ( $value['desc'] ) { $output .= '<div class="info-description">' . apply_filters('of_sanitize_info', $value['desc'] ) . '</div>'; } if ( !empty($value['image']) ) { $output .= '<div class="info-image-holder"><img src="' . esc_url( $value['image'] ) . '" /></div>'; } $output .= '</div></div>'; break; // Heading for Navigation case "heading": if ( $in_block ) { $in_block = false; $output .= '</div>'."\n".'<!-- block_end -->'; } $counter++; if ( $counter >= 2 ) { $output .= '</div>'."\n"; } $class = ''; $class = ! empty( $value['id'] ) ? $value['id'] : $value['name']; $class = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($class) ); $output .= '<div id="options-group-' . $counter . '" class="group ' . $class . '">'; break; /* Custom fields */ // Background case 'background_img': $preset_images = empty( $value['preset_images'] ) ? presscore_opts_get_bg_images( $value['id'] ) : $value['preset_images']; $img_preview = false; if ( $preset_images ) { $output .= '<div class="of-background-preset-images">'; if ( empty( $value['images_base_dir'] ) ) { $dir = get_template_directory_uri(); } else { $dir = $value['images_base_dir']; } foreach ( $preset_images as $full_src=>$thumb_src ) { $selected = ''; $img = $dir . $thumb_src; $data_img = $dir . $full_src; if ( strpos($val['image'], $full_src) !== false ) { $selected = ' of-radio-img-selected'; $img_preview = $img; } $output .= '<img data-full-src="' . esc_attr($data_img) . '" src="' . esc_url( $img ) . '" alt="" class="of-radio-img-img' . $selected .'" width="47" height="47" />'; } $output .= '</div>'; } $background = $val; // Background Image if ( !isset($background['image']) ) { $background['image'] = ''; } $output .= optionsframework_uploader( $value['id'], $background['image'], null, null, esc_attr( $option_name . '[' . $value['id'] . '][image]' ) ); $class = 'of-background-properties'; if ( '' == $background['image'] ) { $class .= ' hide'; } $output .= '<div class="' . esc_attr( $class ) . '">'; if ( !isset($value['fields']) || in_array('repeat', (array) $value['fields']) ) { // Background Repeat $output .= '<select class="of-background of-background-repeat" name="' . esc_attr( $option_name . '[' . $value['id'] . '][repeat]' ) . '" id="' . esc_attr( $value['id'] . '_repeat' ) . '">'; $repeats = of_recognized_background_repeat(); foreach ($repeats as $key => $repeat) { $output .= '<option value="' . esc_attr( $key ) . '" ' . selected( $background['repeat'], $key, false ) . '>'. esc_html( $repeat ) . '</option>'; } $output .= '</select>'; } if ( !isset($value['fields']) || in_array('position_x', (array) $value['fields']) ) { // Background Position x $output .= '<select class="of-background of-background-position" name="' . esc_attr( $option_name . '[' . $value['id'] . '][position_x]' ) . '" id="' . esc_attr( $value['id'] . '_position_x' ) . '">'; $positions = of_recognized_background_horizontal_position(); foreach ($positions as $key=>$position) { $output .= '<option value="' . esc_attr( $key ) . '" ' . selected( $background['position_x'], $key, false ) . '>'. esc_html( $position ) . '</option>'; } $output .= '</select>'; } if ( !isset($value['fields']) || in_array('position_y', (array) $value['fields']) ) { // Background Position y $output .= '<select class="of-background of-background-position" name="' . esc_attr( $option_name . '[' . $value['id'] . '][position_y]' ) . '" id="' . esc_attr( $value['id'] . '_position_y' ) . '">'; $positions = of_recognized_background_vertical_position(); foreach ($positions as $key=>$position) { $output .= '<option value="' . esc_attr( $key ) . '" ' . selected( $background['position_y'], $key, false ) . '>'. esc_html( $position ) . '</option>'; } $output .= '</select>'; } // Background Attachment $output .= '</div>'; break; // Block case "block": case "block_begin": if ( $in_block ) { $in_block = false; $output .= '</div>'."\n".'<!-- block_end -->'; } $in_block = true; $class = 'section'; $id = ''; if ( isset( $value['type'] ) ) { $class .= ' section-' . $value['type']; } if ( isset( $value['class'] ) ) { $class .= ' ' . $value['class']; } if( isset( $value['id'] ) ){ $id .= ' id="' . esc_attr($value['id']) . '"'; } $output .= '<div' .$id. ' class="postbox ' . esc_attr( $class ) . '">'."\n"; if( isset($value['name']) && !empty($value['name']) ){ $output .= '<h3>' . esc_html( $value['name'] ) . '</h3>' . "\n"; } break; // Page case "page": break; // fields generator case "fields_generator": if ( ! isset( $value['options']['fields'] ) || ! is_array( $value['options']['fields'] ) ) { break; } $del_link = '<div class="submitbox"><a href="#" class="of_fields_gen_del submitdelete">'. _x('Delete', 'backend fields', 'the7mk2'). '</a></div>'; $output .= '<ul class="of_fields_gen_list">'; // saved elements if ( is_array( $val ) ) { $i = 0; // create elements foreach ( $val as $index=>$field ) { $block = $b_title = ''; // use patterns foreach ( $value['options']['fields'] as $name => $data ) { // if only_for list isset and current index not in the list - skip this element if ( isset( $data['only_for'] ) && is_array( $data['only_for'] ) && ! in_array( $index, $data['only_for'] ) ) { continue; } // checked если поле присутствует в записи, если нет поля value в шаблоне // или если оно есть и равно значению поля в записи $checked = false; if ( isset( $field[$name] ) && ( ! isset( $data['value'] ) || ( isset( $data['value'] ) && $data['value'] == $field[$name] ) ) ) { $checked = true; } // get the title if ( isset( $data['class'] ) && 'of_fields_gen_title' == $data['class'] ) { $b_title = $field[$name]; } $el_args = array( 'name' => sprintf('%s[%s][%d][%s]', $option_name, $value['id'], $index, $name ), 'description' => isset($data['description']) ? $data['description'] : '', 'class' => isset($data['class']) ? $data['class'] : '', 'value' => ('checkbox' == $data['type']) ? '' : $field[$name], 'checked' => $checked ); if ( 'select' == $data['type'] ) { $el_args['options'] = isset($data['options']) ? $data['options'] : array(); $el_args['selected'] = $el_args['value']; } if( isset($data['desc_wrap']) ) { $el_args['desc_wrap'] = $data['desc_wrap']; } if( isset($data['wrap']) ) { $el_args['wrap'] = $data['wrap']; } if( isset($data['style']) ) { $el_args['style'] = $data['style']; } // create form elements $element = dt_create_tag( $data['type'], $el_args); $block .= $element; } unset($data); $output .= '<li class="nav-menus-php nav-menu-index-' . $index . '">'; $output .= '<div class="of_fields_gen_title menu-item-handle" data-index="' . $index . '"><span class="dt-menu-item-title">' . esc_attr($b_title). '</span>'; $output .= '<span class="item-controls"><a class="item-edit"></a></span></div>'; $output .= '<div class="of_fields_gen_data menu-item-settings description" style="display: none;">' . $block; // if ( isset($value['std'][ $index ], $value['std'][ $index ]['permanent']) && $value['std'][ $index ]['permanent'] ) { // } else { $output .= $del_link; // } $output .= '</div>'; $output .= '</li>'; $i++; } unset($field); } $output .= '</ul>'; // control panel $output .= '<div class="of_fields_gen_controls">'; if ( ! empty( $value['options']['title'] ) ) { $output .= '<div class="name">' . esc_html( $value['options']['title'] ) . '</div>'; } // use pattern foreach( $value['options']['fields'] as $name => $data ) { if( isset($data['only_for']) ) continue; $el_args = array( 'name' => sprintf('%s[%s][%s]', $option_name, $value['id'], $name ), 'description' => isset($data['description']) ? $data['description'] : '', 'class' => isset($data['class']) ? $data['class'] : '', 'checked' => isset($data['checked']) ? $data['checked'] : false ); if ( 'select' == $data['type'] ) { $el_args['options'] = isset($data['options']) ? $data['options'] : array(); $el_args['selected'] = isset($data['selected']) ? $data['selected'] : false; } if( isset($data['desc_wrap']) ) { $el_args['desc_wrap'] = $data['desc_wrap']; } if( isset($data['wrap']) ) { $el_args['wrap'] = $data['wrap']; } if( isset($data['style']) ) { $el_args['style'] = $data['style']; } if( isset($data['value']) ) { $el_args['value'] = $data['value']; } // create form $element = dt_create_tag( $data['type'], $el_args); $output .= $element; } unset($data); // add button $button = dt_create_tag( 'button', array( 'name' => $option_name. '[' . $value['id'] . '][add]', 'title' => isset($value['options']['button']['title'])?$value['options']['button']['title']:_x('Add', 'backend fields button', 'the7mk2'), 'class' => 'of_fields_gen_add button-secondary' )); $output .= $button; $output .= '</div>'; break; // Social icons case 'social_icons': if ( !isset($value['options']) || !is_array($value['options']) ) { continue; } foreach( $value['options'] as $class=>$desc ) { $name = sprintf( '%s[%s][%s]', $option_name, $value['id'], $class ); $link = isset($val[ $class ]) ? $val[ $class ] : ''; $maxlength = isset( $value['maxlength'] )?' maxlength="' .$value['maxlength']. '"':''; $output .= '<label>' . esc_html( $desc ) . '<input class="of-input" name="' . esc_attr( $name ) . '" type="text" value="' . esc_url( $link ) . '"' .$maxlength. '/></label>'; } break; // fields generator alpha case "fields_generator_alpha": if ( !empty($value['options']['interface_filter']) && function_exists($value['options']['interface_filter']) ) { add_filter('optionsframework_interface_fields_generator', $value['options']['interface_filter'], 10, 2); } $del_link = '<div class="submitbox"><a href="#" class="of_fields_gen_del submitdelete">'. _x('Delete', 'backend fields', 'the7mk2'). '</a></div>'; $name = sprintf( '%s[%s]', $option_name, $value['id'] ); $output .= '<ul class="of_fields_gen_list">'; // saved elements if ( is_array( $val ) ) { $next_id = isset($val['next_id']) ? $val['next_id'] : max(array_keys($val)); $output .= '<input id="of-wa-nextid" type="hidden" name="' . $name . '[next_id]" value="' . $next_id . '" />'; $i = 0; // create elements foreach ( $val as $field_id=>$field_data ) { $title = empty($field_data['title']) ? _x('no title', 'theme-options', 'the7mk2') : $field_data['title']; $output .= '<li class="nav-menus-php">'; foreach ( $field_data as $f_name=>$f_val ) { $output .= sprintf('<input type="hidden" data-field="%1$s" class="of-wa-datafield" name="%2$s" value="%3$s" />', esc_attr( $f_name ), esc_attr( $name . "[$field_id][$f_name]" ), esc_attr( $f_val ) ); } $output .= '<div class="of_fields_gen_title menu-item-handle" data-id="' . $field_id . '"><span class="dt-menu-item-title">' . esc_attr($title) . '</span>'; $output .= '</li>'; $i++; } unset($field); } $output .= '</ul>'; // control panel $output .= '<div class="of_fields_gen_controls">'; $output .= apply_filters('optionsframework_interface_fields_generator', '', $value); $output .= '</div>'; break; // Social icons case 'social_icon': if( !isset($value['options']['fields']) || !is_array($value['options']['fields']) ) { continue; } $w = $h = '20'; if( !empty($value['options']['ico_width']) ) { $w = intval($value['options']['ico_width']); } if( !empty($value['options']['ico_height']) ) { $h = intval($value['options']['ico_height']); } $ico_size = sprintf( 'width: %dpx;height: %dpx;', $w, $h ); foreach( $value['options']['fields'] as $field=>$ico ) { $defaults = array( 'img' => '', 'desc' => '' ); $ico = wp_parse_args( (array)$ico, $defaults ); extract( $ico ); $name = sprintf( '%s[%s][%s]', $option_name, $value['id'], $field ); $soc_link = isset( $val[ $field ], $val[ $field ]['link'] ) ? $val[ $field ]['link'] : ''; $src = isset( $val[ $field ], $val[ $field ]['src'] ) ? $val[ $field ]['src'] : ''; $maxlength = isset( $value['maxlength'] )?' maxlength="' .$value['maxlength']. '"':''; $output .= '<input class="of-input" name="' . esc_attr( $name .'[link]' ) . '" type="text" value="' . esc_attr( $soc_link ) . '"' .$maxlength. ' style="display: inline-block; width: 300px; vertical-align: middle;" />'; $output .= '<div class="of-soc-image" style="background: url( ' . $img . ' ) no-repeat 0 0; vertical-align: middle; margin-right: 5px; display: inline-block;' . $ico_size . '"></div>'; } break; // Slider case 'slider': $classes = array( 'of-slider' ); if ( !empty( $value['options']['java_hide_if_not_max'] ) ) { $classes[] = 'of-js-hider'; $classes[] = 'js-hide-if-not-max'; } else if( !empty( $value['options']['java_hide_global_not_max'] ) ) { $classes[] = 'of-js-hider-global'; $classes[] = 'js-hide-if-not-max'; } $classes = implode( ' ', $classes ); $output .= '<div class="' . $classes . '"></div>'; $slider_opts = array( 'max' => isset( $value['options']['max'] ) ? intval( $value['options']['max'] ) : 100, 'min' => isset( $value['options']['min'] ) ? intval( $value['options']['min'] ) : 0, 'step' => isset( $value['options']['step'] ) ? intval( $value['options']['step'] ) : 1, 'value' => isset( $val ) ? intval( $val ) : 100 ); $str = ''; foreach( $slider_opts as $name=>$val ) { $str .= ' data-' . $name . '="' . esc_attr( $val ) . '"'; } $output .= '<input type="text" class="of-slider-value"' . $str . ' name="' . esc_attr($option_name . '[' . $value['id'] . ']') . '" readonly />'; break; // Hidden area begin case 'js_hide_begin': $class = 'of-js-hide'; if ( ! isset( $value['hidden_by_default'] ) || $value['hidden_by_default'] ) { $class .= ' hide-if-js'; } if ( !empty( $value['class'] ) ) { $class .= ' ' . $value['class']; } $output .= '<div class="' . esc_attr($class) . '">'; break; // Hidden area end case 'js_hide_end': $output .= '</div>'; break; // Social buttons case 'social_buttons': $social_buttons = (array)apply_filters('optionsframework_interface-social_buttons', array()); if ( empty($social_buttons) ) { $output .= '<p>Use "optionsframework_interface-social_buttons" filter to add some buttons.</p>'; break; } $saved_buttons = isset($val) ? (array) $val : array(); $output .= '<ul class="connectedSortable content-holder">'; $output .='<li class="ui-dt-sb-hidden"><input type="hidden" name="' . esc_attr($option_name . '[' . $value['id'] . '][]') . '" value="" /></li>'; foreach ( $saved_buttons as $field ) { $output .= '<li class="ui-state-default"><input type="hidden" name="' . esc_attr($option_name . '[' . $value['id'] . '][]') . '" value="' . esc_attr( $field ) . '" data-name="' . esc_attr($option_name . '[' . $value['id'] . '][]') . '"/>' . $social_buttons[ $field ] . '</li>'; } $output .= '</ul>'; $output .= '<ul class="connectedSortable tools-palette">'; foreach ( $social_buttons as $v=>$desc ) { if ( in_array($v, $saved_buttons) ) continue; $output .= '<li class="ui-state-default"><input type="hidden" value="' . esc_attr( $v ) . '" data-name="' . esc_attr($option_name . '[' . $value['id'] . '][]') . '"/>' . $desc . '</li>'; } $output .= '</ul>'; break; // Web fonts case 'web_fonts': // Replace & coz in db value sanitized with esc_attr(). $val = str_replace( '&', '&', $val ); $id = esc_attr( $value['id'] ); $data_attr = ''; if ( isset( $value['fonts'] ) ) { $value['fonts'] = in_array( $value['fonts'], array( 'safe', 'web', 'all' ) ) ? $value['fonts'] : 'all'; $data_attr .= ' data-fonts-group="' . esc_attr( $value['fonts'] ) . '"'; $fonts = optionsframework_get_fonts_options( $value['fonts'] ); if ( $val && isset( $fonts[ $val ] ) ) { $value['options'] = array( $val => $fonts[ $val ] ); } else { reset( $fonts ); $value['options'] = array( key( $fonts ) => current( $fonts ) ); } unset( $fonts ); } $output .= '<select class="of-input dt-web-fonts" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" id="' . $id . '"' . $data_attr . ' style="width: 100%;">'; foreach ( $value['options'] as $key => $option ) { $selected = ''; if ( $val != '' && $val == $key ) { $selected = ' selected="selected"'; } $output .= '<option'. $selected .' value="' . esc_attr( $key ) . '">' . esc_html( $option ) . '</option>'; } $output .= '</select>'; $output .= '<div class="dt-web-fonts-preview"><span>Silence is a true friend who never betrays.</span><span class="spinner"></span></div>'; break; case 'square_size': $id = esc_attr( $value['id'] ); $output .= ' <label for="' . $id . '-width">' . _x( 'Width', 'theme-options', 'the7mk2' ) . '</label> <input type="text" id="' . $id . '-width" class="of-input dt-square-size" name="' . esc_attr($option_name . '[' . $value['id'] . '][width]') . '" value="' . absint($val['width']) . '" /> <span>×</span> <label for="' . $id . '-height">' . _x( 'Height', 'theme-options', 'the7mk2' ) . '</label> <input type="text" id="' . $id . '-height" class="of-input dt-square-size" name="' . esc_attr($option_name . '[' . $value['id'] . '][height]') . '" value="' . absint($val['height']) . '" /> '; break; // import/export theme options case 'import_export_options': $rows = '8'; if ( isset( $value['settings']['rows'] ) ) { $custom_rows = $value['settings']['rows']; if ( is_numeric( $custom_rows ) ) { $rows = $custom_rows; } } $valid_settings = $settings; $fields_black_list = apply_filters( 'optionsframework_fields_black_list', array() ); // do not export preserved settings foreach ( $fields_black_list as $black_setting ) { if ( array_key_exists($black_setting, $valid_settings) ) { unset( $valid_settings[ $black_setting ] ); } } $val = base64_encode( serialize( $valid_settings ) ); $output .= '<textarea id="' . esc_attr( $value['id'] ) . '" class="of-input of-import-export" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" rows="' . $rows . '" onclick="this.focus();this.select()">' . esc_textarea( $val ) . '</textarea>'; break; case 'title': $output .= '<div class="of-title">'; $output .= '<h4>' . esc_html( $value['name'] ) . '</h4>'; $output .= '</div>'; break; case 'divider': $output .= '<div class="divider"></div>'; break; // Gradient case "gradient": $default_color = ''; if ( isset($value['std'][0]) ) { if ( $val != $value['std'][0] ) $default_color_1 = ' data-default-color="' .$value['std'][0] . '" '; } if ( isset($value['std'][1]) ) { if ( $val != $value['std'][1] ) $default_color_2 = ' data-default-color="' .$value['std'][1] . '" '; } $output .= '<input name="' . esc_attr( $option_name . '[' . $value['id'] . '][0]' ) . '" id="' . esc_attr( $value['id'] ) . '-0" class="of-color" type="text" value="' . esc_attr( $val[0] ) . '"' . $default_color_1 .' />'; $output .= ' '; $output .= '<input name="' . esc_attr( $option_name . '[' . $value['id'] . '][1]' ) . '" id="' . esc_attr( $value['id'] ) . '-1" class="of-color" type="text" value="' . esc_attr( $val[1] ) . '"' . $default_color_2 .' />'; break; // sortable case 'sortable': if ( !empty($value['items']) ) { $sortable_items = $value['items']; } else { $output .= '<p>No items specified. It needs array( id1 => name1, id2 => name2 ).</p>'; break; } $saved_items = isset($val) ? (array) $val : array(); $config_icon = '<span class="sortConfigIcon of-icon-edit"></span>'; if ( !empty( $value['fields'] ) && is_array($value['fields']) ) { $fields_count = 0; $output .= '<div class="sortable-fields-holder">'; foreach ( $value['fields'] as $field_id=>$field_settings ) { // classes $field_classes = 'connectedSortable content-holder'; if ( !empty( $field_settings['class'] ) ) { $field_classes .= ' ' . $field_settings['class']; } // items name $item_name = esc_attr( sprintf( '%1$s[%2$s][%3$s][]', $option_name, $value['id'], $field_id ) ); // saved items $saved_field_items = array_key_exists($field_id, $saved_items) ? $saved_items[ $field_id ] : array(); // field title if ( !empty($field_settings['title']) ) { $output .= '<div class="sortable-field-title">' . ++$fields_count . '. ' . esc_html($field_settings['title']) . '</div>'; } $output .= '<div class="sortable-field">'; // output fields $output .= '<ul class="' . esc_attr( $field_classes ) . '" data-sortable-item-name="' . $item_name . '">'; $output .='<li class="ui-dt-sb-hidden"><input type="hidden" name="' . $item_name . '" value="" /></li>'; if ( !empty($saved_field_items) && is_array( $saved_field_items ) ) { foreach ( $saved_field_items as $item_value ) { if ( ! array_key_exists( $item_value, $sortable_items ) ) { continue; } $item_settings = $sortable_items[ $item_value ]; $item_title = empty($item_settings['title']) ? 'undefined' : esc_html( $item_settings['title'] ); $item_class = empty($item_settings['class']) ? '' : ' ' . esc_attr( $item_settings['class'] ); $output .= '<li class="ui-state-default' . $item_class . '"><input type="hidden" name="' . $item_name . '" value="' . esc_attr( $item_value ) . '" /><span>' . $item_title . '</span>' . $config_icon . '</li>'; // remove item from palette list unset( $sortable_items[ $item_value ] ); } } $output .= '</ul>'; $output .= '</div>'; } $output .= '</div>'; } $output .= '<div class="sortable-items-holder">'; // palette title if ( !empty($value['palette_title']) ) { $output .= '<div class="sortable-palette-title">' . esc_html($value['palette_title']) . '</div>'; } $output .= '<ul class="connectedSortable tools-palette">'; foreach ( $sortable_items as $item_value=>$item_settings ) { $item_title = empty($item_settings['title']) ? 'undefined' : esc_html( $item_settings['title'] ); $item_class = empty($item_settings['class']) ? '' : ' ' . esc_attr( $item_settings['class'] ); $output .= '<li class="ui-state-default' . $item_class . '"><input type="hidden" value="' . esc_attr( $item_value ) . '" /><span>' . $item_title . '</span>' . $config_icon . '</li>'; } $output .= '</ul>'; $output .= '</div>'; break; // Select Box case 'pages_list': $html = wp_dropdown_pages( array( 'name' => esc_attr( $option_name . '[' . $value['id'] . ']' ), 'id' => esc_attr( $value['id'] ), 'echo' => 0, 'show_option_none' => __( '— Select —', 'the7mk2' ), 'option_none_value' => '0', 'selected' => $val, 'post_status' => 'publish,private,draft' ) ); $html = str_replace( '<select', '<select class="of-input"', $html ); $output .= $html; break; } if ( !in_array( $value['type'], $elements_without_wrap ) ) { if ( ! in_array( $value['type'], array( "checkbox", "radio" ) ) ) { $output .= '<br/>'; } $output .= '</div>'; $output .= '<div class="clear"></div>'; /** * Debug message. */ if ( $optionsframework_debug ) { $output .= '<div class="debug">'; // ID. $output .= '<div class="of-debug-field of-debug-option-id">ID: <code>' . esc_html( $value['id'] ) . '</code></div>'; // STD. $debug_std = null; if ( isset( $value['std'] ) && ! is_array( $value['std'] ) ) { $debug_std = $value['std']; } else if ( isset( $value['std'] ) && 'gradient' === $value['type'] ) { $debug_std = implode( ', ', $value['std'] ); } if ( null !== $debug_std ) { $output .= '<div class="of-debug-field of-debug-option-std">STD: <code>' . esc_html( $debug_std ) . '</code></div>'; } // EXPORT. if ( in_array( $value['id'], $do_not_export ) ) { $output .= '<div class="of-debug-field of-debug-option-exportable">EXPORTABLE: <code>no</code></div>'; } // PRESERVE. if ( in_array( $value['id'], $preserved_options ) ) { $output .= '<div class="of-debug-field of-debug-option-preserved">PRESERVED: <code>yes</code></div>'; } $output .= '</div>'; } $output .= '</div>'; if ( isset( $value['divider'] ) && in_array( $value['divider'], array( 'bottom', 'surround' ) ) ) { $output .= '<div class="divider"></div><!-- divider -->' . "\n"; } $output .= '</div>'; } if ( !empty($value['after']) ) { $output .= $value['after']; } do_action( 'options-interface-before-output', $output, $value, $val ); echo apply_filters( 'options-interface-output', $output, $value, $val ); } if ( $in_block ) { echo '</div>'."\n".'<!-- block_end -->'; } echo '</div>'; } function optionsframework_get_fonts_options( $group = 'all' ) { switch ( $group ) { case 'safe': return presscore_options_get_safe_fonts(); case 'web': return presscore_options_get_web_fonts(); case 'all': default: return presscore_options_get_all_fonts(); } } function optionsframework_fonts_ajax_response() { if ( ! check_ajax_referer( 'options-framework-ajax-fonts-nonce', false, false ) || ! current_user_can( 'edit_theme_options' ) ) { wp_send_json_error(); } $fonts = optionsframework_get_fonts_options( isset( $_POST['fontsGroup'] ) ? $_POST['fontsGroup'] : '' ); $html = ''; foreach ( $fonts as $key => $option ) { $html .= '<option value="' . esc_attr( $key ) . '">' . esc_html( $option ) . '</option>'; } wp_send_json_success( $html ); } add_action( 'wp_ajax_of_get_fonts', 'optionsframework_fonts_ajax_response' );
[+]
..
[-] index.php
[edit]
[-] options-sanitize.php
[edit]
[-] options-interface.php
[edit]
[+]
classes
[-] options-media-uploader.php
[edit]
[+]
css
[-] options-custom.php
[edit]
[-] options-framework.php
[edit]
[+]
js
[+]
images