RCCWP_WritePostPage::RelatedTypeInterface PHP Method

RelatedTypeInterface() public static method

eeble
public static RelatedTypeInterface ( $customField, $inputName, $groupCounter, $fieldCounter )
    public static function RelatedTypeInterface($customField, $inputName, $groupCounter, $fieldCounter)
    {
        global $mf_domain, $wpdb;
        $mf_post_id = apply_filters('mf_source_post_data', @$_REQUEST['post']);
        $customFieldId = '';
        if (isset($mf_post_id)) {
            $customFieldId = $customField->id;
            $value = esc_attr(RCCWP_CustomField::GetCustomFieldValues(true, $mf_post_id, $customField->name, $groupCounter, $fieldCounter));
        } else {
            $value = $customField->default_value[0];
        }
        //get id of related type / panel
        $panel_id = (int) $customField->properties['panel_id'];
        $requiredClass = "";
        if ($customField->required_field) {
            $requiredClass = "field_required";
        }
        ?>
		<div class="mf_custom_field">
		<select tabindex="3" <?php 
        if ($customField->required_field) {
            echo 'validate="required:true"';
        }
        ?>
 class="<?php 
        echo $requiredClass;
        ?>
 listbox_mf" name="<?php 
        echo $inputName;
        ?>
">
			<option value=""><?php 
        _e('--Select--', $mf_domain);
        ?>
</option>
		
		<?php 
        $pn_cache = array();
        // setup a panel name cache (so we only look up the panel name ONCe for each panel ID)
        if ($panel_id == -4) {
            $options = get_posts("post_type=post&numberposts=-1&order=ASC&orderby=title");
        } elseif ($panel_id == -3) {
            $options = get_posts("post_type=page&numberposts=-1&order=ASC&orderby=title");
        } elseif ($panel_id == -2) {
            $options = get_posts("post_type=post&meta_key=_mf_write_panel_id&numberposts=-1&order=ASC&orderby=title");
        } elseif ($panel_id == -1) {
            $options = get_posts("post_type=page&meta_key=_mf_write_panel_id&numberposts=-1&order=ASC&orderby=title");
        } elseif ($panel_id == -6) {
            $options = get_posts("post_type=any&numberposts=-1");
        } elseif ($panel_id == -7) {
            $options = get_categories("hide_empty=0");
            $options = RCCWP_WritePostPage::mf_category_order($options, 0, 0);
        } elseif ($panel_id == -5) {
            remove_filter('posts_where', array('RCCWP_Query', 'ExcludeWritepanelsPosts'));
            add_filter('posts_fields', 'RelatedTypeFieldsFilter');
            add_filter('posts_orderby', 'RelatedTypeOrderByFilter');
            $options = get_posts(array('suppress_filters' => false, 'post_type' => 'any', 'meta_key' => '_mf_write_panel_id', 'nopaging' => true, 'order' => 'ASC'));
            remove_filter('posts_fields', 'RelatedTypeFieldsFilter');
            remove_filter('posts_orderby', 'RelatedTypeOrderByFilter');
            add_filter('posts_where', array('RCCWP_Query', 'ExcludeWritepanelsPosts'));
        } else {
            $options = get_posts("post_type=any&meta_key=_mf_write_panel_id&numberposts=-1&meta_value={$panel_id}&order=ASC&orderby=title");
        }
        $last_panel_name = "";
        // traversal (for grouping)
        foreach ($options as $option) {
            /* TRAVERSAL ADDITION - Adds grouping of related type fields when all write panels are listed -- */
            $panel_name = "";
            $display_panel_name = "";
            if ($panel_id == -5 || $panel_id == -2 || $panel_id == -1) {
                $panel_name = $pn_cache[$option->meta_value];
                if (!$panel_name) {
                    // look it up
                    $sql = $wpdb->prepare("SELECT name FROM " . MF_TABLE_PANELS . " WHERE id = %d", array($option->meta_value));
                    $panel_name = $wpdb->get_var($sql);
                    if ($panel_name) {
                        $pn_cache[$option->meta_value] = $panel_name;
                    }
                }
                $panel = RCCWP_CustomWritePanel::Get($option->meta_value);
                if (!$panel_name) {
                    $panel_name = "";
                    $display_panel_name = "";
                } else {
                    if ($panel->single) {
                        $display_panel_name = "";
                    } else {
                        $display_panel_name = "&nbsp;&nbsp;&nbsp;" . Inflect::singularize($panel_name) . " - ";
                    }
                }
                if ($panel_name != "" && $panel_name != $last_panel_name) {
                    if ($last_panel_name != "") {
                        echo "</optgroup>";
                    }
                    if ($panel->single) {
                        $last_panel_name = "";
                    } else {
                        echo '<optgroup label="' . Inflect::pluralize($panel_name) . '">';
                        $last_panel_name = $panel_name;
                    }
                }
            }
            /* END TRAVERSAL ADDITION */
            if ($panel_id == -7) {
                $selected = $option->term_id == $value ? 'selected="selected"' : '';
                ?>
                    <option value="<?php 
                echo $option->term_id;
                ?>
" <?php 
                echo $selected;
                ?>
><?php 
                echo $display_panel_name . $option->name;
                ?>
</option><!-- TRAVERSAL UPDATE, adds display panel name as prefix -->
                       <?php 
            } else {
                $selected = $option->ID == $value ? 'selected="selected"' : '';
                ?>
                    <option value="<?php 
                echo $option->ID;
                ?>
" <?php 
                echo $selected;
                ?>
><?php 
                echo $display_panel_name . $option->post_title;
                ?>
</option><!-- TRAVERSAL UPDATE, adds display panel name as prefix -->
                       <?php 
            }
        }
        // TRAVERSAL ADDITION, closes optgroup
        if ($last_panel_name != "") {
            echo "</optgroup>";
        }
        // END TRAVERSAL ADDITION
        ?>

		</select></div>
		<?php 
        if ($customField->required_field) {
            ?>
			<div class="mf_message_error"><label for="<?php 
            echo $inputName;
            ?>
" class="error_magicfields error"><?php 
            _e("This field is required", $mf_domain);
            ?>
</label></div>
		<?php 
        }
        ?>
		
		<?php 
    }

Usage Example

コード例 #1
0
    /**
     * @todo Add documentation
     */
    function CustomFieldInterface($customFieldId, $groupCounter = 1, $fieldCounter = 1, $customGroup_id = 0)
    {
        global $mf_domain;
        require_once "RC_Format.php";
        $customField = RCCWP_CustomField::Get($customFieldId);
        $customFieldName = RC_Format::GetInputName(attribute_escape($customField->name));
        $customFieldTitle = attribute_escape($customField->description);
        $customFieldHelp = htmlentities2($customField->help_text);
        $groupId = $customGroup_id;
        $inputName = $customFieldId . "_" . $groupCounter . "_" . $fieldCounter . "_" . $groupId . "_" . $customFieldName;
        // Create input tag name
        if ($fieldCounter > 1 && $customField->duplicate == 0) {
            return;
        }
        if ($fieldCounter > 1) {
            $titleCounter = " ({$fieldCounter})";
        }
        $field_group = RCCWP_CustomGroup::Get($customField->group_id);
        ?>
		<div class="mf-field <?php 
        echo str_replace(" ", "_", $customField->type);
        ?>
" id="row_<?php 
        echo $inputName;
        ?>
">
			<label for="<?php 
        echo $inputName;
        ?>
">
				<?php 
        if (empty($titleCounter)) {
            $titleCounter = "";
        }
        ?>
				<?php 
        echo $customFieldTitle . $titleCounter;
        ?>
				<?php 
        if (!empty($customFieldHelp)) {
            ?>
					<small class="tip">(what's this?)<span class="field_help"><?php 
            echo $customFieldHelp;
            ?>
</span></small>
				<?php 
        }
        ?>
			</label>
			<span>
				<p class="error_msg_txt" id="fieldcellerror_<?php 
        echo $inputName;
        ?>
" style="display:none"></p>
				<?php 
        switch ($customField->type) {
            case 'Textbox':
                RCCWP_WritePostPage::TextboxInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Multiline Textbox':
                RCCWP_WritePostPage::MultilineTextboxInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Checkbox':
                RCCWP_WritePostPage::CheckboxInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Checkbox List':
                RCCWP_WritePostPage::CheckboxListInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Radiobutton List':
                RCCWP_WritePostPage::RadiobuttonListInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Dropdown List':
                RCCWP_WritePostPage::DropdownListInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Listbox':
                RCCWP_WritePostPage::ListboxInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'File':
                RCCWP_WritePostPage::FileInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Image':
                RCCWP_WritePostPage::PhotoInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Date':
                RCCWP_WritePostPage::DateInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Audio':
                RCCWP_WritePostPage::AudioInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Color Picker':
                RCCWP_WritePostPage::ColorPickerInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            case 'Slider':
                RCCWP_WritePostPage::SliderInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
                //eeble
            //eeble
            case 'Related Type':
                RCCWP_WritePostPage::RelatedTypeInterface($customField, $inputName, $groupCounter, $fieldCounter);
                break;
            default:
        }
        if ($fieldCounter == 1) {
            ?>
					<?php 
            if ($customField->duplicate != 0) {
                ?>
					<br />
					
					 <a class ="typeHandler" href="javascript:void(0);" id="type_handler-<?php 
                echo $inputName;
                ?>
" > 
						<img class="duplicate_image"  src="<?php 
                echo MF_URI;
                ?>
images/duplicate.png" alt="<?php 
                _e('Add field duplicate', $mf_domain);
                ?>
"/>  <?php 
                _e('Duplicate', $mf_domain);
                ?>
					</a>
					<?php 
            }
            ?>
					<?php 
        } else {
            ?>
					<br />
					<a class ="delete_duplicate_field" href="javascript:void(0)" id="delete_field_repeat-<?php 
            echo $inputName;
            ?>
"> 
						<img class="duplicate_image"  src="<?php 
            echo MF_URI;
            ?>
images/delete.png" alt="<?php 
            _e('Remove field duplicate', $mf_domain);
            ?>
 "/> <?php 
            _e('Remove', $mf_domain);
            ?>
 
					</a>
				<?php 
        }
        ?>
				<input type="hidden" name="rc_cwp_meta_keys[]" value="<?php 
        echo $inputName;
        ?>
" />
		</span>
		</div>
	<?php 
    }
All Usage Examples Of RCCWP_WritePostPage::RelatedTypeInterface