123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- <?php
- /**
- * Generates the tabs that are used in the options menu
- */
- function optionsframework_tabs() {
- $counter = 0;
- $optionsframework_settings = get_option('options_framework_theme');
- $options = optionsframework_options();
- $menu = '';
- foreach ($options as $value) {
- $counter++;
- // Heading for Navigation
- if ($value['type'] == "heading") {
- $id = ! empty( $value['id'] ) ? $value['id'] : $value['name'];
- $jquery_click_hook = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($id) );
- $jquery_click_hook = "of-option-" . $jquery_click_hook . $counter;
- $menu .= '<a id="'. esc_attr( $jquery_click_hook ) . '-tab" class="nav-tab" title="' . esc_attr( $value['name'] ) . '" href="' . esc_attr( '#'. $jquery_click_hook ) . '">' . esc_html( $value['name'] ) . '</a>';
- }
- }
- return $menu;
- }
- /**
- * Generates the options fields that are used in the form.
- */
- function optionsframework_fields() {
- global $allowedtags;
- $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 = get_option($option_name);
- $options = optionsframework_options();
- $counter = 0;
- $menu = '';
- foreach ( $options as $value ) {
- $counter++;
- $val = '';
- $select_value = '';
- $checked = '';
- $output = '';
- // Wrap all options
- if ( ( $value['type'] != "heading" ) && ( $value['type'] != "info" ) ) {
- // Keep all ids lowercase with no spaces
- $value['id'] = preg_replace('/[^a-zA-Z0-9._\-]/', '', 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 ) . '">'."\n";
- if ( isset( $value['name'] ) ) {
- $output .= '<h4 class="heading">' . esc_html( $value['name'] ) . '</h4>' . "\n";
- }
- if ( $value['type'] != 'editor' ) {
- $output .= '<div class="option">' . "\n" . '<div class="controls">' . "\n";
- }
- else {
- $output .= '<div class="option">' . "\n" . '<div>' . "\n";
- }
- }
- // Set default value to $val
- if ( isset( $value['std'] ) ) {
- $val = $value['std'];
- }
- // If the option is already saved, ovveride $val
- if ( ( $value['type'] != 'heading' ) && ( $value['type'] != 'info') ) {
- if ( isset( $settings[($value['id'])]) ) {
- $val = $settings[($value['id'])];
- // Striping slashes of non-array options
- if ( !is_array($val) ) {
- $val = stripslashes( $val );
- }
- }
- }
- // If there is a description save it for labels
- $explain_value = '';
- if ( isset( $value['desc'] ) ) {
- $explain_value = $value['desc'];
- }
- 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;
- }
- }
- $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'] .']';
- foreach ($value['options'] as $key => $option) {
- $id = $option_name . '-' . $value['id'] .'-'. $key;
- $output .= '<input class="of-input of-radio" 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>';
- }
- break;
- // Image Selectors
- case "images":
- $name = $option_name .'['. $value['id'] .']';
- foreach ( $value['options'] as $key => $option ) {
- $selected = '';
- $checked = '';
- if ( $val != '' ) {
- if ( $val == $key ) {
- $selected = ' of-radio-img-selected';
- $checked = ' checked="checked"';
- }
- }
- $output .= '<input type="radio" id="' . esc_attr( $value['id'] .'_'. $key) . '" class="of-radio-img-radio" value="' . esc_attr( $key ) . '" name="' . esc_attr( $name ) . '" '. $checked .' />';
- $output .= '<div class="of-radio-img-label">' . esc_html( $key ) . '</div>';
- $output .= '<img src="' . esc_url( $option ) . '" alt="' . $option .'" class="of-radio-img-img' . $selected .'" onclick="document.getElementById(\''. esc_attr($value['id'] .'_'. $key) .'\').checked=true;" />';
- }
- break;
- // Checkbox
- case "checkbox":
- $output .= '<input id="' . esc_attr( $value['id'] ) . '" class="checkbox of-input" type="checkbox" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" '. checked( $val, 1, false) .' />';
- $output .= '<label class="explain" for="' . esc_attr( $value['id'] ) . '">' . wp_kses( $explain_value, $allowedtags) . '</label>';
- 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":
- $output .= optionsframework_medialibrary_uploader( $value['id'], $val, 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 - New AJAX Uploader using Media Library
- if (!isset($background['image'])) {
- $background['image'] = '';
- }
- $output .= optionsframework_medialibrary_uploader( $value['id'], $background['image'], null, '',0,'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 ) . '">' . "\n";
- if ( isset($value['name']) ) {
- $output .= '<h4 class="heading">' . esc_html( $value['name'] ) . '</h4>' . "\n";
- }
- if ( $value['desc'] ) {
- $output .= apply_filters('of_sanitize_info', $value['desc'] ) . "\n";
- }
- $output .= '</div>' . "\n";
- break;
- // Heading for Navigation
- case "heading":
- if ($counter >= 2) {
- $output .= '</div>'."\n";
- }
- $jquery_click_hook = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($value['name']) );
- $jquery_click_hook = "of-option-" . $jquery_click_hook . $counter;
- $menu .= '<a id="'. esc_attr( $jquery_click_hook ) . '-tab" class="nav-tab" title="' . esc_attr( $value['name'] ) . '" href="' . esc_attr( '#'. $jquery_click_hook ) . '">' . esc_html( $value['name'] ) . '</a>';
- $output .= '<div class="group" id="' . esc_attr( $jquery_click_hook ) . '">';
- $output .= '<h3>' . esc_html( $value['name'] ) . '</h3>' . "\n";
- break;
- }
- if ( ( $value['type'] != "heading" ) && ( $value['type'] != "info" ) ) {
- $output .= '</div>';
- if ( ( $value['type'] != "checkbox" ) && ( $value['type'] != "editor" ) ) {
- $output .= '<div class="explain">' . wp_kses( $explain_value, $allowedtags) . '</div>'."\n";
- }
- $output .= '</div></div>'."\n";
- }
- echo $output;
- }
- echo '</div>';
- }
|