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 = " " . 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
}
/** * @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 }