WordPress.org

Plugin Directory

Changeset 614081


Ignore:
Timestamp:
10/18/12 13:56:46 (21 months ago)
Author:
eskapism
Message:

version 1.0.3. I\'m on fire\!

Location:
simple-fields
Files:
2 added
11 edited
9 copied

Legend:

Unmodified
Added
Removed
  • simple-fields/tags/1.0.3/class_simple_fields_field.php

    r609729 r614081  
    1010        $key         = "", // Unique key for this field type. just a-z please, no spaces or funky stuff. don't change this once set. 
    1111        $name        = "", // The name that users will see. 
    12         $description = "" // A longer description. Not used right now... 
     12        $description = "", // A longer description. Not used right now... 
     13        $field_url 
    1314        ; 
    1415 
     
    2021 
    2122    function __construct() { 
     23 
    2224    } 
    2325 
     
    8284     
    8385    /** 
     86     * Return a classname prefixed with simple fields and our field type, to be used in edit post screen 
     87     * Use this to generate class names to make sure they don't collide with other class names in WordPress (from other plugins for example) 
     88     * @param string $class Name of class to append 
     89     */ 
     90    function get_class_name($class) { 
     91        return "simple-fields-fieldgroups-field-type-" . $this->key . "-$class"; 
     92    } 
     93     
     94    /** 
    8495     * Possibly modify values before returning them 
    8596     * Used from functions simple_fields_value and simple_fields_values 
     
    99110    } 
    100111 
     112    /** 
     113     * @todo: fix this, i'm to stupid to get it to work atm 
     114     * Returns the URL to the directory where this field type is located 
     115     * @return string path, for example "http://playground.ep/wordpress/wp-content/plugins/field_types/" 
     116     */ 
     117     /* 
     118    function get_url() { 
     119 
     120        // This is the funky way I do it so it works with my symlinks 
     121        $classinfo = new ReflectionClass($this); 
     122        $filename = $classinfo->getFileName(); 
     123        $this->field_url = plugins_url(basename(dirname($filename))) . "/"; 
     124        sf_d( plugins_url($filename, basename(dirname($filename))) ); 
     125        sf_d( $filename ); 
     126        sf_d($classinfo); 
     127        sf_d($classinfo->getParentClass()); 
     128        return $this->field_url; 
     129         
     130    } 
     131    */ 
     132 
     133     
     134 
     135    // Add admin scripts that the the plugin uses 
     136    /* 
     137    add_action("admin_enqueue_scripts", function() use ($plugin_url) { 
     138        wp_enqueue_script( "simple-fields-googlemaps", $plugin_url . "scripts.js" ); 
     139        wp_enqueue_style( "simple-fields-googlemaps", $plugin_url . "style.css" ); 
     140    }); 
     141    */ 
     142 
    101143} // class 
  • simple-fields/tags/1.0.3/functions.php

    r611160 r614081  
    5959     
    6060                $saved_values = isset($one_field["saved_values"]) ? $one_field["saved_values"] : null; 
    61      
     61 
    6262                if ($one_field["type"] == "radiobuttons" || $one_field["type"] == "dropdown") { 
    6363                    if ($one_field["type"] == "radiobuttons") { 
     
    202202    // Remove deleted field groups 
    203203    if (!$args["include_deleted"]) { 
     204 
    204205        $arr_field_groups_to_keep = array(); 
    205206        foreach ($selected_post_connector["field_groups"] as $one_field_group_id => $one_field_group) { 
     
    234235 
    235236        // now fetch the stored values, one field at a time 
     237        // echo "<br>num_added_field_groups: $num_added_field_groups"; 
     238        // for repeatable field groups num_added_field_groups is the number of added field groups 
    236239        for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) { 
    237240 
     
    239242            foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) { 
    240243 
     244#echo "<br>num in set: $num_in_set"; 
     245#sf_d($one_field_value); 
     246 
    241247                $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}"; 
     248#echo "<br>custom field key: $custom_field_key"; 
     249 
    242250                $saved_value = get_post_meta($post_id, $custom_field_key, true); // empty string if does not exist 
    243251 
     
    262270                $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key; 
    263271 
    264             } 
    265         } 
    266  
    267     } 
     272#if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // name/string 
     273#if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // file/id 
     274    #sf_d($custom_field_key); 
     275    #echo "<br>saved value for $custom_field_key: ";var_dump($saved_value); 
     276    #sf_d($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]); 
     277#} 
     278 
     279 
     280            } 
     281        } 
     282 
     283    } 
     284    #sf_d($selected_post_connector); 
    268285    return $selected_post_connector; 
    269286} 
     
    666683    } 
    667684 
    668     $slug = sanitize_key($slug); 
     685    $unique_name = sanitize_key($unique_name); 
    669686 
    670687    $post_connector_defaults = array( 
     
    943960        if ($arr_field_slugs) { 
    944961            foreach ($arr_field_slugs as $one_of_the_comma_separated_slug) { 
     962             
     963                $one_of_the_comma_separated_slug = trim($one_of_the_comma_separated_slug); 
    945964 
    946965                $one_slug_values = simple_fields_values($one_of_the_comma_separated_slug, $post_id, $options); 
     
    980999        foreach ($one_field_group["fields"] as $one_field_group_field) {  
    9811000 
     1001//_simple_fields_fieldGroupID_23_fieldID_2_numInSet_ 
     1002#file 
     1003#sf_d($one_field_group_field); 
     1004 
    9821005            // Skip deleted fields 
    9831006            if ($one_field_group_field["deleted"]) continue; 
    9841007 
    9851008            if ($field_slug === $one_field_group_field["slug"]) { 
    986  
     1009             
     1010                // Detect options for the field with this slug 
     1011                // options are in format: 
     1012                // extended_output=1&file[extended_output]=1&file[anotherOptions]=yepp indeed 
     1013                // where the first arg is for all fields, and the one with square-brackets are for specific slugs 
     1014                $parsed_options = wp_parse_args($options);               
     1015                $parsed_options_for_this_field = array(); 
     1016 
     1017                // First check for settings saved for the field (in gui or through register_field_group) 
     1018                $field_options_key = "type_".$one_field_group_field["type"]."_options"; 
     1019                if (isset($one_field_group_field[$field_options_key])) { 
     1020                    // settings exist for this field 
     1021                    if (isset($one_field_group_field[$field_options_key]["enable_extended_return_values"]) && $one_field_group_field[$field_options_key]["enable_extended_return_values"]) { 
     1022                        $parsed_options_for_this_field["extended_return"] = 1; 
     1023                    } 
     1024 
     1025                } 
     1026                 
     1027                // check for options savailable for all fields 
     1028                // all keys for values that are not arrays. these are args that are meant for all slugs 
     1029                foreach ($parsed_options as $key => $val) { 
     1030                    if (!is_array($val)) { 
     1031                        $parsed_options_for_this_field = array_merge($parsed_options_for_this_field, array($key => $val)); 
     1032                    } 
     1033                } 
     1034 
     1035                // check for options for just this specific slug 
     1036                // if our field slug is available as a key and that key is an array = value is for this field slug 
     1037                if ( isset($parsed_options[$one_field_group_field["slug"]]) && is_array($parsed_options[$one_field_group_field["slug"]]) ) { 
     1038                    $parsed_options_for_this_field = array_merge($parsed_options_for_this_field, $parsed_options[$one_field_group_field["slug"]]); 
     1039                } 
     1040 
     1041                // that's it, we have the options that should be available for this field slug 
     1042                // echo "<br>field: " . $one_field_group_field["slug"]; 
     1043                // sf_d($parsed_options_for_this_field); 
     1044                     
    9871045                // Slug is found. Get and return values. 
    9881046                // If no value is set. Should we return string, null, or false? NULL as in "no value exists"? 
     
    9911049                // If no values just return 
    9921050                // But return an array, since that's what we except it to return 
    993                 if (!sizeof($saved_values)) return array(); 
    994  
     1051                // if (!sizeof($saved_values)) return array(); // no, don't return here. let the action further down run. 
     1052                if (!sizeof($saved_values)) $saved_values = array(); 
     1053                 
    9951054                /* 
    9961055                    For old/core/legacy fields it's like this: 
     
    10231082                    // Use the custom field object to output this value, since we can't guess how the data is supposed to be used 
    10241083                    $custom_field_type = $sf->registered_field_types[$one_field_group_field["type"]]; 
    1025                     $saved_values = $custom_field_type->return_values($saved_values, $options); 
     1084                    $saved_values = $custom_field_type->return_values($saved_values, $parsed_options_for_this_field); 
    10261085 
    10271086                } else { 
    10281087 
    10291088                    // legacy/core field type, uses plain $saved_values 
     1089                    // ...but since 1.0.3 you can use extened return 
     1090                    // $parsed_options_for_this_field 
     1091 
     1092                    // Check if field should return extended return values 
     1093                    if ( isset($parsed_options_for_this_field["extended_return"]) && (bool) $parsed_options_for_this_field["extended_return"] ) { 
     1094                        // check if current field type supports this 
     1095                        if ( in_array($one_field_group_field["type"], array("file", "radiobuttons", "dropdown", "post", "user", "taxonomy", "taxonomyterm", "date")) ) { 
     1096                             
     1097                            foreach ($saved_values as $one_saved_value_key => $one_saved_value) { 
     1098                                $saved_values[$one_saved_value_key] = $sf->get_extended_return_values_for_field($one_field_group_field, $one_saved_value); 
     1099                            } 
     1100                             
     1101                        } 
     1102                    } 
    10301103 
    10311104                } 
  • simple-fields/tags/1.0.3/readme.txt

    r611160 r614081  
    11=== Simple Fields === 
    22Contributors: eskapism, MarsApril, samface, angrycreative, earth people 
    3 Donate link: http://eskapism.se/sida/donate/ 
     3Donate link: http://simple-fields.com/about/donate/ 
    44Tags: admin, fields, custom fields, advanced custom fields, extended custom fields, field manager, attachments, text areas, input fields, tinymce, radio button, drop down, files, meta box, edit, post, post_meta, post meta, custom 
    55Requires at least: 3.3.1 
    66Tested up to: 3.4.2 
    7 Stable tag: 1.0.2 
     7Stable tag: 1.0.3 
    88 
    99Add more advanced custom fields types to your edit post page. Field can be of several types, including textarea, checkbox, radio buttons, files and color picker. 
     
    4040If you have questions/bug reports/feature requests for Simple Fields please use the WordPress [Support Forum](http://wordpress.org/tags/simple-fields?forum_id=10) or  
    4141[the new GitHub project page for Simple Fields](github.com/bonny/WordPress-Simple-Fields/). 
    42 There are also [tutorials available for Simple Fields](http://eskapism.se/code-playground/simple-fields/). 
     42There are also [tutorials available for Simple Fields](http://simple-fields.com/documentation/). 
    4343 
    4444#### Donation and more plugins 
     
    54541. Activate the plugin through the "Plugins" menu in WordPress 
    55551. Start poking around with Simple Fields under Settings > Simple Fields 
    56 1. Get help at http://eskapism.se/code-playground/simple-fields/ and ask your questions at http://wordpress.org/support/plugin/simple-fields 
     561. Get help at http://simple-fields.com/documentation/ and ask your questions at http://wordpress.org/support/plugin/simple-fields 
    57571. That's it; you know have a super cool and powerful CMS based on WordPress! 
    5858 
     
    164164 
    165165== Changelog == 
     166 
     167#### Version 1.0.3 
     168- Added: Added options for returning values as "Extended Return Values".  
     169Very useful when working with for example files:  
     170instead of just the ID of the file you get the id, the full path to the file, the dimensions if it's a image, and more.  
     171This feature is available for these field types:  
     172file, radiobutton, dropdown, post, user, taxonomy, taxonomy term and date.  
     173Please see the [documentation for Extended Return Values](http://simple-fields.com/documentation/api/extended-return-values/) for more information and examples. 
     174- Added: option to set the height for textarea fields (inlcuding HTML/TinyMCE-editor-mode) 
     175- Added: new field type: divider. Useful if you have a field group with many fields. By adding the divider field to a field group it simply created a shite space or a space with a line. It's written using the new Extension API btw, so feel free to check out the source if you want to create something similar yourself. 
     176- Changed: The debug output also includes example on how to get all field in a field group at once. 
    166177 
    167178#### Version 1.0.2 
  • simple-fields/tags/1.0.3/scripts.js

    r609729 r614081  
    159159    } 
    160160 
    161  
     161    /** 
     162     * Edit field types/fields: on field type dropdown change 
     163     */ 
    162164    $("select.simple-fields-field-type").live("change", function() { 
    163165        // look for simple-fields-field-type-options-<type> and show if 
     
    165167        var selectedFieldType = $t.val(); 
    166168        var $li = $t.closest("li"); 
    167         $li.find(".simple-fields-field-type-options").hide("slow"); 
    168         $li.find(".simple-fields-field-type-options-" + selectedFieldType).show("slow"); 
     169        $li.find(".simple-fields-field-type-options").hide(); 
     170        $li.find(".simple-fields-field-type-options-" + selectedFieldType).fadeIn("slow"); 
    169171    }); 
    170172     
  • simple-fields/tags/1.0.3/simple_fields.php

    r611264 r614081  
    22/* 
    33Plugin Name: Simple Fields 
    4 Plugin URI: http://eskapism.se/code-playground/simple-fields/ 
     4Plugin URI: http://simple-fields.com 
    55Description: Add groups of textareas, input-fields, dropdowns, radiobuttons, checkboxes and files to your edit post screen. 
    6 Version: 1.0.2 
     6Version: 1.0.3 
    77Author: Pär Thernström 
    88Author URI: http://eskapism.se/ 
     
    5252        define( "SIMPLE_FIELDS_URL", plugins_url(basename(dirname(__FILE__))). "/"); 
    5353        define( "SIMPLE_FIELDS_NAME", "Simple Fields"); 
    54         define( "SIMPLE_FIELDS_VERSION", "1.0.2"); 
     54        define( "SIMPLE_FIELDS_VERSION", "1.0.3"); 
    5555 
    5656        load_plugin_textdomain( 'simple-fields', null, basename(dirname(__FILE__)).'/languages/'); 
     
    6161        // require( dirname(__FILE__) . "/field_types/field_example.php" ); 
    6262        // require( dirname(__FILE__) . "/field_types/field_minimalistic_example.php" ); 
     63         
     64        // Load field types 
     65        require( dirname(__FILE__) . "/field_types/field_divider.php" ); 
    6366 
    6467        $this->plugin_foldername_and_filename = basename(dirname(__FILE__)) . "/" . basename(__FILE__); 
     
    527530                        $image_name = ""; 
    528531                        if ($attachment_id) { 
    529                             $image_thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ); 
    530                             $image_thumbnail = $image_thumbnail[0]; 
    531                             $image_html = "<img src='$image_thumbnail' alt='' />"; 
    532532                            $image_post = get_post($attachment_id); 
    533                             $image_name = esc_html($image_post->post_title); 
     533                            if ($image_post === NULL) { 
     534                                // hm.. image that no longer exists? trashed? 
     535                            } else { 
     536                                $image_thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ); 
     537                                $image_thumbnail = $image_thumbnail[0]; 
     538                                $image_html = "<img src='$image_thumbnail' alt='' />"; 
     539                                $image_name = esc_html($image_post->post_title); 
     540                            } 
    534541                        } 
    535542                        $class = ""; 
     
    574581                        $textarea_class = ""; 
    575582                        $textarea_class_wrapper = ""; 
    576      
     583                        $textarea_html_extra_classes = ""; 
     584                         
     585                        // default num rows to same as WordPress uses / 2 beacuse it's always been smaller 
     586                        $textarea_rows = ((int) get_option('default_post_edit_rows', 10)) / 2; 
     587                         
     588                        // if user has set custom height 
     589                        // since 1.0.3 
     590                        if (isset($textarea_options["size_height"])) { 
     591                            // size is small, medium, large 
     592                            $textarea_html_extra_classes .= " simple-fields-metabox-field-textarea-tinymce-size-{$textarea_options['size_height']} "; 
     593                            switch ($textarea_options["size_height"]) { 
     594                                case "small": 
     595                                    $textarea_rows = 3; 
     596                                    break; 
     597                                case "medium": 
     598                                    $textarea_rows = 15; 
     599                                    break; 
     600                                case "large": 
     601                                    $textarea_rows = 30; 
     602                                    break; 
     603                            } 
     604                        } 
     605                         
    577606                        echo "<label for='$field_unique_id'> " . $field["name"] . "</label>"; 
    578607                        echo $description; 
     
    588617                                } 
    589618                            } 
    590                             $args = array("textarea_name" => $field_name, "editor_class" => "simple-fields-metabox-field-textarea-tinymce"); 
     619                            $args = array( 
     620                                "textarea_name" => $field_name,  
     621                                "editor_class"  => "simple-fields-metabox-field-textarea-tinymce $textarea_html_extra_classes", 
     622                                // "teeny"      => TRUE // possibly add in future. does not actually gain/loose much using it, right?, 
     623                                "textarea_rows" => $textarea_rows, 
     624                                "media_buttons" => TRUE 
     625                            ); 
    591626                            echo "<div class='simple-fields-metabox-field-textarea-tinymce-wrapper'>"; 
    592627                            wp_editor( $saved_value, $field_unique_id, $args ); 
     
    594629                        } else { 
    595630                            echo "<div class='simple-fields-metabox-field-textarea-wrapper'>"; 
    596                             echo "<textarea class='simple-fields-metabox-field-textarea' name='$field_name' id='$field_unique_id' cols='50' rows='5'>$textarea_value_esc</textarea>"; 
     631                            echo "<textarea class='simple-fields-metabox-field-textarea' name='$field_name' id='$field_unique_id' cols='50' rows='$textarea_rows'>$textarea_value_esc</textarea>"; 
    597632                            echo "</div>"; 
    598633                        } 
     
    15371572        if ($field_type === NULL) $field_type = "text"; 
    15381573         
    1539         $field_type_textarea_option_use_html_editor = (int) @$fields[$fieldID]["type_textarea_options"]["use_html_editor"]; 
     1574        $field_type_file_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_file_options"]["enable_extended_return_values"]; 
     1575 
     1576        $field_type_user_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_user_options"]["enable_extended_return_values"]; 
     1577 
     1578        $field_type_textarea_option_use_html_editor = (int)     @$fields[$fieldID]["type_textarea_options"]["use_html_editor"]; 
     1579        $field_type_textarea_option_size_height     = (string)  @$fields[$fieldID]["type_textarea_options"]["size_height"]; 
     1580         
    15401581        $field_type_checkbox_option_checked_by_default = (int) @$fields[$fieldID]["type_checkbox_options"]["checked_by_default"]; 
     1582        $field_type_checkbox_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_checkbox_options"]["enable_extended_return_values"]; 
     1583         
    15411584        $field_type_radiobuttons_options = (array) @$fields[$fieldID]["type_radiobuttons_options"]; 
     1585        $field_type_radiobuttons_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_radiobuttons_options"]["enable_extended_return_values"]; 
     1586         
    15421587        $field_type_dropdown_options = (array) @$fields[$fieldID]["type_dropdown_options"]; 
    1543      
     1588        $field_type_dropdown_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_dropdown_options"]["enable_extended_return_values"]; 
     1589         
    15441590        $field_type_post_options = (array) @$fields[$fieldID]["type_post_options"]; 
    15451591        $field_type_post_options["enabled_post_types"] = (array) @$field_type_post_options["enabled_post_types"]; 
    1546      
     1592        $field_type_post_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_post_options"]["enable_extended_return_values"]; 
     1593 
    15471594        $field_type_taxonomy_options = (array) @$fields[$fieldID]["type_taxonomy_options"]; 
    15481595        $field_type_taxonomy_options["enabled_taxonomies"] = (array) @$field_type_taxonomy_options["enabled_taxonomies"]; 
     1596        $field_type_taxonomy_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_taxonomy_options"]["enable_extended_return_values"]; 
    15491597     
    15501598        $field_type_date_options = (array) @$fields[$fieldID]["type_date_options"]; 
    15511599        $field_type_date_option_use_time = @$field_type_date_options["use_time"]; 
     1600        $field_type_date_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_date_options"]["enable_extended_return_values"]; 
    15521601     
    15531602        $field_type_taxonomyterm_options = (array) @$fields[$fieldID]["type_taxonomyterm_options"]; 
    15541603        $field_type_taxonomyterm_options["enabled_taxonomy"] = (string) @$field_type_taxonomyterm_options["enabled_taxonomy"]; 
     1604        $field_type_taxonomyterm_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_date_options"]["enable_taxonomyterm_return_values"]; 
    15551605     
    15561606        // Options saved for this field 
     
    15981648            if ($field_options_output) { 
    15991649                $field_options_output = " 
    1600                     <fieldset>  
    1601                         <legend>Options</legend> 
     1650                    <!-- <fieldset>  
     1651                        <legend>Options</legend> --> 
    16021652                        $field_options_output 
    1603                     </fieldset> 
     1653                    <!-- </fieldset> --> 
    16041654                "; 
    16051655                 
     
    16711721            $registred_field_types_output_options 
    16721722 
     1723            <!-- options for field type  textarea --> 
    16731724            <div class='simple-fields-field-group-one-field-row " . (($field_type=="textarea") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-textarea'> 
    1674                 <input type='checkbox' name='field[{$fieldID}][type_textarea_options][use_html_editor]' " . (($field_type_textarea_option_use_html_editor) ? " checked='checked'" : "") . " value='1' /> ".__('Use HTML-editor', 'simple-fields')." 
     1725                <div class='simple-fields-field-group-one-field-row'> 
     1726                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     1727                        <label>Height</label> 
     1728                    </div> 
     1729                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     1730                        <input " . ((empty($field_type_textarea_option_size_height) || $field_type_textarea_option_size_height == "default") ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='default'> " . _x('Default', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1731                        <input " . ($field_type_textarea_option_size_height == "small" ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='small'> " . _x('Small', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1732                        <input " . ($field_type_textarea_option_size_height == "medium" ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='medium'> " . _x('Medium', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1733                        <input " . ($field_type_textarea_option_size_height == "large" ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='large'> " . _x('Large', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1734                    </div> 
     1735                </div> 
     1736 
     1737                <div class='simple-fields-field-group-one-field-row'> 
     1738                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     1739                    </div> 
     1740                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     1741                        <input type='checkbox' name='field[{$fieldID}][type_textarea_options][use_html_editor]' " . (($field_type_textarea_option_use_html_editor) ? " checked='checked'" : "") . " value='1' /> ".__('Use HTML-editor', 'simple-fields')." 
     1742                    </div> 
     1743                </div> 
     1744 
    16751745            </div> 
    16761746            "; 
    1677              
    1678             // date 
     1747 
     1748            // User 
     1749            $out .= "<div class='simple-fields-field-group-one-field-row " . (($field_type=="user") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-user'>"; 
     1750            $out .= "   <div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1751            $out .= "   <div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1752            $out .= "       <p><input type='checkbox' name='field[{$fieldID}][type_user_options][enable_extended_return_values]' " . (($field_type_user_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1753            $out .=         __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1754            $out .= "       <p class='description'>" . __('Return an array with the name, email and full WP_User-object of the selected user, instead of just the user ID.', 'simple-fields') . "</p>"; 
     1755            $out .= "   </div>"; 
     1756            $out .= "</div>"; 
     1757 
     1758            // File 
     1759            $out .= "<div class='simple-fields-field-group-one-field-row " . (($field_type=="file") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-file'>"; 
     1760            $out .= "   <div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1761            $out .= "   <div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1762            $out .= "       <p><input type='checkbox' name='field[{$fieldID}][type_file_options][enable_extended_return_values]' " . (($field_type_file_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1763            $out .=         __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1764            $out .= "       <p class='description'>" . __('Return an array with attachment title, path, etc., instead of just a post ID.', 'simple-fields') . "</p>"; 
     1765            $out .= "   </div>"; 
     1766            $out .= "</div>"; 
     1767 
     1768            // Date 
    16791769            $out .= "<div class='" . (($field_type=="date") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-date'>"; 
    1680             $out .= "<input type='checkbox' name='field[{$fieldID}][type_date_options][use_time]' " . (($field_type_date_option_use_time) ? " checked='checked'" : "") . " value='1' /> ".__('Also show time', 'simple-fields'); 
     1770                 
     1771                $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1772                    $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1773                    $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1774                    $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_date_options][use_time]' " . (($field_type_date_option_use_time) ? " checked='checked'" : "") . " value='1' /> ".__('Also show time', 'simple-fields') . "</p>"; 
     1775                    $out .= "</div>"; 
     1776                $out .= "</div>"; 
     1777     
     1778                $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1779                    $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1780                    $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1781                    $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_date_options][enable_extended_return_values]' " . (($field_type_date_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1782                    $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1783                    $out .= "   <p class='description'>" . __('Return an array with the selected date as a unix timestamp and as the date format set in WordPress settings.', 'simple-fields') . "</p>"; 
     1784                    $out .= "</div>"; 
     1785                $out .= "   </div>"; 
     1786 
    16811787            $out .= "</div>"; 
    16821788         
     
    16851791            $out .= "<div class='" . (($field_type=="post") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-post'>"; 
    16861792            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1793            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    16871794            $out .= sprintf("<label>%s</label>", __('Post types to select from', 'simple-fields')); 
     1795            $out .= "</div>"; 
    16881796            //$out .= sprintf("<select name='%s'>", "field[$fieldID][type_post_options][post_type]"); 
    16891797            //$out .= sprintf("<option %s value='%s'>%s</option>", (empty($field_type_post_options["post_type"]) ? " selected='selected' " : "") ,"", "Any"); 
    16901798     
    16911799            // list all post types in checkboxes 
     1800            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
    16921801            $post_types = get_post_types(NULL, "objects"); 
    16931802            $loopnum = 0; 
    16941803            foreach ($post_types as $one_post_type) { 
    1695             // skip some built in types 
    1696             if (in_array($one_post_type->name, array("attachment", "revision", "nav_menu_item"))) { 
    1697                 continue; 
    1698             } 
    1699             $input_name = "field[{$fieldID}][type_post_options][enabled_post_types][]"; 
    1700             $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s</input>",  
    1701                                 ($loopnum>0 ? "<br>" : ""),  
    1702                                 $input_name, 
    1703                                 ((in_array($one_post_type->name, $field_type_post_options["enabled_post_types"])) ? " checked='checked' " : ""),  
    1704                                 $one_post_type->name,  
    1705                                 $one_post_type->labels->name . " ($one_post_type->name)" 
    1706                             ); 
    1707             $loopnum++; 
    1708         } 
     1804                // skip some built in types 
     1805                if (in_array($one_post_type->name, array("attachment", "revision", "nav_menu_item"))) { 
     1806                    continue; 
     1807                } 
     1808                $input_name = "field[{$fieldID}][type_post_options][enabled_post_types][]"; 
     1809                $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s</input>",  
     1810                                    ($loopnum>0 ? "<br>" : ""),  
     1811                                    $input_name, 
     1812                                    ((in_array($one_post_type->name, $field_type_post_options["enabled_post_types"])) ? " checked='checked' " : ""),  
     1813                                    $one_post_type->name,  
     1814                                    $one_post_type->labels->name . " ($one_post_type->name)" 
     1815                                ); 
     1816                $loopnum++; 
     1817            } 
    17091818            $out .= "</div>"; 
     1819            $out .= "</div>"; 
    17101820     
    17111821            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1822            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    17121823            $out .= "<label>Additional arguments</label>"; 
    1713             $out .= sprintf("<input type='text' name='%s' value='%s' />", "field[$fieldID][type_post_options][additional_arguments]", @$field_type_post_options["additional_arguments"]); 
     1824            $out .= "</div>"; 
     1825            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1826            $out .= sprintf("<input class='regular-text' type='text' name='%s' value='%s' />", "field[$fieldID][type_post_options][additional_arguments]", @$field_type_post_options["additional_arguments"]); 
    17141827            $out .= sprintf("<br><span class='description'>Here you can <a href='http://codex.wordpress.org/How_to_Pass_Tag_Parameters#Tags_with_query-string-style_parameters'>pass your own parameters</a> to <a href='http://codex.wordpress.org/Class_Reference/WP_Query'>WP_Query</a>.</span>"); 
     1828            $out .= "</div>"; // second 
    17151829            $out .= "</div>"; 
     1830 
     1831            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1832                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1833                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1834                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_post_options][enable_extended_return_values]' " . (($field_type_post_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1835                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1836                $out .= "   <p class='description'>" . __('Return an array with the title, permalink, and complete post object of the selected post, instead of just the ID.', 'simple-fields') . "</p>"; 
     1837                $out .= "</div>"; 
     1838            $out .= "   </div>"; 
     1839 
    17161840            $out .= "</div>"; // whole divs that shows/hides 
    17171841     
     
    17191843            // connect taxonomy - select taxonomies 
    17201844            $out .= "<div class='" . (($field_type=="taxonomy") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-taxonomy'>"; 
     1845            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1846            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    17211847            $out .= sprintf("<label>%s</label>", __('Taxonomies to show in dropdown', 'simple-fields')); 
     1848            $out .= "</div>"; // col first 
     1849             
     1850            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
    17221851            $taxonomies = get_taxonomies(NULL, "objects"); 
    17231852            $loopnum = 0; 
    17241853            foreach ($taxonomies as $one_tax) { 
    1725             // skip some built in types 
    1726             if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
    1727                 continue; 
    1728             } 
    1729             $input_name = "field[{$fieldID}][type_taxonomy_options][enabled_taxonomies][]"; 
    1730             $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s",  
    1731                                 ($loopnum>0 ? "<br>" : ""),  
    1732                                 $input_name,  
    1733                                 ((in_array($one_tax->name, $field_type_taxonomy_options["enabled_taxonomies"])) ? " checked='checked' " : ""),  
    1734                                 $one_tax->name,  
    1735                                 $one_tax->labels->name . " ($one_tax->name)" 
    1736                             ); 
    1737             $loopnum++; 
    1738         } 
     1854                // skip some built in types 
     1855                if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
     1856                    continue; 
     1857                } 
     1858                $input_name = "field[{$fieldID}][type_taxonomy_options][enabled_taxonomies][]"; 
     1859                $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s",  
     1860                                    ($loopnum>0 ? "<br>" : ""),  
     1861                                    $input_name,  
     1862                                    ((in_array($one_tax->name, $field_type_taxonomy_options["enabled_taxonomies"])) ? " checked='checked' " : ""),  
     1863                                    $one_tax->name,  
     1864                                    $one_tax->labels->name . " ($one_tax->name)" 
     1865                                ); 
     1866                $loopnum++; 
     1867            } 
     1868            $out .= "</div>"; // second 
     1869            $out .= "</div>"; // row 
     1870 
     1871            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1872                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1873                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1874                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_taxonomy_options][enable_extended_return_values]' " . (($field_type_taxonomy_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1875                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1876                $out .= "   <p class='description'>" . __('Return an array with name and complete taxonomy object of the selected taxonomy, instead of just the ID.', 'simple-fields') . "</p>"; 
     1877                $out .= "</div>"; 
     1878            $out .= "   </div>"; 
     1879 
    17391880            $out .= "</div>"; 
     1881             
    17401882     
    17411883            // taxonomyterm - select taxonomies, like above 
    17421884            $out .= "<div class='" . (($field_type=="taxonomyterm") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-taxonomyterm'>"; 
    17431885            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1886            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    17441887            $out .= sprintf("<label>%s</label>", __('Taxonomy to select terms from', 'simple-fields')); 
     1888            $out .= "</div>"; 
     1889             
     1890            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
    17451891            $taxonomies = get_taxonomies(NULL, "objects"); 
    17461892            $loopnum = 0; 
    17471893            foreach ($taxonomies as $one_tax) { 
    1748             // skip some built in types 
    1749             if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
    1750                 continue; 
    1751             } 
    1752             $input_name = "field[{$fieldID}][type_taxonomyterm_options][enabled_taxonomy]"; 
    1753             $out .= sprintf("%s<input name='%s' type='radio' %s value='%s'> %s",  
    1754                                 ($loopnum>0 ? "<br>" : ""),  
    1755                                 $input_name,  
    1756                                 ($one_tax->name == $field_type_taxonomyterm_options["enabled_taxonomy"]) ? " checked='checked' " : "",  
    1757                                 $one_tax->name,  
    1758                                 $one_tax->labels->name . " ($one_tax->name)" 
    1759                             ); 
    1760             $loopnum++; 
    1761         } 
     1894                // skip some built in types 
     1895                if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
     1896                    continue; 
     1897                } 
     1898                $input_name = "field[{$fieldID}][type_taxonomyterm_options][enabled_taxonomy]"; 
     1899                $out .= sprintf("%s<input name='%s' type='radio' %s value='%s'> %s",  
     1900                                    ($loopnum>0 ? "<br>" : ""),  
     1901                                    $input_name,  
     1902                                    ($one_tax->name == $field_type_taxonomyterm_options["enabled_taxonomy"]) ? " checked='checked' " : "",  
     1903                                    $one_tax->name,  
     1904                                    $one_tax->labels->name . " ($one_tax->name)" 
     1905                                ); 
     1906                $loopnum++; 
     1907            } 
     1908            $out .= "</div>"; // second 
    17621909            $out .= "</div>"; 
    17631910             
    17641911            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
    1765             $out .= "<label>Additional arguments</label>"; 
    1766             $out .= sprintf("<input type='text' name='%s' value='%s' />", "field[$fieldID][type_taxonomyterm_options][additional_arguments]", @$field_type_taxonomyterm_options["additional_arguments"]); 
     1912            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
     1913            $out .= "<label>".__("Additional arguments", "simple-fields")."</label>"; 
     1914            $out .= "</div>"; 
     1915            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1916            $out .= sprintf("<input class='regular-text' type='text' name='%s' value='%s' />", "field[$fieldID][type_taxonomyterm_options][additional_arguments]", @$field_type_taxonomyterm_options["additional_arguments"]); 
    17671917            $out .= sprintf("<br><span class='description'>Here you can <a href='http://codex.wordpress.org/How_to_Pass_Tag_Parameters#Tags_with_query-string-style_parameters'>pass your own parameters</a> to <a href='http://codex.wordpress.org/Function_Reference/get_terms#Parameters'>get_terms()</a>.</span>"); 
     1918            $out .= "</div>"; // second 
    17681919            $out .= "</div>"; 
     1920             
     1921            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1922                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1923                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1924                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_taxonomyterm_options][enable_extended_return_values]' " . (($field_type_taxonomyterm_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1925                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1926                $out .= "   <p class='description'>" . __('Return a multi dimensional array with all the taxonomy terms objects, instead of just the IDs of the terms.', 'simple-fields') . "</p>"; 
     1927                $out .= "</div>"; 
     1928            $out .= "   </div>"; 
    17691929             
    17701930            $out .= "</div>"; 
     
    17741934            $radio_buttons_highest_id = 0; 
    17751935            if ($field_type_radiobuttons_options) { 
    1776             foreach ($field_type_radiobuttons_options as $key => $val) { 
    1777                 if (strpos($key, "radiobutton_num_") !== false && $val["deleted"] != true) { 
    1778                     // found one button in format radiobutton_num_0 
    1779                     $radiobutton_num = str_replace("radiobutton_num_", "", $key); 
    1780                     if ($radiobutton_num > $radio_buttons_highest_id) { 
    1781                         $radio_buttons_highest_id = $radiobutton_num; 
     1936                foreach ($field_type_radiobuttons_options as $key => $val) { 
     1937                    if (strpos($key, "radiobutton_num_") !== false && $val["deleted"] != true) { 
     1938                        // found one button in format radiobutton_num_0 
     1939                        $radiobutton_num = str_replace("radiobutton_num_", "", $key); 
     1940                        if ($radiobutton_num > $radio_buttons_highest_id) { 
     1941                            $radio_buttons_highest_id = $radiobutton_num; 
     1942                        } 
     1943                        $radiobutton_val = esc_html($val["value"]); 
     1944                        $checked = ($key == @$field_type_radiobuttons_options["checked_by_default_num"]) ? " checked='checked' " : ""; 
     1945                        $radio_buttons_added .= " 
     1946                            <li> 
     1947                                <div class='simple-fields-field-type-options-radiobutton-handle'></div> 
     1948                                <input class='regular-text' value='$radiobutton_val' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][value]' type='text' /> 
     1949                                <input class='simple-fields-field-type-options-radiobutton-checked-by-default-values' type='radio' name='field[$fieldID][type_radiobuttons_options][checked_by_default_num]' value='radiobutton_num_{$radiobutton_num}' {$checked} /> 
     1950                                <input class='simple-fields-field-type-options-radiobutton-deleted' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][deleted]' type='hidden' value='0' /> 
     1951                                <a href='#' class='simple-fields-field-type-options-radiobutton-delete'>Delete</a> 
     1952                            </li>"; 
    17821953                    } 
    1783                     $radiobutton_val = esc_html($val["value"]); 
    1784                     $checked = ($key == @$field_type_radiobuttons_options["checked_by_default_num"]) ? " checked='checked' " : ""; 
    1785                     $radio_buttons_added .= " 
    1786                         <li> 
    1787                             <div class='simple-fields-field-type-options-radiobutton-handle'></div> 
    1788                             <input class='regular-text' value='$radiobutton_val' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][value]' type='text' /> 
    1789                             <input class='simple-fields-field-type-options-radiobutton-checked-by-default-values' type='radio' name='field[$fieldID][type_radiobuttons_options][checked_by_default_num]' value='radiobutton_num_{$radiobutton_num}' {$checked} /> 
    1790                             <input class='simple-fields-field-type-options-radiobutton-deleted' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][deleted]' type='hidden' value='0' /> 
    1791                             <a href='#' class='simple-fields-field-type-options-radiobutton-delete'>Delete</a> 
    1792                         </li>"; 
    17931954                } 
    17941955            } 
    1795         } 
    17961956            $radio_buttons_highest_id++; 
     1957            $out .= "<div class='" . (($field_type=="radiobuttons") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-radiobuttons'>"; 
     1958 
     1959            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1960                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1961                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1962                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_radiobuttons_options][enable_extended_return_values]' " . (($field_type_radiobuttons_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1963                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1964                $out .= "   <p class='description'>" . __('Return an array with the value of the selected radiobutton + the values of the non-selected radiobuttons.', 'simple-fields') . "</p>"; 
     1965                $out .= "</div>"; 
     1966            $out .= "   </div>"; 
     1967 
    17971968            $out .= " 
    1798                 <div class='" . (($field_type=="radiobuttons") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-radiobuttons'> 
    1799                     <div>Added radio buttons</div> 
    1800                     <div class='simple-fields-field-type-options-radiobutton-checked-by-default'>".__('Default', 'simple-fields')."</div> 
    1801                     <ul class='simple-fields-field-type-options-radiobutton-values-added'> 
    1802                         $radio_buttons_added 
    1803                     </ul> 
    1804                     <div><a class='simple-fields-field-type-options-radiobutton-values-add' href='#'>+ ".__('Add radio button', 'simple-fields')."</a></div> 
    1805                     <input type='hidden' name='' class='simple-fields-field-group-one-field-radiobuttons-highest-id' value='{$radio_buttons_highest_id}' /> 
     1969                <div class='simple-fields-field-group-one-field-row simple-fields-field-group-one-field-row-radiobuttons-values'> 
     1970 
     1971                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     1972                        <div>" . __("Values", "simple-fields") . "</div> 
     1973                    </div> 
     1974                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     1975                        <div class='simple-fields-field-type-options-radiobutton-checked-by-default'>".__('Default', 'simple-fields')."</div> 
     1976                        <ul class='simple-fields-field-type-options-radiobutton-values-added'> 
     1977                            $radio_buttons_added 
     1978                        </ul> 
     1979                        <div><a class='simple-fields-field-type-options-radiobutton-values-add' href='#'>+ ".__('Add radio button', 'simple-fields')."</a></div> 
     1980                        <input type='hidden' name='' class='simple-fields-field-group-one-field-radiobuttons-highest-id' value='{$radio_buttons_highest_id}' /> 
     1981                    </div><!-- // second --> 
     1982                 
    18061983                </div> 
     1984            </div><!-- show/hide div --> 
    18071985            "; 
    18081986            // end radiobuttons 
     
    18201998            $dropdown_values_highest_id = 0; 
    18211999            if ($field_type_dropdown_options) { 
    1822             foreach ($field_type_dropdown_options as $key => $val) { 
    1823                 if (strpos($key, "dropdown_num_") !== false && $val["deleted"] != true) { 
    1824                     // found one button in format radiobutton_num_0 
    1825                     $dropdown_num = str_replace("dropdown_num_", "", $key); 
    1826                     if ($dropdown_num > $dropdown_values_highest_id) { 
    1827                         $dropdown_values_highest_id = $dropdown_num; 
     2000                foreach ($field_type_dropdown_options as $key => $val) { 
     2001                    if (strpos($key, "dropdown_num_") !== false && $val["deleted"] != true) { 
     2002                        // found one button in format radiobutton_num_0 
     2003                        $dropdown_num = str_replace("dropdown_num_", "", $key); 
     2004                        if ($dropdown_num > $dropdown_values_highest_id) { 
     2005                            $dropdown_values_highest_id = $dropdown_num; 
     2006                        } 
     2007                        $dropdown_val = esc_html($val["value"]); 
     2008                        $dropdown_values_added .= " 
     2009                            <li> 
     2010                                <div class='simple-fields-field-type-options-dropdown-handle'></div> 
     2011                                <input class='regular-text' value='$dropdown_val' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][value]' type='text' /> 
     2012                                <input class='simple-fields-field-type-options-dropdown-deleted' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][deleted]' type='hidden' value='0' /> 
     2013                                <a href='#' class='simple-fields-field-type-options-dropdown-delete'>".__('Delete', 'simple-fields')."</a> 
     2014                            </li>"; 
    18282015                    } 
    1829                     $dropdown_val = esc_html($val["value"]); 
    1830                     $dropdown_values_added .= " 
    1831                         <li> 
    1832                             <div class='simple-fields-field-type-options-dropdown-handle'></div> 
    1833                             <input class='regular-text' value='$dropdown_val' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][value]' type='text' /> 
    1834                             <input class='simple-fields-field-type-options-dropdown-deleted' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][deleted]' type='hidden' value='0' /> 
    1835                             <a href='#' class='simple-fields-field-type-options-dropdown-delete'>".__('Delete', 'simple-fields')."</a> 
    1836                         </li>"; 
    18372016                } 
    18382017            } 
    1839         } 
    18402018            $dropdown_values_highest_id++; 
     2019            $out .= "<div class='" . (($field_type=="dropdown") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-dropdown'>"; 
     2020 
     2021            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     2022                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     2023                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     2024                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_dropdown_options][enable_extended_return_values]' " . (($field_type_dropdown_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     2025                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     2026                $out .= "   <p class='description'>" . __('Return an array with the value of the selected item in the dropdown + the values of the non-selected items.', 'simple-fields') . "</p>"; 
     2027                $out .= "</div>"; 
     2028            $out .= "   </div>"; 
     2029 
    18412030            $out .= " 
    1842                 <div class='" . (($field_type=="dropdown") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-dropdown'> 
    1843                     <div>".__('Added dropdown values', 'simple-fields')."</div> 
    1844                     <ul class='simple-fields-field-type-options-dropdown-values-added'> 
    1845                         $dropdown_values_added 
    1846                     </ul> 
    1847                     <div><a class='simple-fields-field-type-options-dropdown-values-add' href='#'>+ ".__('Add dropdown value', 'simple-fields')."</a></div> 
    1848                     <input type='hidden' name='' class='simple-fields-field-group-one-field-dropdown-highest-id' value='{$dropdown_values_highest_id}' /> 
     2031                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     2032                        <p>".__('Values', 'simple-fields')."</p> 
     2033                    </div> 
     2034                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     2035                        <ul class='simple-fields-field-type-options-dropdown-values-added'> 
     2036                            $dropdown_values_added 
     2037                        </ul> 
     2038                        <div><a class='simple-fields-field-type-options-dropdown-values-add' href='#'>+ ".__('Add dropdown value', 'simple-fields')."</a></div> 
     2039                        <input type='hidden' name='' class='simple-fields-field-group-one-field-dropdown-highest-id' value='{$dropdown_values_highest_id}' /> 
     2040                    </div> 
    18492041                </div> 
    18502042            "; 
     
    27432935        $field_count = 0; 
    27442936         
    2745         $post_connector_with_values = simple_fields_get_all_fields_and_values_for_post(get_the_ID()); 
     2937        $post_connector_with_values = simple_fields_get_all_fields_and_values_for_post(get_the_ID(), "include_deleted=0"); 
    27462938        if ($post_connector_with_values) { 
     2939 
    27472940            foreach ($post_connector_with_values["field_groups"] as $one_field_group) { 
     2941 
    27482942                if ($one_field_group["deleted"]) continue; 
     2943                 
     2944                $output_all .= "<div style='font-weight:bold;margin:1em 0 0 0;'>"; 
     2945                $str_is_repeatable = $one_field_group["repeatable"] ? __(" (Repeatable)", "simple-fields") : ""; 
     2946                $output_all .= sprintf( 
     2947                    __('Fieldgroup %1$s %2$s', "simple-fields"), 
     2948                    $one_field_group["name"], 
     2949                    $str_is_repeatable 
     2950                ); 
     2951                $output_all .= "</div>"; 
     2952                 
     2953                $str_all_group_fields = ""; 
    27492954                foreach ($one_field_group["fields"] as $one_field) { 
     2955 
    27502956                    if ($one_field["deleted"]) continue; 
     2957 
    27512958                    $field_count++; 
    27522959                    $content = ""; 
    2753                     $content .= "<ul style='background:#eee;padding:.5em;'>"; 
    2754                     $content .= "<li><b>" . $one_field["name"] . "</b><ul>"; 
    2755                     $content .= "<li>Type <b>" . $one_field["type"] . "</b>"; 
     2960                    $content .= "<ul style='background:#eee;padding:.5em;margin:0;display:block;'>"; 
     2961                    $content .= "<li>Field <b>" . $one_field["name"] . "</b>"; 
     2962                    $content .= ", type <b>" . $one_field["type"] . "</b>"; 
     2963 
    27562964                    if (isset($one_field["slug"])) { 
    2757                         $content .=  "<li>Slug <b>" . $one_field["slug"] . "</b>"; 
    2758                          
    2759                         $content .= "<li>Use <code><b>simple_fields_values('".$one_field["slug"]."')</b></code> to get:"; 
     2965                         
     2966                        $content .=  ", slug <b>" . $one_field["slug"] . "</b>"; 
     2967                        $str_all_group_fields .= $one_field["slug"] . ","; 
     2968                         
     2969                        if ($one_field_group["repeatable"]) { 
     2970                            $content .= "<br>Use <code><b>simple_fields_values('".$one_field["slug"]."')</b></code> to get:"; 
     2971                            ob_start(); 
     2972                            sf_d( simple_fields_values($one_field["slug"]) ); 
     2973                            $content .= ob_get_clean(); 
     2974                        } else {         
     2975                            $content .= "<br>Use <code><b>simple_fields_value('".$one_field["slug"]."')</b></code> to get:"; 
     2976                            ob_start(); 
     2977                            sf_d( simple_fields_value($one_field["slug"]) ); 
     2978                            $content .= ob_get_clean(); 
     2979                        } 
     2980                         
     2981                    } else { 
     2982                        $content .= "<br>No slug for this field found (probably old field that has not been edited and saved)."; 
     2983                    } 
     2984                    $content .= "</ul>"; 
     2985                    $output_all .= $content; 
     2986                } 
     2987 
     2988                // Show example how to get all fields in one shot 
     2989                // But only show if field has more than one field, otherwise it's kinda not useful 
     2990                if ( sizeof($one_field_group["fields"]) > 1 ) { 
     2991                    $str_all_group_fields = preg_replace('!,$!', '', $str_all_group_fields); 
     2992                    $output_all .= "<ul style='background:#eee;padding:.5em;margin:0;display:block;'>"; 
     2993                    if ($one_field_group["repeatable"]) { 
     2994                        $content = "<li>Get all fields at once: use <code><b>simple_fields_values('".$str_all_group_fields."')</b></code> to get:"; 
    27602995                        ob_start(); 
    2761                         sf_d( simple_fields_values($one_field["slug"]) ); 
    2762                         $content .= ob_get_clean(); 
    2763          
    2764                         $content .= "<li>Use <code><b>simple_fields_value('".$one_field["slug"]."')</b></code> to get:"; 
    2765                         ob_start(); 
    2766                         sf_d( simple_fields_value($one_field["slug"]) ); 
     2996                        sf_d( simple_fields_values($str_all_group_fields) ); 
    27672997                        $content .= ob_get_clean(); 
    27682998                    } else { 
    2769                         $content .= "<li>No slug for this field found (probably old field that has not been edited and saved)."; 
     2999                        $content = "<li>Get all fields at once: use <code><b>simple_fields_value('".$str_all_group_fields."')</b></code> to get:"; 
     3000                        ob_start(); 
     3001                        sf_d( simple_fields_value($str_all_group_fields) ); 
     3002                        $content .= ob_get_clean(); 
    27703003                    } 
    2771                     $content .= "</ul></ul>"; 
    27723004                    $output_all .= $content; 
     3005                    $output_all .= "</ul>"; 
    27733006                } 
    2774             } 
     3007             
     3008            } // for each field group 
    27753009        } 
    27763010         
    27773011        if ($output_all) { 
     3012            $str_show_fields = __("Show fields.", "simple-fields"); 
     3013            $str_hide_fields = __("Hide fields.", "simple-fields"); 
    27783014            ?> 
    27793015            <script> 
     
    27813017                var $t = jQuery(t); 
    27823018                var $div_wrap = $t.closest("div.simple-fields-post-debug-wrap"); 
    2783                 $div_wrap.find("div.simple-fields-post-debug-content").toggle("fast"); 
     3019                var debug_content = $div_wrap.find("div.simple-fields-post-debug-content"); 
     3020                debug_content.toggle(); 
     3021                if (debug_content.is(":visible")) { 
     3022                    $t.text("<?php echo $str_hide_fields ?>"); 
     3023                } else { 
     3024                    $t.text("<?php echo $str_show_fields ?>"); 
     3025                } 
    27843026                return false; 
    27853027            } 
    27863028            </script> 
    27873029            <?php 
    2788              
    27893030            $output_all = ' 
    2790                 <div class="simple-fields-post-debug-wrap"> 
    2791                     This post has ' . $field_count . ' Simple Fields-fields attached. <a href="#" onclick="return simple_fields_post_debug_show_hide(this);">Show fields.</a> 
     3031                <div class="simple-fields-post-debug-wrap" style="display:block;margin:0;padding:0;"> 
     3032                    <p style="margin:0;padding:0;display:block;">This post has ' . $field_count . ' Simple Fields-fields attached. <a href="#" onclick="return simple_fields_post_debug_show_hide(this);">'.$str_show_fields.'</a></p> 
    27923033                    <div class="simple-fields-post-debug-content" style="display:none;">'.$output_all.'</div> 
    27933034                </div> 
    27943035                '; 
    27953036        } 
    2796          
     3037        // if a field has the slug caption the output will be [caption] and then it will crash with some shortcodes, so we try to fix that here 
     3038        $output_all = str_replace("[", "&#91;", $output_all); 
     3039        $output_all = str_replace("]", "&#93;", $output_all); 
    27973040        return $the_content . $output_all; 
    27983041    } 
    27993042 
     3043    /** 
     3044     * Retrieve and return extended return values for a field type 
     3045     */ 
     3046    function get_extended_return_values_for_field($field, $field_value) { 
     3047        /*           
     3048        radiobuttons 
     3049        file 
     3050        dropdown 
     3051        post 
     3052        user 
     3053        */ 
     3054 
     3055        $return_field_value = array(); 
     3056 
     3057        if ("file" === $field["type"]) { 
     3058 
     3059            // field is of type file 
     3060            // lets get more info about that file then, so we have most useful stuff in an array – hooray! 
     3061             
     3062            if (isset($field_value) && is_numeric($field_value)) { 
     3063                $file_id                             = (int) $field_value; 
     3064                $return_field_value["id"]            = $file_id; 
     3065                $return_field_value["is_image"]      = wp_attachment_is_image( $file_id ); 
     3066                $return_field_value["url"]           = wp_get_attachment_url( $file_id ); 
     3067                $return_field_value["mime"]          = get_post_mime_type( $file_id ); 
     3068 
     3069                // generate html for all registered image sizes 
     3070                $arr_sizes = array_merge(array("full"), get_intermediate_image_sizes()); 
     3071                $return_field_value["link"]      = array(); 
     3072                $return_field_value["image"]     = array(); 
     3073                $return_field_value["image_src"] = array(); 
     3074                foreach ($arr_sizes as $size_key) { 
     3075                    $return_field_value["link"][$size_key]      = wp_get_attachment_link( $file_id, $size_key ); 
     3076                    $return_field_value["image"][$size_key]     = wp_get_attachment_image( $file_id, $size_key ); 
     3077                    $return_field_value["image_src"][$size_key] = wp_get_attachment_image_src( $file_id, $size_key ); 
     3078                } 
     3079             
     3080                $return_field_value["metadata"] = wp_get_attachment_metadata( $file_id ); 
     3081                $return_field_value["post"] = get_post( $file_id ); 
     3082                 
     3083            } 
     3084 
     3085        } else if ("radiobuttons" === $field["type"]) { 
     3086             
     3087            // if radiobutton: get all values and mark which one is the selected 
     3088 
     3089            $type_radiobuttons_options = $field["type_radiobuttons_options"]; 
     3090 
     3091            $return_field_value["selected_value"]       = FALSE; 
     3092            $return_field_value["selected_radiobutton"] = array(); 
     3093            $return_field_value["radiobuttons"]         = array(); 
     3094 
     3095            foreach ($type_radiobuttons_options as $button_key => $button_value) { 
     3096             
     3097                if ($button_key == "checked_by_default_num") continue; 
     3098                 
     3099                if ($button_value["deleted"]) continue; 
     3100                 
     3101                $return_field_value["radiobuttons"][] = array( 
     3102                    "value"       => $button_value["value"], 
     3103                    "key"         => $button_key, 
     3104                    "is_selected" => ($field_value === $button_key) 
     3105                ); 
     3106                if ($field_value === $button_key) { 
     3107                    $return_field_value["selected_radiobutton"] = array( 
     3108                        "value"       => $button_value["value"], 
     3109                        "key"         => $button_key, 
     3110                        "is_selected" => TRUE 
     3111                    ); 
     3112                    $return_field_value["selected_value"] = $button_value["value"]; 
     3113                } 
     3114            } 
     3115                         
     3116        } else if ("dropdown" === $field["type"]) { 
     3117             
     3118            $type_dropdown_options = $field["type_dropdown_options"]; 
     3119 
     3120            $return_field_value["selected_value"]   = FALSE; 
     3121            $return_field_value["selected_option"]  = array(); 
     3122            $return_field_value["options"]          = array(); 
     3123 
     3124            foreach ($type_dropdown_options as $dropdown_key => $dropdown_value) { 
     3125 
     3126                if ($dropdown_value["deleted"]) continue; 
     3127                 
     3128                $return_field_value["options"][] = array( 
     3129                    "value"       => $dropdown_value["value"], 
     3130                    "key"         => $dropdown_key, 
     3131                    "is_selected" => ($field_value === $dropdown_key) 
     3132                ); 
     3133                if ($field_value === $dropdown_key) { 
     3134                    $return_field_value["selected_option"] = array( 
     3135                        "value"       => $dropdown_value["value"], 
     3136                        "key"         => $dropdown_key, 
     3137                        "is_selected" => TRUE 
     3138                    ); 
     3139                    $return_field_value["selected_value"] = $dropdown_value["value"]; 
     3140                } 
     3141            } 
     3142             
     3143        } else if ("post" === $field["type"]) { 
     3144 
     3145            if (isset($field_value) && is_numeric($field_value)) { 
     3146                $post_id = (int) $field_value; 
     3147                $return_field_value["id"]           = $post_id; 
     3148                $return_field_value["title"]        = get_the_title( $post_id ); 
     3149                $return_field_value["permalink"]    = get_permalink( $post_id ); 
     3150                $return_field_value["post"]         = get_post( $post_id ); 
     3151            } 
     3152             
     3153         
     3154        } else if ("user" === $field["type"]) { 
     3155 
     3156            if (isset($field_value) && is_numeric($field_value)) { 
     3157                 
     3158                $user_id = (int) $field_value; 
     3159                $return_field_value["id"]   = $user_id; 
     3160                 
     3161                // user is a WP_User object, 
     3162                // see this url for more info on what data you can get: 
     3163                // http://codex.wordpress.org/Function_Reference/get_userdata 
     3164                $user                                = get_user_by( "id", $user_id );                
     3165                $return_field_value["first_name"]    = $user->first_name; 
     3166                $return_field_value["last_name"]     = $user->last_name; 
     3167                $return_field_value["user_login"]    = $user->user_login; 
     3168                $return_field_value["user_email"]    = $user->user_email; 
     3169                $return_field_value["user_nicename"] = $user->user_nicename; 
     3170                $return_field_value["display_name"]  = $user->display_name; 
     3171                $return_field_value["user"]          = $user; 
     3172                 
     3173            } 
     3174 
     3175        } else if ("taxonomy" === $field["type"]) { 
     3176 
     3177            $taxonomy = get_taxonomy($field_value); 
     3178            $return_field_value["name"]             = ""; 
     3179            $return_field_value["singular_name"]    = ""; 
     3180            $return_field_value["plural_name"]      = ""; 
     3181            $return_field_value["taxonomy"]         = ""; 
     3182            if ($taxonomy) { 
     3183                $return_field_value["name"]          = $taxonomy->name; 
     3184                $return_field_value["singular_name"] = $taxonomy->labels->singular_name; 
     3185                $return_field_value["plural_name"]   = $taxonomy->labels->name; 
     3186                $return_field_value["taxonomy"]      = $taxonomy; 
     3187            } 
     3188 
     3189        } else if ("taxonomyterm" === $field["type"]) { 
     3190             
     3191            $type_taxonomyterm_options = $field["type_taxonomyterm_options"]; 
     3192 
     3193            // multiple tags can be selected 
     3194            $arr_terms = array(); 
     3195            if (isset($field_value) && is_array($field_value)) { 
     3196                foreach ($field_value as $one_term_id) { 
     3197                     
     3198                    $term = get_term_by("id", $one_term_id, $type_taxonomyterm_options["enabled_taxonomy"]); 
     3199                    $arr_terms[] = array( 
     3200                        "name" => $term->name, 
     3201                        "slug" => $term->slug, 
     3202                        "id"   => $term->term_id, 
     3203                        "term" => $term 
     3204                    ); 
     3205                     
     3206                } 
     3207            } 
     3208             
     3209            $return_field_value["terms"] = $arr_terms; 
     3210         
     3211        } else if ("date" === $field["type"]) { 
     3212 
     3213            // format = default in jquery = mm/dd/yy (year 4 digits) 
     3214            // sf_d($field_value); // 14/10/2012 
     3215            $return_field_value["saved_value"] = $field_value; 
     3216            if (isset($field_value)) { 
     3217                $field_value = trim($field_value); 
     3218                if (preg_match('!^\d{2}\/\d{2}\/\d{4}$!', $field_value)) { 
     3219                    $date = strtotime( str_replace('/', "-", $field_value) ); 
     3220                    $return_field_value["timestamp"] = $date; 
     3221                    $return_field_value["date_format"] = date(get_option('date_format'), $date); 
     3222                } 
     3223            } 
     3224             
     3225        } 
     3226             
     3227        return $return_field_value; 
     3228    } 
    28003229     
    28013230} // end class 
  • simple-fields/tags/1.0.3/styles.css

    r609729 r614081  
    11ul.simple-fields-edit-field-groups-added-fields { 
    2     border-top: 1px solid #DFDFDF; 
    3     padding-top: 2em; 
    4     margin-top: 1em; 
     2    /*border-top: 1px solid #DFDFDF;*/ 
     3    /*padding-top: 2em;*/ 
     4    margin-top: 0; 
    55    position: relative; 
    66} 
     
    3131.simple-fields-field-group-one-field-name { 
    3232    font-size: 1.25em; 
     33    width: 20em !important; 
    3334} 
    3435 
    3536.simple-fields-field-group-one-field-row { 
    3637    margin-bottom: .75em; 
    37 } 
     38    /*overflow: auto;*/ 
     39} 
     40 
     41.simple-fields-field-group-one-field-row-radiobuttons-values { 
     42    margin-top: 2em; 
     43} 
     44 
     45.simple-fields-field-group-one-field-row-col-first, 
     46.simple-fields-field-group-one-field-row-col-second { 
     47    display: inline-block; 
     48    -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; 
     49    min-height: 1px; 
     50    vertical-align: top; 
     51} 
     52 
     53.simple-fields-field-group-one-field-row-col-first p, 
     54.simple-fields-field-group-one-field-row-col-second p { 
     55    margin: 0; 
     56} 
     57 
     58 
     59.simple-fields-field-group-one-field-row-col-first { 
     60    /* background-color: rgba(255, 0, 0, .1); */ 
     61    padding-right: 4em; 
     62} 
     63.simple-fields-field-group-one-field-row-col-second { 
     64    /* background-color: rgba(0, 255, 0, .1); */ 
     65    width: 80%; 
     66} 
     67 
     68.simple-fields-field-group-one-field-row-col-first, 
     69.simple-fields-field-group-one-field-row label { 
     70    width: 15%; 
     71} 
     72#simple-fields-field-group-existing-fields .description { 
     73    margin-left: 12.5em; 
     74} 
     75 
    3876 
    3977.simple-fields-field-group-one-field-row fieldset { 
     
    5088    display: block; 
    5189} 
     90.simple-fields-field-group-one-field-row label { 
     91    display: inline-block; 
     92} 
     93 
     94.simple-fields-field-group-one-field-row-col-first label { 
     95    width: auto; 
     96} 
     97 
     98.simple-fields-field-type-options label { 
     99    display: block; 
     100} 
     101#simple-fields-field-group-existing-fields .simple-fields-field-type-options .description { 
     102    margin-left: auto; 
     103} 
    52104 
    53105.simple-fields-field-group-one-field-row-description { 
     
    57109.simple-fields-field-group-one-field-row p textarea 
    58110{ 
    59     width: 100%; 
     111    /*width: 100%;*/ 
    60112} 
    61113.simple-fields-field-group-one-field-row p textarea { 
  • simple-fields/tags/1.0.3/tests/SimpleFieldsTests/SimpleFieldsTest.php

    r611160 r614081  
    134134        $this->assertEquals($val, simple_fields_values("field_user", $post_id)); 
    135135 
     136    } 
     137 
     138    function testManuallyAddedFieldsExtendedReturn() 
     139    { 
     140     
     141        $post_id = 11; 
     142     
     143        // test single/first values 
     144        $vals = simple_fields_value("field_radiobuttons", $post_id, "extended_return=1"); 
     145        $vals_expected = array( 
     146            "selected_value" => "Radiobutton 3", 
     147            "selected_radiobutton" => array( 
     148                "value" => "Radiobutton 3", 
     149                "key" => "radiobutton_num_4", 
     150                "is_selected" => 1 
     151            ), 
     152            "radiobuttons" => array( 
     153                array( 
     154                    "value" => "Radiobutton 1", 
     155                    "key"   => "radiobutton_num_2", 
     156                    "is_selected" => "" 
     157                ), 
     158                array( 
     159                    "value" => "Radiobutton 2", 
     160                    "key"   => "radiobutton_num_3", 
     161                    "is_selected" => "" 
     162                ), 
     163                array( 
     164                    "value" => "Radiobutton 3", 
     165                    "key" => "radiobutton_num_4", 
     166                    "is_selected" => 1 
     167                ) 
     168            ) 
     169        ); 
     170        $this->assertEquals($vals_expected, $vals); 
     171         
     172        $vals = simple_fields_value("field_dropdown", $post_id, "extended_return=1"); 
     173        $vals_expected = array( 
     174                            'selected_value' => 'Dropdown 2', 
     175                            'selected_option' => array( 
     176                                'value' => 'Dropdown 2', 
     177                                'key' => 'dropdown_num_3', 
     178                                'is_selected' => true 
     179                            ), 
     180                            'options' => array( 
     181                                0 => array( 
     182                                    'value' => 'Dropdown 1', 
     183                                    'key' => 'dropdown_num_2', 
     184                                    'is_selected' => false 
     185                                ), 
     186                                1 => array( 
     187                                    'value' => 'Dropdown 2', 
     188                                    'key' => 'dropdown_num_3', 
     189                                    'is_selected' => true 
     190                                ), 
     191                                2 => array( 
     192                                    'value' => 'Dropdown 3', 
     193                                    'key' => 'dropdown_num_4', 
     194                                    'is_selected' => false 
     195                                ) 
     196                            ) 
     197                        ); 
     198 
     199        $this->assertEquals($vals_expected, $vals); 
     200 
     201        // check just keys for now, should check more of course 
     202        $vals = simple_fields_value("field_file", $post_id, "extended_return=1"); 
     203        #echo var_export($vals); 
     204        $attachment_id = 14; 
     205        $vals_expected = array( 
     206            'id' => 14, 
     207            'is_image' => true, 
     208            'url' => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     209            'mime' => 'image/jpeg', 
     210            'link' => array( 
     211                'full' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="1024" height="768" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-full" alt="product-cat-2" title="product-cat-2" /></a>', 
     212                'thumbnail' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="150" height="112" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-thumbnail" alt="product-cat-2" title="product-cat-2" /></a>', 
     213                'medium' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="300" height="225" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-medium" alt="product-cat-2" title="product-cat-2" /></a>', 
     214                'large' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="584" height="438" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large" alt="product-cat-2" title="product-cat-2" /></a>', 
     215                'post-thumbnail' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-post-thumbnail" alt="product-cat-2" title="product-cat-2" /></a>', 
     216                'large-feature' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large-feature" alt="product-cat-2" title="product-cat-2" /></a>', 
     217                'small-feature' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="400" height="300" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-small-feature" alt="product-cat-2" title="product-cat-2" /></a>' 
     218            ), 
     219            'image' => array( 
     220                'full' => '<img width="1024" height="768" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-full" alt="product-cat-2" title="product-cat-2" />', 
     221                'thumbnail' => '<img width="150" height="112" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-thumbnail" alt="product-cat-2" title="product-cat-2" />', 
     222                'medium' => '<img width="300" height="225" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-medium" alt="product-cat-2" title="product-cat-2" />', 
     223                'large' => '<img width="584" height="438" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large" alt="product-cat-2" title="product-cat-2" />', 
     224                'post-thumbnail' => '<img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-post-thumbnail" alt="product-cat-2" title="product-cat-2" />', 
     225                'large-feature' => '<img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large-feature" alt="product-cat-2" title="product-cat-2" />', 
     226                'small-feature' => '<img width="400" height="300" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-small-feature" alt="product-cat-2" title="product-cat-2" />' 
     227            ), 
     228            'image_src' => array( 
     229                'full' => array( 
     230                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     231                    1 => 1024, 
     232                    2 => 768, 
     233                    3 => false 
     234                ), 
     235                'thumbnail' => array( 
     236                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     237                    1 => 150, 
     238                    2 => 112, 
     239                    3 => false 
     240                ), 
     241                'medium' => array( 
     242                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     243                    1 => 300, 
     244                    2 => 225, 
     245                    3 => false 
     246                ), 
     247                'large' => array( 
     248                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     249                    1 => 584, 
     250                    2 => 438, 
     251                    3 => false 
     252                ), 
     253                'post-thumbnail' => array( 
     254                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     255                    1 => 384, 
     256                    2 => 288, 
     257                    3 => false 
     258                ), 
     259                'large-feature' => array( 
     260                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     261                    1 => 384, 
     262                    2 => 288, 
     263                    3 => false 
     264                ), 
     265                'small-feature' => array( 
     266                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     267                    1 => 400, 
     268                    2 => 300, 
     269                    3 => false 
     270                ) 
     271            ), 
     272            'metadata' => array( 
     273                'width' => '1024', 
     274                'height' => '768', 
     275                'hwstring_small' => 'height=\'96\' width=\'128\'', 
     276                'file' => '2012/10/product-cat-2.jpeg', 
     277                'image_meta' => array( 
     278                    'aperture' => '0', 
     279                    'credit' => '', 
     280                    'camera' => '', 
     281                    'caption' => '', 
     282                    'created_timestamp' => '0', 
     283                    'copyright' => '', 
     284                    'focal_length' => '0', 
     285                    'iso' => '0', 
     286                    'shutter_speed' => '0', 
     287                    'title' => '' 
     288                ) 
     289            ), 
     290            'post' => get_post($attachment_id) 
     291        ); 
     292        $this->assertEquals($vals_expected, $vals); 
     293         
     294        $vals = simple_fields_value("field_post", $post_id, "extended_return=1"); 
     295        $vals_expected = array( 
     296            'id' => 11, 
     297            'title' => 'Post with fields', 
     298            'permalink' => 'http://unit-test.simple-fields.com/?p=11', 
     299            'post' => get_post($post_id) 
     300        ); 
     301        $this->assertEquals($vals_expected, $vals); 
     302         
     303        $vals = simple_fields_value("field_taxonomy", $post_id, "extended_return=1"); 
     304        $vals_expected = array( 
     305            'name' => 'post_tag', 
     306            'singular_name' => 'Tag', 
     307            'plural_name' => 'Tags', 
     308            "taxonomy" => get_taxonomy("post_tag") 
     309        ); 
     310        $this->assertEquals($vals_expected, $vals); 
     311         
     312        $vals = simple_fields_value("field_taxonomy_term", $post_id, "extended_return=1"); 
     313        $vals_expected = array( 
     314            "terms" => array( 
     315                0 => array( 
     316                    "name" => "Uncategorized", 
     317                    "slug" => "uncategorized", 
     318                    "id" => 1, 
     319                    "term" => get_term_by("id", 1, "category") 
     320                ) 
     321            ) 
     322        ); 
     323        $this->assertEquals($vals_expected, $vals); 
     324 
     325        $vals = simple_fields_value("field_date", $post_id, "extended_return=1"); 
     326        $vals_expected = array ( 'saved_value' => '12/10/2012', 'timestamp' => 1350000000, 'date_format' => 'October 12, 2012'); 
     327        $this->assertEquals($vals_expected, $vals); 
     328         
     329        $vals = simple_fields_value("field_user", $post_id, "extended_return=1"); 
     330        $vals_expected = array ( 'id' => 1, 'first_name' => '', 'last_name' => '', 'user_login' => 'admin', 'user_email' => 'admin@simple-fields.com', 'user_nicename' => 'admin', 'display_name' => 'admin', 'user' => get_user_by("id", 1)); 
     331        $this->assertEquals($vals_expected, $vals); 
     332                 
    136333    } 
    137334 
  • simple-fields/trunk/class_simple_fields_field.php

    r609729 r614081  
    1010        $key         = "", // Unique key for this field type. just a-z please, no spaces or funky stuff. don't change this once set. 
    1111        $name        = "", // The name that users will see. 
    12         $description = "" // A longer description. Not used right now... 
     12        $description = "", // A longer description. Not used right now... 
     13        $field_url 
    1314        ; 
    1415 
     
    2021 
    2122    function __construct() { 
     23 
    2224    } 
    2325 
     
    8284     
    8385    /** 
     86     * Return a classname prefixed with simple fields and our field type, to be used in edit post screen 
     87     * Use this to generate class names to make sure they don't collide with other class names in WordPress (from other plugins for example) 
     88     * @param string $class Name of class to append 
     89     */ 
     90    function get_class_name($class) { 
     91        return "simple-fields-fieldgroups-field-type-" . $this->key . "-$class"; 
     92    } 
     93     
     94    /** 
    8495     * Possibly modify values before returning them 
    8596     * Used from functions simple_fields_value and simple_fields_values 
     
    99110    } 
    100111 
     112    /** 
     113     * @todo: fix this, i'm to stupid to get it to work atm 
     114     * Returns the URL to the directory where this field type is located 
     115     * @return string path, for example "http://playground.ep/wordpress/wp-content/plugins/field_types/" 
     116     */ 
     117     /* 
     118    function get_url() { 
     119 
     120        // This is the funky way I do it so it works with my symlinks 
     121        $classinfo = new ReflectionClass($this); 
     122        $filename = $classinfo->getFileName(); 
     123        $this->field_url = plugins_url(basename(dirname($filename))) . "/"; 
     124        sf_d( plugins_url($filename, basename(dirname($filename))) ); 
     125        sf_d( $filename ); 
     126        sf_d($classinfo); 
     127        sf_d($classinfo->getParentClass()); 
     128        return $this->field_url; 
     129         
     130    } 
     131    */ 
     132 
     133     
     134 
     135    // Add admin scripts that the the plugin uses 
     136    /* 
     137    add_action("admin_enqueue_scripts", function() use ($plugin_url) { 
     138        wp_enqueue_script( "simple-fields-googlemaps", $plugin_url . "scripts.js" ); 
     139        wp_enqueue_style( "simple-fields-googlemaps", $plugin_url . "style.css" ); 
     140    }); 
     141    */ 
     142 
    101143} // class 
  • simple-fields/trunk/functions.php

    r611160 r614081  
    5959     
    6060                $saved_values = isset($one_field["saved_values"]) ? $one_field["saved_values"] : null; 
    61      
     61 
    6262                if ($one_field["type"] == "radiobuttons" || $one_field["type"] == "dropdown") { 
    6363                    if ($one_field["type"] == "radiobuttons") { 
     
    202202    // Remove deleted field groups 
    203203    if (!$args["include_deleted"]) { 
     204 
    204205        $arr_field_groups_to_keep = array(); 
    205206        foreach ($selected_post_connector["field_groups"] as $one_field_group_id => $one_field_group) { 
     
    234235 
    235236        // now fetch the stored values, one field at a time 
     237        // echo "<br>num_added_field_groups: $num_added_field_groups"; 
     238        // for repeatable field groups num_added_field_groups is the number of added field groups 
    236239        for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) { 
    237240 
     
    239242            foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) { 
    240243 
     244#echo "<br>num in set: $num_in_set"; 
     245#sf_d($one_field_value); 
     246 
    241247                $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}"; 
     248#echo "<br>custom field key: $custom_field_key"; 
     249 
    242250                $saved_value = get_post_meta($post_id, $custom_field_key, true); // empty string if does not exist 
    243251 
     
    262270                $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key; 
    263271 
    264             } 
    265         } 
    266  
    267     } 
     272#if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // name/string 
     273#if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // file/id 
     274    #sf_d($custom_field_key); 
     275    #echo "<br>saved value for $custom_field_key: ";var_dump($saved_value); 
     276    #sf_d($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]); 
     277#} 
     278 
     279 
     280            } 
     281        } 
     282 
     283    } 
     284    #sf_d($selected_post_connector); 
    268285    return $selected_post_connector; 
    269286} 
     
    666683    } 
    667684 
    668     $slug = sanitize_key($slug); 
     685    $unique_name = sanitize_key($unique_name); 
    669686 
    670687    $post_connector_defaults = array( 
     
    943960        if ($arr_field_slugs) { 
    944961            foreach ($arr_field_slugs as $one_of_the_comma_separated_slug) { 
     962             
     963                $one_of_the_comma_separated_slug = trim($one_of_the_comma_separated_slug); 
    945964 
    946965                $one_slug_values = simple_fields_values($one_of_the_comma_separated_slug, $post_id, $options); 
     
    980999        foreach ($one_field_group["fields"] as $one_field_group_field) {  
    9811000 
     1001//_simple_fields_fieldGroupID_23_fieldID_2_numInSet_ 
     1002#file 
     1003#sf_d($one_field_group_field); 
     1004 
    9821005            // Skip deleted fields 
    9831006            if ($one_field_group_field["deleted"]) continue; 
    9841007 
    9851008            if ($field_slug === $one_field_group_field["slug"]) { 
    986  
     1009             
     1010                // Detect options for the field with this slug 
     1011                // options are in format: 
     1012                // extended_output=1&file[extended_output]=1&file[anotherOptions]=yepp indeed 
     1013                // where the first arg is for all fields, and the one with square-brackets are for specific slugs 
     1014                $parsed_options = wp_parse_args($options);               
     1015                $parsed_options_for_this_field = array(); 
     1016 
     1017                // First check for settings saved for the field (in gui or through register_field_group) 
     1018                $field_options_key = "type_".$one_field_group_field["type"]."_options"; 
     1019                if (isset($one_field_group_field[$field_options_key])) { 
     1020                    // settings exist for this field 
     1021                    if (isset($one_field_group_field[$field_options_key]["enable_extended_return_values"]) && $one_field_group_field[$field_options_key]["enable_extended_return_values"]) { 
     1022                        $parsed_options_for_this_field["extended_return"] = 1; 
     1023                    } 
     1024 
     1025                } 
     1026                 
     1027                // check for options savailable for all fields 
     1028                // all keys for values that are not arrays. these are args that are meant for all slugs 
     1029                foreach ($parsed_options as $key => $val) { 
     1030                    if (!is_array($val)) { 
     1031                        $parsed_options_for_this_field = array_merge($parsed_options_for_this_field, array($key => $val)); 
     1032                    } 
     1033                } 
     1034 
     1035                // check for options for just this specific slug 
     1036                // if our field slug is available as a key and that key is an array = value is for this field slug 
     1037                if ( isset($parsed_options[$one_field_group_field["slug"]]) && is_array($parsed_options[$one_field_group_field["slug"]]) ) { 
     1038                    $parsed_options_for_this_field = array_merge($parsed_options_for_this_field, $parsed_options[$one_field_group_field["slug"]]); 
     1039                } 
     1040 
     1041                // that's it, we have the options that should be available for this field slug 
     1042                // echo "<br>field: " . $one_field_group_field["slug"]; 
     1043                // sf_d($parsed_options_for_this_field); 
     1044                     
    9871045                // Slug is found. Get and return values. 
    9881046                // If no value is set. Should we return string, null, or false? NULL as in "no value exists"? 
     
    9911049                // If no values just return 
    9921050                // But return an array, since that's what we except it to return 
    993                 if (!sizeof($saved_values)) return array(); 
    994  
     1051                // if (!sizeof($saved_values)) return array(); // no, don't return here. let the action further down run. 
     1052                if (!sizeof($saved_values)) $saved_values = array(); 
     1053                 
    9951054                /* 
    9961055                    For old/core/legacy fields it's like this: 
     
    10231082                    // Use the custom field object to output this value, since we can't guess how the data is supposed to be used 
    10241083                    $custom_field_type = $sf->registered_field_types[$one_field_group_field["type"]]; 
    1025                     $saved_values = $custom_field_type->return_values($saved_values, $options); 
     1084                    $saved_values = $custom_field_type->return_values($saved_values, $parsed_options_for_this_field); 
    10261085 
    10271086                } else { 
    10281087 
    10291088                    // legacy/core field type, uses plain $saved_values 
     1089                    // ...but since 1.0.3 you can use extened return 
     1090                    // $parsed_options_for_this_field 
     1091 
     1092                    // Check if field should return extended return values 
     1093                    if ( isset($parsed_options_for_this_field["extended_return"]) && (bool) $parsed_options_for_this_field["extended_return"] ) { 
     1094                        // check if current field type supports this 
     1095                        if ( in_array($one_field_group_field["type"], array("file", "radiobuttons", "dropdown", "post", "user", "taxonomy", "taxonomyterm", "date")) ) { 
     1096                             
     1097                            foreach ($saved_values as $one_saved_value_key => $one_saved_value) { 
     1098                                $saved_values[$one_saved_value_key] = $sf->get_extended_return_values_for_field($one_field_group_field, $one_saved_value); 
     1099                            } 
     1100                             
     1101                        } 
     1102                    } 
    10301103 
    10311104                } 
  • simple-fields/trunk/readme.txt

    r611160 r614081  
    11=== Simple Fields === 
    22Contributors: eskapism, MarsApril, samface, angrycreative, earth people 
    3 Donate link: http://eskapism.se/sida/donate/ 
     3Donate link: http://simple-fields.com/about/donate/ 
    44Tags: admin, fields, custom fields, advanced custom fields, extended custom fields, field manager, attachments, text areas, input fields, tinymce, radio button, drop down, files, meta box, edit, post, post_meta, post meta, custom 
    55Requires at least: 3.3.1 
    66Tested up to: 3.4.2 
    7 Stable tag: 1.0.2 
     7Stable tag: 1.0.3 
    88 
    99Add more advanced custom fields types to your edit post page. Field can be of several types, including textarea, checkbox, radio buttons, files and color picker. 
     
    4040If you have questions/bug reports/feature requests for Simple Fields please use the WordPress [Support Forum](http://wordpress.org/tags/simple-fields?forum_id=10) or  
    4141[the new GitHub project page for Simple Fields](github.com/bonny/WordPress-Simple-Fields/). 
    42 There are also [tutorials available for Simple Fields](http://eskapism.se/code-playground/simple-fields/). 
     42There are also [tutorials available for Simple Fields](http://simple-fields.com/documentation/). 
    4343 
    4444#### Donation and more plugins 
     
    54541. Activate the plugin through the "Plugins" menu in WordPress 
    55551. Start poking around with Simple Fields under Settings > Simple Fields 
    56 1. Get help at http://eskapism.se/code-playground/simple-fields/ and ask your questions at http://wordpress.org/support/plugin/simple-fields 
     561. Get help at http://simple-fields.com/documentation/ and ask your questions at http://wordpress.org/support/plugin/simple-fields 
    57571. That's it; you know have a super cool and powerful CMS based on WordPress! 
    5858 
     
    164164 
    165165== Changelog == 
     166 
     167#### Version 1.0.3 
     168- Added: Added options for returning values as "Extended Return Values".  
     169Very useful when working with for example files:  
     170instead of just the ID of the file you get the id, the full path to the file, the dimensions if it's a image, and more.  
     171This feature is available for these field types:  
     172file, radiobutton, dropdown, post, user, taxonomy, taxonomy term and date.  
     173Please see the [documentation for Extended Return Values](http://simple-fields.com/documentation/api/extended-return-values/) for more information and examples. 
     174- Added: option to set the height for textarea fields (inlcuding HTML/TinyMCE-editor-mode) 
     175- Added: new field type: divider. Useful if you have a field group with many fields. By adding the divider field to a field group it simply created a shite space or a space with a line. It's written using the new Extension API btw, so feel free to check out the source if you want to create something similar yourself. 
     176- Changed: The debug output also includes example on how to get all field in a field group at once. 
    166177 
    167178#### Version 1.0.2 
  • simple-fields/trunk/scripts.js

    r609729 r614081  
    159159    } 
    160160 
    161  
     161    /** 
     162     * Edit field types/fields: on field type dropdown change 
     163     */ 
    162164    $("select.simple-fields-field-type").live("change", function() { 
    163165        // look for simple-fields-field-type-options-<type> and show if 
     
    165167        var selectedFieldType = $t.val(); 
    166168        var $li = $t.closest("li"); 
    167         $li.find(".simple-fields-field-type-options").hide("slow"); 
    168         $li.find(".simple-fields-field-type-options-" + selectedFieldType).show("slow"); 
     169        $li.find(".simple-fields-field-type-options").hide(); 
     170        $li.find(".simple-fields-field-type-options-" + selectedFieldType).fadeIn("slow"); 
    169171    }); 
    170172     
  • simple-fields/trunk/simple_fields.php

    r611264 r614081  
    22/* 
    33Plugin Name: Simple Fields 
    4 Plugin URI: http://eskapism.se/code-playground/simple-fields/ 
     4Plugin URI: http://simple-fields.com 
    55Description: Add groups of textareas, input-fields, dropdowns, radiobuttons, checkboxes and files to your edit post screen. 
    6 Version: 1.0.2 
     6Version: 1.0.3 
    77Author: Pär Thernström 
    88Author URI: http://eskapism.se/ 
     
    5252        define( "SIMPLE_FIELDS_URL", plugins_url(basename(dirname(__FILE__))). "/"); 
    5353        define( "SIMPLE_FIELDS_NAME", "Simple Fields"); 
    54         define( "SIMPLE_FIELDS_VERSION", "1.0.2"); 
     54        define( "SIMPLE_FIELDS_VERSION", "1.0.3"); 
    5555 
    5656        load_plugin_textdomain( 'simple-fields', null, basename(dirname(__FILE__)).'/languages/'); 
     
    6161        // require( dirname(__FILE__) . "/field_types/field_example.php" ); 
    6262        // require( dirname(__FILE__) . "/field_types/field_minimalistic_example.php" ); 
     63         
     64        // Load field types 
     65        require( dirname(__FILE__) . "/field_types/field_divider.php" ); 
    6366 
    6467        $this->plugin_foldername_and_filename = basename(dirname(__FILE__)) . "/" . basename(__FILE__); 
     
    527530                        $image_name = ""; 
    528531                        if ($attachment_id) { 
    529                             $image_thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ); 
    530                             $image_thumbnail = $image_thumbnail[0]; 
    531                             $image_html = "<img src='$image_thumbnail' alt='' />"; 
    532532                            $image_post = get_post($attachment_id); 
    533                             $image_name = esc_html($image_post->post_title); 
     533                            if ($image_post === NULL) { 
     534                                // hm.. image that no longer exists? trashed? 
     535                            } else { 
     536                                $image_thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ); 
     537                                $image_thumbnail = $image_thumbnail[0]; 
     538                                $image_html = "<img src='$image_thumbnail' alt='' />"; 
     539                                $image_name = esc_html($image_post->post_title); 
     540                            } 
    534541                        } 
    535542                        $class = ""; 
     
    574581                        $textarea_class = ""; 
    575582                        $textarea_class_wrapper = ""; 
    576      
     583                        $textarea_html_extra_classes = ""; 
     584                         
     585                        // default num rows to same as WordPress uses / 2 beacuse it's always been smaller 
     586                        $textarea_rows = ((int) get_option('default_post_edit_rows', 10)) / 2; 
     587                         
     588                        // if user has set custom height 
     589                        // since 1.0.3 
     590                        if (isset($textarea_options["size_height"])) { 
     591                            // size is small, medium, large 
     592                            $textarea_html_extra_classes .= " simple-fields-metabox-field-textarea-tinymce-size-{$textarea_options['size_height']} "; 
     593                            switch ($textarea_options["size_height"]) { 
     594                                case "small": 
     595                                    $textarea_rows = 3; 
     596                                    break; 
     597                                case "medium": 
     598                                    $textarea_rows = 15; 
     599                                    break; 
     600                                case "large": 
     601                                    $textarea_rows = 30; 
     602                                    break; 
     603                            } 
     604                        } 
     605                         
    577606                        echo "<label for='$field_unique_id'> " . $field["name"] . "</label>"; 
    578607                        echo $description; 
     
    588617                                } 
    589618                            } 
    590                             $args = array("textarea_name" => $field_name, "editor_class" => "simple-fields-metabox-field-textarea-tinymce"); 
     619                            $args = array( 
     620                                "textarea_name" => $field_name,  
     621                                "editor_class"  => "simple-fields-metabox-field-textarea-tinymce $textarea_html_extra_classes", 
     622                                // "teeny"      => TRUE // possibly add in future. does not actually gain/loose much using it, right?, 
     623                                "textarea_rows" => $textarea_rows, 
     624                                "media_buttons" => TRUE 
     625                            ); 
    591626                            echo "<div class='simple-fields-metabox-field-textarea-tinymce-wrapper'>"; 
    592627                            wp_editor( $saved_value, $field_unique_id, $args ); 
     
    594629                        } else { 
    595630                            echo "<div class='simple-fields-metabox-field-textarea-wrapper'>"; 
    596                             echo "<textarea class='simple-fields-metabox-field-textarea' name='$field_name' id='$field_unique_id' cols='50' rows='5'>$textarea_value_esc</textarea>"; 
     631                            echo "<textarea class='simple-fields-metabox-field-textarea' name='$field_name' id='$field_unique_id' cols='50' rows='$textarea_rows'>$textarea_value_esc</textarea>"; 
    597632                            echo "</div>"; 
    598633                        } 
     
    15371572        if ($field_type === NULL) $field_type = "text"; 
    15381573         
    1539         $field_type_textarea_option_use_html_editor = (int) @$fields[$fieldID]["type_textarea_options"]["use_html_editor"]; 
     1574        $field_type_file_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_file_options"]["enable_extended_return_values"]; 
     1575 
     1576        $field_type_user_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_user_options"]["enable_extended_return_values"]; 
     1577 
     1578        $field_type_textarea_option_use_html_editor = (int)     @$fields[$fieldID]["type_textarea_options"]["use_html_editor"]; 
     1579        $field_type_textarea_option_size_height     = (string)  @$fields[$fieldID]["type_textarea_options"]["size_height"]; 
     1580         
    15401581        $field_type_checkbox_option_checked_by_default = (int) @$fields[$fieldID]["type_checkbox_options"]["checked_by_default"]; 
     1582        $field_type_checkbox_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_checkbox_options"]["enable_extended_return_values"]; 
     1583         
    15411584        $field_type_radiobuttons_options = (array) @$fields[$fieldID]["type_radiobuttons_options"]; 
     1585        $field_type_radiobuttons_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_radiobuttons_options"]["enable_extended_return_values"]; 
     1586         
    15421587        $field_type_dropdown_options = (array) @$fields[$fieldID]["type_dropdown_options"]; 
    1543      
     1588        $field_type_dropdown_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_dropdown_options"]["enable_extended_return_values"]; 
     1589         
    15441590        $field_type_post_options = (array) @$fields[$fieldID]["type_post_options"]; 
    15451591        $field_type_post_options["enabled_post_types"] = (array) @$field_type_post_options["enabled_post_types"]; 
    1546      
     1592        $field_type_post_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_post_options"]["enable_extended_return_values"]; 
     1593 
    15471594        $field_type_taxonomy_options = (array) @$fields[$fieldID]["type_taxonomy_options"]; 
    15481595        $field_type_taxonomy_options["enabled_taxonomies"] = (array) @$field_type_taxonomy_options["enabled_taxonomies"]; 
     1596        $field_type_taxonomy_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_taxonomy_options"]["enable_extended_return_values"]; 
    15491597     
    15501598        $field_type_date_options = (array) @$fields[$fieldID]["type_date_options"]; 
    15511599        $field_type_date_option_use_time = @$field_type_date_options["use_time"]; 
     1600        $field_type_date_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_date_options"]["enable_extended_return_values"]; 
    15521601     
    15531602        $field_type_taxonomyterm_options = (array) @$fields[$fieldID]["type_taxonomyterm_options"]; 
    15541603        $field_type_taxonomyterm_options["enabled_taxonomy"] = (string) @$field_type_taxonomyterm_options["enabled_taxonomy"]; 
     1604        $field_type_taxonomyterm_option_enable_extended_return_values = (int) @$fields[$fieldID]["type_date_options"]["enable_taxonomyterm_return_values"]; 
    15551605     
    15561606        // Options saved for this field 
     
    15981648            if ($field_options_output) { 
    15991649                $field_options_output = " 
    1600                     <fieldset>  
    1601                         <legend>Options</legend> 
     1650                    <!-- <fieldset>  
     1651                        <legend>Options</legend> --> 
    16021652                        $field_options_output 
    1603                     </fieldset> 
     1653                    <!-- </fieldset> --> 
    16041654                "; 
    16051655                 
     
    16711721            $registred_field_types_output_options 
    16721722 
     1723            <!-- options for field type  textarea --> 
    16731724            <div class='simple-fields-field-group-one-field-row " . (($field_type=="textarea") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-textarea'> 
    1674                 <input type='checkbox' name='field[{$fieldID}][type_textarea_options][use_html_editor]' " . (($field_type_textarea_option_use_html_editor) ? " checked='checked'" : "") . " value='1' /> ".__('Use HTML-editor', 'simple-fields')." 
     1725                <div class='simple-fields-field-group-one-field-row'> 
     1726                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     1727                        <label>Height</label> 
     1728                    </div> 
     1729                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     1730                        <input " . ((empty($field_type_textarea_option_size_height) || $field_type_textarea_option_size_height == "default") ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='default'> " . _x('Default', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1731                        <input " . ($field_type_textarea_option_size_height == "small" ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='small'> " . _x('Small', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1732                        <input " . ($field_type_textarea_option_size_height == "medium" ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='medium'> " . _x('Medium', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1733                        <input " . ($field_type_textarea_option_size_height == "large" ? " checked=checked " : "")  . " type='radio' name='field[{$fieldID}][type_textarea_options][size_height]' value='large'> " . _x('Large', 'Textarea default height', 'simple-fields') . " &nbsp; 
     1734                    </div> 
     1735                </div> 
     1736 
     1737                <div class='simple-fields-field-group-one-field-row'> 
     1738                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     1739                    </div> 
     1740                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     1741                        <input type='checkbox' name='field[{$fieldID}][type_textarea_options][use_html_editor]' " . (($field_type_textarea_option_use_html_editor) ? " checked='checked'" : "") . " value='1' /> ".__('Use HTML-editor', 'simple-fields')." 
     1742                    </div> 
     1743                </div> 
     1744 
    16751745            </div> 
    16761746            "; 
    1677              
    1678             // date 
     1747 
     1748            // User 
     1749            $out .= "<div class='simple-fields-field-group-one-field-row " . (($field_type=="user") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-user'>"; 
     1750            $out .= "   <div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1751            $out .= "   <div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1752            $out .= "       <p><input type='checkbox' name='field[{$fieldID}][type_user_options][enable_extended_return_values]' " . (($field_type_user_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1753            $out .=         __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1754            $out .= "       <p class='description'>" . __('Return an array with the name, email and full WP_User-object of the selected user, instead of just the user ID.', 'simple-fields') . "</p>"; 
     1755            $out .= "   </div>"; 
     1756            $out .= "</div>"; 
     1757 
     1758            // File 
     1759            $out .= "<div class='simple-fields-field-group-one-field-row " . (($field_type=="file") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-file'>"; 
     1760            $out .= "   <div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1761            $out .= "   <div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1762            $out .= "       <p><input type='checkbox' name='field[{$fieldID}][type_file_options][enable_extended_return_values]' " . (($field_type_file_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1763            $out .=         __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1764            $out .= "       <p class='description'>" . __('Return an array with attachment title, path, etc., instead of just a post ID.', 'simple-fields') . "</p>"; 
     1765            $out .= "   </div>"; 
     1766            $out .= "</div>"; 
     1767 
     1768            // Date 
    16791769            $out .= "<div class='" . (($field_type=="date") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-date'>"; 
    1680             $out .= "<input type='checkbox' name='field[{$fieldID}][type_date_options][use_time]' " . (($field_type_date_option_use_time) ? " checked='checked'" : "") . " value='1' /> ".__('Also show time', 'simple-fields'); 
     1770                 
     1771                $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1772                    $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1773                    $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1774                    $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_date_options][use_time]' " . (($field_type_date_option_use_time) ? " checked='checked'" : "") . " value='1' /> ".__('Also show time', 'simple-fields') . "</p>"; 
     1775                    $out .= "</div>"; 
     1776                $out .= "</div>"; 
     1777     
     1778                $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1779                    $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1780                    $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1781                    $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_date_options][enable_extended_return_values]' " . (($field_type_date_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1782                    $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1783                    $out .= "   <p class='description'>" . __('Return an array with the selected date as a unix timestamp and as the date format set in WordPress settings.', 'simple-fields') . "</p>"; 
     1784                    $out .= "</div>"; 
     1785                $out .= "   </div>"; 
     1786 
    16811787            $out .= "</div>"; 
    16821788         
     
    16851791            $out .= "<div class='" . (($field_type=="post") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-post'>"; 
    16861792            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1793            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    16871794            $out .= sprintf("<label>%s</label>", __('Post types to select from', 'simple-fields')); 
     1795            $out .= "</div>"; 
    16881796            //$out .= sprintf("<select name='%s'>", "field[$fieldID][type_post_options][post_type]"); 
    16891797            //$out .= sprintf("<option %s value='%s'>%s</option>", (empty($field_type_post_options["post_type"]) ? " selected='selected' " : "") ,"", "Any"); 
    16901798     
    16911799            // list all post types in checkboxes 
     1800            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
    16921801            $post_types = get_post_types(NULL, "objects"); 
    16931802            $loopnum = 0; 
    16941803            foreach ($post_types as $one_post_type) { 
    1695             // skip some built in types 
    1696             if (in_array($one_post_type->name, array("attachment", "revision", "nav_menu_item"))) { 
    1697                 continue; 
    1698             } 
    1699             $input_name = "field[{$fieldID}][type_post_options][enabled_post_types][]"; 
    1700             $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s</input>",  
    1701                                 ($loopnum>0 ? "<br>" : ""),  
    1702                                 $input_name, 
    1703                                 ((in_array($one_post_type->name, $field_type_post_options["enabled_post_types"])) ? " checked='checked' " : ""),  
    1704                                 $one_post_type->name,  
    1705                                 $one_post_type->labels->name . " ($one_post_type->name)" 
    1706                             ); 
    1707             $loopnum++; 
    1708         } 
     1804                // skip some built in types 
     1805                if (in_array($one_post_type->name, array("attachment", "revision", "nav_menu_item"))) { 
     1806                    continue; 
     1807                } 
     1808                $input_name = "field[{$fieldID}][type_post_options][enabled_post_types][]"; 
     1809                $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s</input>",  
     1810                                    ($loopnum>0 ? "<br>" : ""),  
     1811                                    $input_name, 
     1812                                    ((in_array($one_post_type->name, $field_type_post_options["enabled_post_types"])) ? " checked='checked' " : ""),  
     1813                                    $one_post_type->name,  
     1814                                    $one_post_type->labels->name . " ($one_post_type->name)" 
     1815                                ); 
     1816                $loopnum++; 
     1817            } 
    17091818            $out .= "</div>"; 
     1819            $out .= "</div>"; 
    17101820     
    17111821            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1822            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    17121823            $out .= "<label>Additional arguments</label>"; 
    1713             $out .= sprintf("<input type='text' name='%s' value='%s' />", "field[$fieldID][type_post_options][additional_arguments]", @$field_type_post_options["additional_arguments"]); 
     1824            $out .= "</div>"; 
     1825            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1826            $out .= sprintf("<input class='regular-text' type='text' name='%s' value='%s' />", "field[$fieldID][type_post_options][additional_arguments]", @$field_type_post_options["additional_arguments"]); 
    17141827            $out .= sprintf("<br><span class='description'>Here you can <a href='http://codex.wordpress.org/How_to_Pass_Tag_Parameters#Tags_with_query-string-style_parameters'>pass your own parameters</a> to <a href='http://codex.wordpress.org/Class_Reference/WP_Query'>WP_Query</a>.</span>"); 
     1828            $out .= "</div>"; // second 
    17151829            $out .= "</div>"; 
     1830 
     1831            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1832                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1833                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1834                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_post_options][enable_extended_return_values]' " . (($field_type_post_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1835                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1836                $out .= "   <p class='description'>" . __('Return an array with the title, permalink, and complete post object of the selected post, instead of just the ID.', 'simple-fields') . "</p>"; 
     1837                $out .= "</div>"; 
     1838            $out .= "   </div>"; 
     1839 
    17161840            $out .= "</div>"; // whole divs that shows/hides 
    17171841     
     
    17191843            // connect taxonomy - select taxonomies 
    17201844            $out .= "<div class='" . (($field_type=="taxonomy") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-taxonomy'>"; 
     1845            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1846            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    17211847            $out .= sprintf("<label>%s</label>", __('Taxonomies to show in dropdown', 'simple-fields')); 
     1848            $out .= "</div>"; // col first 
     1849             
     1850            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
    17221851            $taxonomies = get_taxonomies(NULL, "objects"); 
    17231852            $loopnum = 0; 
    17241853            foreach ($taxonomies as $one_tax) { 
    1725             // skip some built in types 
    1726             if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
    1727                 continue; 
    1728             } 
    1729             $input_name = "field[{$fieldID}][type_taxonomy_options][enabled_taxonomies][]"; 
    1730             $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s",  
    1731                                 ($loopnum>0 ? "<br>" : ""),  
    1732                                 $input_name,  
    1733                                 ((in_array($one_tax->name, $field_type_taxonomy_options["enabled_taxonomies"])) ? " checked='checked' " : ""),  
    1734                                 $one_tax->name,  
    1735                                 $one_tax->labels->name . " ($one_tax->name)" 
    1736                             ); 
    1737             $loopnum++; 
    1738         } 
     1854                // skip some built in types 
     1855                if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
     1856                    continue; 
     1857                } 
     1858                $input_name = "field[{$fieldID}][type_taxonomy_options][enabled_taxonomies][]"; 
     1859                $out .= sprintf("%s<input name='%s' type='checkbox' %s value='%s'> %s",  
     1860                                    ($loopnum>0 ? "<br>" : ""),  
     1861                                    $input_name,  
     1862                                    ((in_array($one_tax->name, $field_type_taxonomy_options["enabled_taxonomies"])) ? " checked='checked' " : ""),  
     1863                                    $one_tax->name,  
     1864                                    $one_tax->labels->name . " ($one_tax->name)" 
     1865                                ); 
     1866                $loopnum++; 
     1867            } 
     1868            $out .= "</div>"; // second 
     1869            $out .= "</div>"; // row 
     1870 
     1871            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1872                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1873                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1874                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_taxonomy_options][enable_extended_return_values]' " . (($field_type_taxonomy_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1875                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1876                $out .= "   <p class='description'>" . __('Return an array with name and complete taxonomy object of the selected taxonomy, instead of just the ID.', 'simple-fields') . "</p>"; 
     1877                $out .= "</div>"; 
     1878            $out .= "   </div>"; 
     1879 
    17391880            $out .= "</div>"; 
     1881             
    17401882     
    17411883            // taxonomyterm - select taxonomies, like above 
    17421884            $out .= "<div class='" . (($field_type=="taxonomyterm") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-taxonomyterm'>"; 
    17431885            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1886            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
    17441887            $out .= sprintf("<label>%s</label>", __('Taxonomy to select terms from', 'simple-fields')); 
     1888            $out .= "</div>"; 
     1889             
     1890            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
    17451891            $taxonomies = get_taxonomies(NULL, "objects"); 
    17461892            $loopnum = 0; 
    17471893            foreach ($taxonomies as $one_tax) { 
    1748             // skip some built in types 
    1749             if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
    1750                 continue; 
    1751             } 
    1752             $input_name = "field[{$fieldID}][type_taxonomyterm_options][enabled_taxonomy]"; 
    1753             $out .= sprintf("%s<input name='%s' type='radio' %s value='%s'> %s",  
    1754                                 ($loopnum>0 ? "<br>" : ""),  
    1755                                 $input_name,  
    1756                                 ($one_tax->name == $field_type_taxonomyterm_options["enabled_taxonomy"]) ? " checked='checked' " : "",  
    1757                                 $one_tax->name,  
    1758                                 $one_tax->labels->name . " ($one_tax->name)" 
    1759                             ); 
    1760             $loopnum++; 
    1761         } 
     1894                // skip some built in types 
     1895                if (in_array($one_tax->name, array("attachment", "revision", "nav_menu_item"))) { 
     1896                    continue; 
     1897                } 
     1898                $input_name = "field[{$fieldID}][type_taxonomyterm_options][enabled_taxonomy]"; 
     1899                $out .= sprintf("%s<input name='%s' type='radio' %s value='%s'> %s",  
     1900                                    ($loopnum>0 ? "<br>" : ""),  
     1901                                    $input_name,  
     1902                                    ($one_tax->name == $field_type_taxonomyterm_options["enabled_taxonomy"]) ? " checked='checked' " : "",  
     1903                                    $one_tax->name,  
     1904                                    $one_tax->labels->name . " ($one_tax->name)" 
     1905                                ); 
     1906                $loopnum++; 
     1907            } 
     1908            $out .= "</div>"; // second 
    17621909            $out .= "</div>"; 
    17631910             
    17641911            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
    1765             $out .= "<label>Additional arguments</label>"; 
    1766             $out .= sprintf("<input type='text' name='%s' value='%s' />", "field[$fieldID][type_taxonomyterm_options][additional_arguments]", @$field_type_taxonomyterm_options["additional_arguments"]); 
     1912            $out .= "<div class='simple-fields-field-group-one-field-row-col-first'>"; 
     1913            $out .= "<label>".__("Additional arguments", "simple-fields")."</label>"; 
     1914            $out .= "</div>"; 
     1915            $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1916            $out .= sprintf("<input class='regular-text' type='text' name='%s' value='%s' />", "field[$fieldID][type_taxonomyterm_options][additional_arguments]", @$field_type_taxonomyterm_options["additional_arguments"]); 
    17671917            $out .= sprintf("<br><span class='description'>Here you can <a href='http://codex.wordpress.org/How_to_Pass_Tag_Parameters#Tags_with_query-string-style_parameters'>pass your own parameters</a> to <a href='http://codex.wordpress.org/Function_Reference/get_terms#Parameters'>get_terms()</a>.</span>"); 
     1918            $out .= "</div>"; // second 
    17681919            $out .= "</div>"; 
     1920             
     1921            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1922                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1923                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1924                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_taxonomyterm_options][enable_extended_return_values]' " . (($field_type_taxonomyterm_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1925                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1926                $out .= "   <p class='description'>" . __('Return a multi dimensional array with all the taxonomy terms objects, instead of just the IDs of the terms.', 'simple-fields') . "</p>"; 
     1927                $out .= "</div>"; 
     1928            $out .= "   </div>"; 
    17691929             
    17701930            $out .= "</div>"; 
     
    17741934            $radio_buttons_highest_id = 0; 
    17751935            if ($field_type_radiobuttons_options) { 
    1776             foreach ($field_type_radiobuttons_options as $key => $val) { 
    1777                 if (strpos($key, "radiobutton_num_") !== false && $val["deleted"] != true) { 
    1778                     // found one button in format radiobutton_num_0 
    1779                     $radiobutton_num = str_replace("radiobutton_num_", "", $key); 
    1780                     if ($radiobutton_num > $radio_buttons_highest_id) { 
    1781                         $radio_buttons_highest_id = $radiobutton_num; 
     1936                foreach ($field_type_radiobuttons_options as $key => $val) { 
     1937                    if (strpos($key, "radiobutton_num_") !== false && $val["deleted"] != true) { 
     1938                        // found one button in format radiobutton_num_0 
     1939                        $radiobutton_num = str_replace("radiobutton_num_", "", $key); 
     1940                        if ($radiobutton_num > $radio_buttons_highest_id) { 
     1941                            $radio_buttons_highest_id = $radiobutton_num; 
     1942                        } 
     1943                        $radiobutton_val = esc_html($val["value"]); 
     1944                        $checked = ($key == @$field_type_radiobuttons_options["checked_by_default_num"]) ? " checked='checked' " : ""; 
     1945                        $radio_buttons_added .= " 
     1946                            <li> 
     1947                                <div class='simple-fields-field-type-options-radiobutton-handle'></div> 
     1948                                <input class='regular-text' value='$radiobutton_val' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][value]' type='text' /> 
     1949                                <input class='simple-fields-field-type-options-radiobutton-checked-by-default-values' type='radio' name='field[$fieldID][type_radiobuttons_options][checked_by_default_num]' value='radiobutton_num_{$radiobutton_num}' {$checked} /> 
     1950                                <input class='simple-fields-field-type-options-radiobutton-deleted' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][deleted]' type='hidden' value='0' /> 
     1951                                <a href='#' class='simple-fields-field-type-options-radiobutton-delete'>Delete</a> 
     1952                            </li>"; 
    17821953                    } 
    1783                     $radiobutton_val = esc_html($val["value"]); 
    1784                     $checked = ($key == @$field_type_radiobuttons_options["checked_by_default_num"]) ? " checked='checked' " : ""; 
    1785                     $radio_buttons_added .= " 
    1786                         <li> 
    1787                             <div class='simple-fields-field-type-options-radiobutton-handle'></div> 
    1788                             <input class='regular-text' value='$radiobutton_val' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][value]' type='text' /> 
    1789                             <input class='simple-fields-field-type-options-radiobutton-checked-by-default-values' type='radio' name='field[$fieldID][type_radiobuttons_options][checked_by_default_num]' value='radiobutton_num_{$radiobutton_num}' {$checked} /> 
    1790                             <input class='simple-fields-field-type-options-radiobutton-deleted' name='field[$fieldID][type_radiobuttons_options][radiobutton_num_{$radiobutton_num}][deleted]' type='hidden' value='0' /> 
    1791                             <a href='#' class='simple-fields-field-type-options-radiobutton-delete'>Delete</a> 
    1792                         </li>"; 
    17931954                } 
    17941955            } 
    1795         } 
    17961956            $radio_buttons_highest_id++; 
     1957            $out .= "<div class='" . (($field_type=="radiobuttons") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-radiobuttons'>"; 
     1958 
     1959            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     1960                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     1961                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     1962                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_radiobuttons_options][enable_extended_return_values]' " . (($field_type_radiobuttons_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     1963                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     1964                $out .= "   <p class='description'>" . __('Return an array with the value of the selected radiobutton + the values of the non-selected radiobuttons.', 'simple-fields') . "</p>"; 
     1965                $out .= "</div>"; 
     1966            $out .= "   </div>"; 
     1967 
    17971968            $out .= " 
    1798                 <div class='" . (($field_type=="radiobuttons") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-radiobuttons'> 
    1799                     <div>Added radio buttons</div> 
    1800                     <div class='simple-fields-field-type-options-radiobutton-checked-by-default'>".__('Default', 'simple-fields')."</div> 
    1801                     <ul class='simple-fields-field-type-options-radiobutton-values-added'> 
    1802                         $radio_buttons_added 
    1803                     </ul> 
    1804                     <div><a class='simple-fields-field-type-options-radiobutton-values-add' href='#'>+ ".__('Add radio button', 'simple-fields')."</a></div> 
    1805                     <input type='hidden' name='' class='simple-fields-field-group-one-field-radiobuttons-highest-id' value='{$radio_buttons_highest_id}' /> 
     1969                <div class='simple-fields-field-group-one-field-row simple-fields-field-group-one-field-row-radiobuttons-values'> 
     1970 
     1971                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     1972                        <div>" . __("Values", "simple-fields") . "</div> 
     1973                    </div> 
     1974                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     1975                        <div class='simple-fields-field-type-options-radiobutton-checked-by-default'>".__('Default', 'simple-fields')."</div> 
     1976                        <ul class='simple-fields-field-type-options-radiobutton-values-added'> 
     1977                            $radio_buttons_added 
     1978                        </ul> 
     1979                        <div><a class='simple-fields-field-type-options-radiobutton-values-add' href='#'>+ ".__('Add radio button', 'simple-fields')."</a></div> 
     1980                        <input type='hidden' name='' class='simple-fields-field-group-one-field-radiobuttons-highest-id' value='{$radio_buttons_highest_id}' /> 
     1981                    </div><!-- // second --> 
     1982                 
    18061983                </div> 
     1984            </div><!-- show/hide div --> 
    18071985            "; 
    18081986            // end radiobuttons 
     
    18201998            $dropdown_values_highest_id = 0; 
    18211999            if ($field_type_dropdown_options) { 
    1822             foreach ($field_type_dropdown_options as $key => $val) { 
    1823                 if (strpos($key, "dropdown_num_") !== false && $val["deleted"] != true) { 
    1824                     // found one button in format radiobutton_num_0 
    1825                     $dropdown_num = str_replace("dropdown_num_", "", $key); 
    1826                     if ($dropdown_num > $dropdown_values_highest_id) { 
    1827                         $dropdown_values_highest_id = $dropdown_num; 
     2000                foreach ($field_type_dropdown_options as $key => $val) { 
     2001                    if (strpos($key, "dropdown_num_") !== false && $val["deleted"] != true) { 
     2002                        // found one button in format radiobutton_num_0 
     2003                        $dropdown_num = str_replace("dropdown_num_", "", $key); 
     2004                        if ($dropdown_num > $dropdown_values_highest_id) { 
     2005                            $dropdown_values_highest_id = $dropdown_num; 
     2006                        } 
     2007                        $dropdown_val = esc_html($val["value"]); 
     2008                        $dropdown_values_added .= " 
     2009                            <li> 
     2010                                <div class='simple-fields-field-type-options-dropdown-handle'></div> 
     2011                                <input class='regular-text' value='$dropdown_val' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][value]' type='text' /> 
     2012                                <input class='simple-fields-field-type-options-dropdown-deleted' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][deleted]' type='hidden' value='0' /> 
     2013                                <a href='#' class='simple-fields-field-type-options-dropdown-delete'>".__('Delete', 'simple-fields')."</a> 
     2014                            </li>"; 
    18282015                    } 
    1829                     $dropdown_val = esc_html($val["value"]); 
    1830                     $dropdown_values_added .= " 
    1831                         <li> 
    1832                             <div class='simple-fields-field-type-options-dropdown-handle'></div> 
    1833                             <input class='regular-text' value='$dropdown_val' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][value]' type='text' /> 
    1834                             <input class='simple-fields-field-type-options-dropdown-deleted' name='field[$fieldID][type_dropdown_options][dropdown_num_{$dropdown_num}][deleted]' type='hidden' value='0' /> 
    1835                             <a href='#' class='simple-fields-field-type-options-dropdown-delete'>".__('Delete', 'simple-fields')."</a> 
    1836                         </li>"; 
    18372016                } 
    18382017            } 
    1839         } 
    18402018            $dropdown_values_highest_id++; 
     2019            $out .= "<div class='" . (($field_type=="dropdown") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-dropdown'>"; 
     2020 
     2021            $out .= "<div class='simple-fields-field-group-one-field-row'>"; 
     2022                $out .= "<div class='simple-fields-field-group-one-field-row-col-first'></div>"; 
     2023                $out .= "<div class='simple-fields-field-group-one-field-row-col-second'>"; 
     2024                $out .= "   <p><input type='checkbox' name='field[{$fieldID}][type_dropdown_options][enable_extended_return_values]' " . (($field_type_dropdown_option_enable_extended_return_values) ? " checked='checked'" : "") . " value='1' /> "; 
     2025                $out .=     __('Enable Extended Return Values', 'simple-fields') . "</p>"; 
     2026                $out .= "   <p class='description'>" . __('Return an array with the value of the selected item in the dropdown + the values of the non-selected items.', 'simple-fields') . "</p>"; 
     2027                $out .= "</div>"; 
     2028            $out .= "   </div>"; 
     2029 
    18412030            $out .= " 
    1842                 <div class='" . (($field_type=="dropdown") ? "" : " hidden ") . " simple-fields-field-type-options simple-fields-field-type-options-dropdown'> 
    1843                     <div>".__('Added dropdown values', 'simple-fields')."</div> 
    1844                     <ul class='simple-fields-field-type-options-dropdown-values-added'> 
    1845                         $dropdown_values_added 
    1846                     </ul> 
    1847                     <div><a class='simple-fields-field-type-options-dropdown-values-add' href='#'>+ ".__('Add dropdown value', 'simple-fields')."</a></div> 
    1848                     <input type='hidden' name='' class='simple-fields-field-group-one-field-dropdown-highest-id' value='{$dropdown_values_highest_id}' /> 
     2031                    <div class='simple-fields-field-group-one-field-row-col-first'> 
     2032                        <p>".__('Values', 'simple-fields')."</p> 
     2033                    </div> 
     2034                    <div class='simple-fields-field-group-one-field-row-col-second'> 
     2035                        <ul class='simple-fields-field-type-options-dropdown-values-added'> 
     2036                            $dropdown_values_added 
     2037                        </ul> 
     2038                        <div><a class='simple-fields-field-type-options-dropdown-values-add' href='#'>+ ".__('Add dropdown value', 'simple-fields')."</a></div> 
     2039                        <input type='hidden' name='' class='simple-fields-field-group-one-field-dropdown-highest-id' value='{$dropdown_values_highest_id}' /> 
     2040                    </div> 
    18492041                </div> 
    18502042            "; 
     
    27432935        $field_count = 0; 
    27442936         
    2745         $post_connector_with_values = simple_fields_get_all_fields_and_values_for_post(get_the_ID()); 
     2937        $post_connector_with_values = simple_fields_get_all_fields_and_values_for_post(get_the_ID(), "include_deleted=0"); 
    27462938        if ($post_connector_with_values) { 
     2939 
    27472940            foreach ($post_connector_with_values["field_groups"] as $one_field_group) { 
     2941 
    27482942                if ($one_field_group["deleted"]) continue; 
     2943                 
     2944                $output_all .= "<div style='font-weight:bold;margin:1em 0 0 0;'>"; 
     2945                $str_is_repeatable = $one_field_group["repeatable"] ? __(" (Repeatable)", "simple-fields") : ""; 
     2946                $output_all .= sprintf( 
     2947                    __('Fieldgroup %1$s %2$s', "simple-fields"), 
     2948                    $one_field_group["name"], 
     2949                    $str_is_repeatable 
     2950                ); 
     2951                $output_all .= "</div>"; 
     2952                 
     2953                $str_all_group_fields = ""; 
    27492954                foreach ($one_field_group["fields"] as $one_field) { 
     2955 
    27502956                    if ($one_field["deleted"]) continue; 
     2957 
    27512958                    $field_count++; 
    27522959                    $content = ""; 
    2753                     $content .= "<ul style='background:#eee;padding:.5em;'>"; 
    2754                     $content .= "<li><b>" . $one_field["name"] . "</b><ul>"; 
    2755                     $content .= "<li>Type <b>" . $one_field["type"] . "</b>"; 
     2960                    $content .= "<ul style='background:#eee;padding:.5em;margin:0;display:block;'>"; 
     2961                    $content .= "<li>Field <b>" . $one_field["name"] . "</b>"; 
     2962                    $content .= ", type <b>" . $one_field["type"] . "</b>"; 
     2963 
    27562964                    if (isset($one_field["slug"])) { 
    2757                         $content .=  "<li>Slug <b>" . $one_field["slug"] . "</b>"; 
    2758                          
    2759                         $content .= "<li>Use <code><b>simple_fields_values('".$one_field["slug"]."')</b></code> to get:"; 
     2965                         
     2966                        $content .=  ", slug <b>" . $one_field["slug"] . "</b>"; 
     2967                        $str_all_group_fields .= $one_field["slug"] . ","; 
     2968                         
     2969                        if ($one_field_group["repeatable"]) { 
     2970                            $content .= "<br>Use <code><b>simple_fields_values('".$one_field["slug"]."')</b></code> to get:"; 
     2971                            ob_start(); 
     2972                            sf_d( simple_fields_values($one_field["slug"]) ); 
     2973                            $content .= ob_get_clean(); 
     2974                        } else {         
     2975                            $content .= "<br>Use <code><b>simple_fields_value('".$one_field["slug"]."')</b></code> to get:"; 
     2976                            ob_start(); 
     2977                            sf_d( simple_fields_value($one_field["slug"]) ); 
     2978                            $content .= ob_get_clean(); 
     2979                        } 
     2980                         
     2981                    } else { 
     2982                        $content .= "<br>No slug for this field found (probably old field that has not been edited and saved)."; 
     2983                    } 
     2984                    $content .= "</ul>"; 
     2985                    $output_all .= $content; 
     2986                } 
     2987 
     2988                // Show example how to get all fields in one shot 
     2989                // But only show if field has more than one field, otherwise it's kinda not useful 
     2990                if ( sizeof($one_field_group["fields"]) > 1 ) { 
     2991                    $str_all_group_fields = preg_replace('!,$!', '', $str_all_group_fields); 
     2992                    $output_all .= "<ul style='background:#eee;padding:.5em;margin:0;display:block;'>"; 
     2993                    if ($one_field_group["repeatable"]) { 
     2994                        $content = "<li>Get all fields at once: use <code><b>simple_fields_values('".$str_all_group_fields."')</b></code> to get:"; 
    27602995                        ob_start(); 
    2761                         sf_d( simple_fields_values($one_field["slug"]) ); 
    2762                         $content .= ob_get_clean(); 
    2763          
    2764                         $content .= "<li>Use <code><b>simple_fields_value('".$one_field["slug"]."')</b></code> to get:"; 
    2765                         ob_start(); 
    2766                         sf_d( simple_fields_value($one_field["slug"]) ); 
     2996                        sf_d( simple_fields_values($str_all_group_fields) ); 
    27672997                        $content .= ob_get_clean(); 
    27682998                    } else { 
    2769                         $content .= "<li>No slug for this field found (probably old field that has not been edited and saved)."; 
     2999                        $content = "<li>Get all fields at once: use <code><b>simple_fields_value('".$str_all_group_fields."')</b></code> to get:"; 
     3000                        ob_start(); 
     3001                        sf_d( simple_fields_value($str_all_group_fields) ); 
     3002                        $content .= ob_get_clean(); 
    27703003                    } 
    2771                     $content .= "</ul></ul>"; 
    27723004                    $output_all .= $content; 
     3005                    $output_all .= "</ul>"; 
    27733006                } 
    2774             } 
     3007             
     3008            } // for each field group 
    27753009        } 
    27763010         
    27773011        if ($output_all) { 
     3012            $str_show_fields = __("Show fields.", "simple-fields"); 
     3013            $str_hide_fields = __("Hide fields.", "simple-fields"); 
    27783014            ?> 
    27793015            <script> 
     
    27813017                var $t = jQuery(t); 
    27823018                var $div_wrap = $t.closest("div.simple-fields-post-debug-wrap"); 
    2783                 $div_wrap.find("div.simple-fields-post-debug-content").toggle("fast"); 
     3019                var debug_content = $div_wrap.find("div.simple-fields-post-debug-content"); 
     3020                debug_content.toggle(); 
     3021                if (debug_content.is(":visible")) { 
     3022                    $t.text("<?php echo $str_hide_fields ?>"); 
     3023                } else { 
     3024                    $t.text("<?php echo $str_show_fields ?>"); 
     3025                } 
    27843026                return false; 
    27853027            } 
    27863028            </script> 
    27873029            <?php 
    2788              
    27893030            $output_all = ' 
    2790                 <div class="simple-fields-post-debug-wrap"> 
    2791                     This post has ' . $field_count . ' Simple Fields-fields attached. <a href="#" onclick="return simple_fields_post_debug_show_hide(this);">Show fields.</a> 
     3031                <div class="simple-fields-post-debug-wrap" style="display:block;margin:0;padding:0;"> 
     3032                    <p style="margin:0;padding:0;display:block;">This post has ' . $field_count . ' Simple Fields-fields attached. <a href="#" onclick="return simple_fields_post_debug_show_hide(this);">'.$str_show_fields.'</a></p> 
    27923033                    <div class="simple-fields-post-debug-content" style="display:none;">'.$output_all.'</div> 
    27933034                </div> 
    27943035                '; 
    27953036        } 
    2796          
     3037        // if a field has the slug caption the output will be [caption] and then it will crash with some shortcodes, so we try to fix that here 
     3038        $output_all = str_replace("[", "&#91;", $output_all); 
     3039        $output_all = str_replace("]", "&#93;", $output_all); 
    27973040        return $the_content . $output_all; 
    27983041    } 
    27993042 
     3043    /** 
     3044     * Retrieve and return extended return values for a field type 
     3045     */ 
     3046    function get_extended_return_values_for_field($field, $field_value) { 
     3047        /*           
     3048        radiobuttons 
     3049        file 
     3050        dropdown 
     3051        post 
     3052        user 
     3053        */ 
     3054 
     3055        $return_field_value = array(); 
     3056 
     3057        if ("file" === $field["type"]) { 
     3058 
     3059            // field is of type file 
     3060            // lets get more info about that file then, so we have most useful stuff in an array – hooray! 
     3061             
     3062            if (isset($field_value) && is_numeric($field_value)) { 
     3063                $file_id                             = (int) $field_value; 
     3064                $return_field_value["id"]            = $file_id; 
     3065                $return_field_value["is_image"]      = wp_attachment_is_image( $file_id ); 
     3066                $return_field_value["url"]           = wp_get_attachment_url( $file_id ); 
     3067                $return_field_value["mime"]          = get_post_mime_type( $file_id ); 
     3068 
     3069                // generate html for all registered image sizes 
     3070                $arr_sizes = array_merge(array("full"), get_intermediate_image_sizes()); 
     3071                $return_field_value["link"]      = array(); 
     3072                $return_field_value["image"]     = array(); 
     3073                $return_field_value["image_src"] = array(); 
     3074                foreach ($arr_sizes as $size_key) { 
     3075                    $return_field_value["link"][$size_key]      = wp_get_attachment_link( $file_id, $size_key ); 
     3076                    $return_field_value["image"][$size_key]     = wp_get_attachment_image( $file_id, $size_key ); 
     3077                    $return_field_value["image_src"][$size_key] = wp_get_attachment_image_src( $file_id, $size_key ); 
     3078                } 
     3079             
     3080                $return_field_value["metadata"] = wp_get_attachment_metadata( $file_id ); 
     3081                $return_field_value["post"] = get_post( $file_id ); 
     3082                 
     3083            } 
     3084 
     3085        } else if ("radiobuttons" === $field["type"]) { 
     3086             
     3087            // if radiobutton: get all values and mark which one is the selected 
     3088 
     3089            $type_radiobuttons_options = $field["type_radiobuttons_options"]; 
     3090 
     3091            $return_field_value["selected_value"]       = FALSE; 
     3092            $return_field_value["selected_radiobutton"] = array(); 
     3093            $return_field_value["radiobuttons"]         = array(); 
     3094 
     3095            foreach ($type_radiobuttons_options as $button_key => $button_value) { 
     3096             
     3097                if ($button_key == "checked_by_default_num") continue; 
     3098                 
     3099                if ($button_value["deleted"]) continue; 
     3100                 
     3101                $return_field_value["radiobuttons"][] = array( 
     3102                    "value"       => $button_value["value"], 
     3103                    "key"         => $button_key, 
     3104                    "is_selected" => ($field_value === $button_key) 
     3105                ); 
     3106                if ($field_value === $button_key) { 
     3107                    $return_field_value["selected_radiobutton"] = array( 
     3108                        "value"       => $button_value["value"], 
     3109                        "key"         => $button_key, 
     3110                        "is_selected" => TRUE 
     3111                    ); 
     3112                    $return_field_value["selected_value"] = $button_value["value"]; 
     3113                } 
     3114            } 
     3115                         
     3116        } else if ("dropdown" === $field["type"]) { 
     3117             
     3118            $type_dropdown_options = $field["type_dropdown_options"]; 
     3119 
     3120            $return_field_value["selected_value"]   = FALSE; 
     3121            $return_field_value["selected_option"]  = array(); 
     3122            $return_field_value["options"]          = array(); 
     3123 
     3124            foreach ($type_dropdown_options as $dropdown_key => $dropdown_value) { 
     3125 
     3126                if ($dropdown_value["deleted"]) continue; 
     3127                 
     3128                $return_field_value["options"][] = array( 
     3129                    "value"       => $dropdown_value["value"], 
     3130                    "key"         => $dropdown_key, 
     3131                    "is_selected" => ($field_value === $dropdown_key) 
     3132                ); 
     3133                if ($field_value === $dropdown_key) { 
     3134                    $return_field_value["selected_option"] = array( 
     3135                        "value"       => $dropdown_value["value"], 
     3136                        "key"         => $dropdown_key, 
     3137                        "is_selected" => TRUE 
     3138                    ); 
     3139                    $return_field_value["selected_value"] = $dropdown_value["value"]; 
     3140                } 
     3141            } 
     3142             
     3143        } else if ("post" === $field["type"]) { 
     3144 
     3145            if (isset($field_value) && is_numeric($field_value)) { 
     3146                $post_id = (int) $field_value; 
     3147                $return_field_value["id"]           = $post_id; 
     3148                $return_field_value["title"]        = get_the_title( $post_id ); 
     3149                $return_field_value["permalink"]    = get_permalink( $post_id ); 
     3150                $return_field_value["post"]         = get_post( $post_id ); 
     3151            } 
     3152             
     3153         
     3154        } else if ("user" === $field["type"]) { 
     3155 
     3156            if (isset($field_value) && is_numeric($field_value)) { 
     3157                 
     3158                $user_id = (int) $field_value; 
     3159                $return_field_value["id"]   = $user_id; 
     3160                 
     3161                // user is a WP_User object, 
     3162                // see this url for more info on what data you can get: 
     3163                // http://codex.wordpress.org/Function_Reference/get_userdata 
     3164                $user                                = get_user_by( "id", $user_id );                
     3165                $return_field_value["first_name"]    = $user->first_name; 
     3166                $return_field_value["last_name"]     = $user->last_name; 
     3167                $return_field_value["user_login"]    = $user->user_login; 
     3168                $return_field_value["user_email"]    = $user->user_email; 
     3169                $return_field_value["user_nicename"] = $user->user_nicename; 
     3170                $return_field_value["display_name"]  = $user->display_name; 
     3171                $return_field_value["user"]          = $user; 
     3172                 
     3173            } 
     3174 
     3175        } else if ("taxonomy" === $field["type"]) { 
     3176 
     3177            $taxonomy = get_taxonomy($field_value); 
     3178            $return_field_value["name"]             = ""; 
     3179            $return_field_value["singular_name"]    = ""; 
     3180            $return_field_value["plural_name"]      = ""; 
     3181            $return_field_value["taxonomy"]         = ""; 
     3182            if ($taxonomy) { 
     3183                $return_field_value["name"]          = $taxonomy->name; 
     3184                $return_field_value["singular_name"] = $taxonomy->labels->singular_name; 
     3185                $return_field_value["plural_name"]   = $taxonomy->labels->name; 
     3186                $return_field_value["taxonomy"]      = $taxonomy; 
     3187            } 
     3188 
     3189        } else if ("taxonomyterm" === $field["type"]) { 
     3190             
     3191            $type_taxonomyterm_options = $field["type_taxonomyterm_options"]; 
     3192 
     3193            // multiple tags can be selected 
     3194            $arr_terms = array(); 
     3195            if (isset($field_value) && is_array($field_value)) { 
     3196                foreach ($field_value as $one_term_id) { 
     3197                     
     3198                    $term = get_term_by("id", $one_term_id, $type_taxonomyterm_options["enabled_taxonomy"]); 
     3199                    $arr_terms[] = array( 
     3200                        "name" => $term->name, 
     3201                        "slug" => $term->slug, 
     3202                        "id"   => $term->term_id, 
     3203                        "term" => $term 
     3204                    ); 
     3205                     
     3206                } 
     3207            } 
     3208             
     3209            $return_field_value["terms"] = $arr_terms; 
     3210         
     3211        } else if ("date" === $field["type"]) { 
     3212 
     3213            // format = default in jquery = mm/dd/yy (year 4 digits) 
     3214            // sf_d($field_value); // 14/10/2012 
     3215            $return_field_value["saved_value"] = $field_value; 
     3216            if (isset($field_value)) { 
     3217                $field_value = trim($field_value); 
     3218                if (preg_match('!^\d{2}\/\d{2}\/\d{4}$!', $field_value)) { 
     3219                    $date = strtotime( str_replace('/', "-", $field_value) ); 
     3220                    $return_field_value["timestamp"] = $date; 
     3221                    $return_field_value["date_format"] = date(get_option('date_format'), $date); 
     3222                } 
     3223            } 
     3224             
     3225        } 
     3226             
     3227        return $return_field_value; 
     3228    } 
    28003229     
    28013230} // end class 
  • simple-fields/trunk/styles.css

    r609729 r614081  
    11ul.simple-fields-edit-field-groups-added-fields { 
    2     border-top: 1px solid #DFDFDF; 
    3     padding-top: 2em; 
    4     margin-top: 1em; 
     2    /*border-top: 1px solid #DFDFDF;*/ 
     3    /*padding-top: 2em;*/ 
     4    margin-top: 0; 
    55    position: relative; 
    66} 
     
    3131.simple-fields-field-group-one-field-name { 
    3232    font-size: 1.25em; 
     33    width: 20em !important; 
    3334} 
    3435 
    3536.simple-fields-field-group-one-field-row { 
    3637    margin-bottom: .75em; 
    37 } 
     38    /*overflow: auto;*/ 
     39} 
     40 
     41.simple-fields-field-group-one-field-row-radiobuttons-values { 
     42    margin-top: 2em; 
     43} 
     44 
     45.simple-fields-field-group-one-field-row-col-first, 
     46.simple-fields-field-group-one-field-row-col-second { 
     47    display: inline-block; 
     48    -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; 
     49    min-height: 1px; 
     50    vertical-align: top; 
     51} 
     52 
     53.simple-fields-field-group-one-field-row-col-first p, 
     54.simple-fields-field-group-one-field-row-col-second p { 
     55    margin: 0; 
     56} 
     57 
     58 
     59.simple-fields-field-group-one-field-row-col-first { 
     60    /* background-color: rgba(255, 0, 0, .1); */ 
     61    padding-right: 4em; 
     62} 
     63.simple-fields-field-group-one-field-row-col-second { 
     64    /* background-color: rgba(0, 255, 0, .1); */ 
     65    width: 80%; 
     66} 
     67 
     68.simple-fields-field-group-one-field-row-col-first, 
     69.simple-fields-field-group-one-field-row label { 
     70    width: 15%; 
     71} 
     72#simple-fields-field-group-existing-fields .description { 
     73    margin-left: 12.5em; 
     74} 
     75 
    3876 
    3977.simple-fields-field-group-one-field-row fieldset { 
     
    5088    display: block; 
    5189} 
     90.simple-fields-field-group-one-field-row label { 
     91    display: inline-block; 
     92} 
     93 
     94.simple-fields-field-group-one-field-row-col-first label { 
     95    width: auto; 
     96} 
     97 
     98.simple-fields-field-type-options label { 
     99    display: block; 
     100} 
     101#simple-fields-field-group-existing-fields .simple-fields-field-type-options .description { 
     102    margin-left: auto; 
     103} 
    52104 
    53105.simple-fields-field-group-one-field-row-description { 
     
    57109.simple-fields-field-group-one-field-row p textarea 
    58110{ 
    59     width: 100%; 
     111    /*width: 100%;*/ 
    60112} 
    61113.simple-fields-field-group-one-field-row p textarea { 
  • simple-fields/trunk/tests/SimpleFieldsTests/SimpleFieldsTest.php

    r611160 r614081  
    134134        $this->assertEquals($val, simple_fields_values("field_user", $post_id)); 
    135135 
     136    } 
     137 
     138    function testManuallyAddedFieldsExtendedReturn() 
     139    { 
     140     
     141        $post_id = 11; 
     142     
     143        // test single/first values 
     144        $vals = simple_fields_value("field_radiobuttons", $post_id, "extended_return=1"); 
     145        $vals_expected = array( 
     146            "selected_value" => "Radiobutton 3", 
     147            "selected_radiobutton" => array( 
     148                "value" => "Radiobutton 3", 
     149                "key" => "radiobutton_num_4", 
     150                "is_selected" => 1 
     151            ), 
     152            "radiobuttons" => array( 
     153                array( 
     154                    "value" => "Radiobutton 1", 
     155                    "key"   => "radiobutton_num_2", 
     156                    "is_selected" => "" 
     157                ), 
     158                array( 
     159                    "value" => "Radiobutton 2", 
     160                    "key"   => "radiobutton_num_3", 
     161                    "is_selected" => "" 
     162                ), 
     163                array( 
     164                    "value" => "Radiobutton 3", 
     165                    "key" => "radiobutton_num_4", 
     166                    "is_selected" => 1 
     167                ) 
     168            ) 
     169        ); 
     170        $this->assertEquals($vals_expected, $vals); 
     171         
     172        $vals = simple_fields_value("field_dropdown", $post_id, "extended_return=1"); 
     173        $vals_expected = array( 
     174                            'selected_value' => 'Dropdown 2', 
     175                            'selected_option' => array( 
     176                                'value' => 'Dropdown 2', 
     177                                'key' => 'dropdown_num_3', 
     178                                'is_selected' => true 
     179                            ), 
     180                            'options' => array( 
     181                                0 => array( 
     182                                    'value' => 'Dropdown 1', 
     183                                    'key' => 'dropdown_num_2', 
     184                                    'is_selected' => false 
     185                                ), 
     186                                1 => array( 
     187                                    'value' => 'Dropdown 2', 
     188                                    'key' => 'dropdown_num_3', 
     189                                    'is_selected' => true 
     190                                ), 
     191                                2 => array( 
     192                                    'value' => 'Dropdown 3', 
     193                                    'key' => 'dropdown_num_4', 
     194                                    'is_selected' => false 
     195                                ) 
     196                            ) 
     197                        ); 
     198 
     199        $this->assertEquals($vals_expected, $vals); 
     200 
     201        // check just keys for now, should check more of course 
     202        $vals = simple_fields_value("field_file", $post_id, "extended_return=1"); 
     203        #echo var_export($vals); 
     204        $attachment_id = 14; 
     205        $vals_expected = array( 
     206            'id' => 14, 
     207            'is_image' => true, 
     208            'url' => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     209            'mime' => 'image/jpeg', 
     210            'link' => array( 
     211                'full' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="1024" height="768" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-full" alt="product-cat-2" title="product-cat-2" /></a>', 
     212                'thumbnail' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="150" height="112" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-thumbnail" alt="product-cat-2" title="product-cat-2" /></a>', 
     213                'medium' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="300" height="225" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-medium" alt="product-cat-2" title="product-cat-2" /></a>', 
     214                'large' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="584" height="438" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large" alt="product-cat-2" title="product-cat-2" /></a>', 
     215                'post-thumbnail' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-post-thumbnail" alt="product-cat-2" title="product-cat-2" /></a>', 
     216                'large-feature' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large-feature" alt="product-cat-2" title="product-cat-2" /></a>', 
     217                'small-feature' => '<a href=\'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg\' title=\'product-cat-2\'><img width="400" height="300" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-small-feature" alt="product-cat-2" title="product-cat-2" /></a>' 
     218            ), 
     219            'image' => array( 
     220                'full' => '<img width="1024" height="768" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-full" alt="product-cat-2" title="product-cat-2" />', 
     221                'thumbnail' => '<img width="150" height="112" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-thumbnail" alt="product-cat-2" title="product-cat-2" />', 
     222                'medium' => '<img width="300" height="225" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-medium" alt="product-cat-2" title="product-cat-2" />', 
     223                'large' => '<img width="584" height="438" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large" alt="product-cat-2" title="product-cat-2" />', 
     224                'post-thumbnail' => '<img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-post-thumbnail" alt="product-cat-2" title="product-cat-2" />', 
     225                'large-feature' => '<img width="384" height="288" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-large-feature" alt="product-cat-2" title="product-cat-2" />', 
     226                'small-feature' => '<img width="400" height="300" src="http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg" class="attachment-small-feature" alt="product-cat-2" title="product-cat-2" />' 
     227            ), 
     228            'image_src' => array( 
     229                'full' => array( 
     230                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     231                    1 => 1024, 
     232                    2 => 768, 
     233                    3 => false 
     234                ), 
     235                'thumbnail' => array( 
     236                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     237                    1 => 150, 
     238                    2 => 112, 
     239                    3 => false 
     240                ), 
     241                'medium' => array( 
     242                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     243                    1 => 300, 
     244                    2 => 225, 
     245                    3 => false 
     246                ), 
     247                'large' => array( 
     248                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     249                    1 => 584, 
     250                    2 => 438, 
     251                    3 => false 
     252                ), 
     253                'post-thumbnail' => array( 
     254                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     255                    1 => 384, 
     256                    2 => 288, 
     257                    3 => false 
     258                ), 
     259                'large-feature' => array( 
     260                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     261                    1 => 384, 
     262                    2 => 288, 
     263                    3 => false 
     264                ), 
     265                'small-feature' => array( 
     266                    0 => 'http://unit-test.simple-fields.com/wp/wp-content/uploads/2012/10/product-cat-2.jpeg', 
     267                    1 => 400, 
     268                    2 => 300, 
     269                    3 => false 
     270                ) 
     271            ), 
     272            'metadata' => array( 
     273                'width' => '1024', 
     274                'height' => '768', 
     275                'hwstring_small' => 'height=\'96\' width=\'128\'', 
     276                'file' => '2012/10/product-cat-2.jpeg', 
     277                'image_meta' => array( 
     278                    'aperture' => '0', 
     279                    'credit' => '', 
     280                    'camera' => '', 
     281                    'caption' => '', 
     282                    'created_timestamp' => '0', 
     283                    'copyright' => '', 
     284                    'focal_length' => '0', 
     285                    'iso' => '0', 
     286                    'shutter_speed' => '0', 
     287                    'title' => '' 
     288                ) 
     289            ), 
     290            'post' => get_post($attachment_id) 
     291        ); 
     292        $this->assertEquals($vals_expected, $vals); 
     293         
     294        $vals = simple_fields_value("field_post", $post_id, "extended_return=1"); 
     295        $vals_expected = array( 
     296            'id' => 11, 
     297            'title' => 'Post with fields', 
     298            'permalink' => 'http://unit-test.simple-fields.com/?p=11', 
     299            'post' => get_post($post_id) 
     300        ); 
     301        $this->assertEquals($vals_expected, $vals); 
     302         
     303        $vals = simple_fields_value("field_taxonomy", $post_id, "extended_return=1"); 
     304        $vals_expected = array( 
     305            'name' => 'post_tag', 
     306            'singular_name' => 'Tag', 
     307            'plural_name' => 'Tags', 
     308            "taxonomy" => get_taxonomy("post_tag") 
     309        ); 
     310        $this->assertEquals($vals_expected, $vals); 
     311         
     312        $vals = simple_fields_value("field_taxonomy_term", $post_id, "extended_return=1"); 
     313        $vals_expected = array( 
     314            "terms" => array( 
     315                0 => array( 
     316                    "name" => "Uncategorized", 
     317                    "slug" => "uncategorized", 
     318                    "id" => 1, 
     319                    "term" => get_term_by("id", 1, "category") 
     320                ) 
     321            ) 
     322        ); 
     323        $this->assertEquals($vals_expected, $vals); 
     324 
     325        $vals = simple_fields_value("field_date", $post_id, "extended_return=1"); 
     326        $vals_expected = array ( 'saved_value' => '12/10/2012', 'timestamp' => 1350000000, 'date_format' => 'October 12, 2012'); 
     327        $this->assertEquals($vals_expected, $vals); 
     328         
     329        $vals = simple_fields_value("field_user", $post_id, "extended_return=1"); 
     330        $vals_expected = array ( 'id' => 1, 'first_name' => '', 'last_name' => '', 'user_login' => 'admin', 'user_email' => 'admin@simple-fields.com', 'user_nicename' => 'admin', 'display_name' => 'admin', 'user' => get_user_by("id", 1)); 
     331        $this->assertEquals($vals_expected, $vals); 
     332                 
    136333    } 
    137334 
Note: See TracChangeset for help on using the changeset viewer.