/**
 * Meta boxes contents output.
 *
 * @param type $post
 * @param type $args
 */
function wpcf_pr_admin_post_meta_box_output($post, $args)
{
    if (empty($post) || empty($post->ID)) {
        return array();
    }
    global $wpcf;
    $output = '';
    $relationships = $args;
    $post_id = !empty($post->ID) ? $post->ID : -1;
    $current_post_type = wpcf_admin_get_edited_post_type($post);
    /*
     * Render has form (child form)
     */
    if (!empty($relationships['has'])) {
        foreach ($relationships['has'] as $post_type => $data) {
            if (isset($data['fields_setting']) && 'only_list' == $data['fields_setting']) {
                $output .= $wpcf->relationship->child_list($post, $post_type, $data);
            } else {
                $output .= $wpcf->relationship->child_meta_form($post, $post_type, $data);
            }
        }
    }
    /*
     * Render belongs form (parent form)
     */
    if (!empty($relationships['belongs'])) {
        $meta = get_post_custom($post_id);
        $belongs = array('belongs' => array(), 'posts' => array());
        foreach ($meta as $meta_key => $meta_value) {
            if (strpos($meta_key, '_wpcf_belongs_') === 0) {
                $temp_post = get_post($meta_value[0]);
                if (!empty($temp_post)) {
                    $belongs['posts'][$temp_post->ID] = $temp_post;
                    $belongs['belongs'][$temp_post->post_type] = $temp_post->ID;
                }
            }
        }
        foreach ($relationships['belongs'] as $post_type => $data) {
            $parent_post_type_object = get_post_type_object($post_type);
            $output .= '<div class="belongs">';
            $form = wpcf_pr_admin_post_meta_box_belongs_form($post, $post_type, $belongs);
            if (isset($form[$post_type])) {
                $form[$post_type]['#before'] = sprintf('<p>%s %s</p>', sprintf(__('This <em>%s</em> belongs to <em>%s</em>', 'wpcf'), get_post_type_object($current_post_type)->labels->singular_name, $parent_post_type_object->labels->singular_name), sprintf(' <a href="%s" class="button disabled">%s</a>', get_edit_post_link($form[$post_type]['#value']), $parent_post_type_object->labels->edit_item));
            }
            if ($x = wpcf_form_simple($form)) {
                $output .= $x;
            } else {
                $output .= $parent_post_type_object->labels->not_found;
            }
            $output .= '</div>';
            unset($parent_post_type_object);
        }
    }
    return $output;
}
Beispiel #2
0
 /**
  * Content for choose parent column.
  *
  * @return boolean
  */
 function _parent_form($post_parent = '')
 {
     $item_parents = wpcf_pr_admin_get_belongs($this->child_post_type);
     if ($item_parents) {
         foreach ($item_parents as $parent => $temp_data) {
             // Skip if only current available
             if ($parent == $this->parent_post_type) {
                 continue;
             }
             if (!empty($post_parent) && $parent != $post_parent) {
                 continue;
             }
             // Get parent ID
             $meta = get_post_meta($this->child->ID, '_wpcf_belongs_' . $parent . '_id', true);
             $meta = empty($meta) ? 0 : $meta;
             // Get form
             $belongs_data = array('belongs' => array($parent => $meta));
             $temp_form = wpcf_pr_admin_post_meta_box_belongs_form($this->child, $parent, $belongs_data);
             if (empty($temp_form)) {
                 return '<span class="types-small-italic">' . __('No parents available', 'wpcf') . '</span>';
             }
             unset($temp_form[$parent]['#suffix'], $temp_form[$parent]['#prefix'], $temp_form[$parent]['#title']);
             $temp_form[$parent]['#name'] = 'wpcf_post_relationship[' . $this->parent->ID . '][' . $this->child->ID . '][parents][' . $parent . ']';
             // Return HTML formatted output
             return wpcf_form_simple($temp_form);
         }
     }
     return '<span class="types-small-italic">' . __('No parents available', 'wpcf') . '</span>';
 }
/**
 * Has form table row.
 * 
 * @param type $post
 * @param type $post_type
 * @param type $data
 * @param type $parent_post_type
 * @param stdClass $item
 * @return string 
 */
function wpcf_pr_admin_post_meta_box_has_row($post, $post_type, $data, $parent_post_type, $item)
{
    $new_item = false;
    $date_trigger = false;
    // Set item
    if (empty($item)) {
        $item = new stdClass();
        $item->ID = 'new_' . mt_rand();
        $item->post_title = '';
        $item->post_content = '';
        $item->post_type = $post_type;
        $new_item = true;
    }
    // Cleanup data
    if (empty($data['fields_setting'])) {
        $data['fields_setting'] = 'all_cf';
    }
    $item_parents = isset($data['fields']['_wpcf_pr_parents']) ? $data['fields']['_wpcf_pr_parents'] : array();
    unset($data['fields']['_wpcf_pr_parents']);
    $row_data = array();
    $wpcf_fields = wpcf_admin_fields_get_fields();
    $row_data[] = wpcf_form_simple(array('field' => array('#type' => 'textfield', '#id' => 'wpcf_post_relationship_' . $item->ID . '_wp_title', '#name' => 'wpcf_post_relationship[' . $item->ID . '][_wp_title]', '#value' => $item->post_title, '#inline' => true, '#attributes' => $new_item || $data['fields_setting'] == 'all_cf_standard' || isset($data['fields']['_wp_title']) ? array() : array('readonly' => 'readonly'))));
    if ($data['fields_setting'] == 'specific' && !empty($data['fields'])) {
        foreach ($data['fields'] as $field_key => $true) {
            if ($field_key == '_wp_title') {
                continue;
            } else {
                if ($field_key == '_wp_body') {
                    $value = wp_trim_words($item->post_content, 10, null);
                    $element = wpcf_form_simple(array('field' => array('#type' => 'textarea', '#id' => 'wpcf_post_relationship_' . $item->ID . '_' . $field_key, '#name' => 'wpcf_post_relationship[' . $item->ID . '][' . $field_key . ']', '#value' => $item->post_content, '#attributes' => array('style' => 'width:300px;height:100px;'), '#inline' => true)));
                } else {
                    $wpcf_key = str_replace(WPCF_META_PREFIX, '', $field_key);
                    if (strpos($field_key, WPCF_META_PREFIX) === 0 && isset($wpcf_fields[$wpcf_key])) {
                        // Date trigger
                        if ($wpcf_fields[$wpcf_key]['type'] == 'date') {
                            $date_trigger = true;
                        }
                        // Get WPCF form
                        $element = wpcf_admin_post_process_fields($item, array('field' => $wpcf_fields[$wpcf_key]), false, false, 'post_relationship');
                        $element = array_shift($element);
                        // TODO There may still be problem with IDs
                        if (!in_array($wpcf_fields[$wpcf_key]['type'], array('image', 'file'))) {
                            $element['#id'] = 'wpcf_post_relationship_' . $item->ID . '_' . $wpcf_key;
                        }
                        $element['#name'] = 'wpcf_post_relationship[' . $item->ID . '][' . $field_key . ']';
                        $element['#inline'] = true;
                        unset($element['#title'], $element['#description']);
                        if (in_array($wpcf_fields[$wpcf_key]['type'], array('wysiwyg'))) {
                            $element['#type'] = 'textarea';
                            $element['#attributes'] = array('style' => 'width:300px;height:100px;');
                        }
                        if (in_array($wpcf_fields[$wpcf_key]['type'], array('checkbox'))) {
                            $element['#suffix'] = '<input type="hidden" name="wpcf_post_relationship_checkbox[' . $item->ID . '][' . $wpcf_key . ']" value="1" />';
                        }
                        $value = get_post_meta($item->ID, $field_key, true);
                        $element = wpcf_form_simple(array('field' => $element));
                    } else {
                        // Just render textfield
                        $value = get_post_meta($item->ID, $field_key, true);
                        $element = wpcf_form_simple(array('field' => array('#type' => 'textfield', '#id' => 'wpcf_post_relationship_' . $item->ID . '_' . $field_key, '#name' => 'wpcf_post_relationship[' . $item->ID . '][' . $field_key . ']', '#value' => $value, '#inline' => true)));
                    }
                }
            }
            $row_data[] = $element;
        }
        // Get other parents
        foreach ($item_parents as $parent => $temp_data) {
            if ($parent == $parent_post_type) {
                continue;
            }
            $meta = get_post_meta($item->ID, '_wpcf_belongs_' . $parent . '_id', true);
            $meta = empty($meta) ? 0 : $meta;
            $belongs_data = array('belongs' => array($parent => $meta));
            $temp_form = wpcf_pr_admin_post_meta_box_belongs_form($item, $parent, $belongs_data);
            unset($temp_form[$parent]['#suffix'], $temp_form[$parent]['#prefix'], $temp_form[$parent]['#title']);
            $temp_form[$parent]['#name'] = 'wpcf_post_relationship[' . $item->ID . '][parents][' . $parent . ']';
            $row_data[] = wpcf_form_simple($temp_form);
        }
    } else {
        $groups = wpcf_admin_post_get_post_groups_fields($item, 'post_relationships');
        if ($data['fields_setting'] == 'all_cf_standard') {
            $element = wpcf_form_simple(array('field' => array('#type' => 'textarea', '#id' => 'wpcf_post_relationship_' . $item->ID . '_wp_body', '#name' => 'wpcf_post_relationship[' . $item->ID . '][_wp_body]', '#value' => $item->post_content, '#attributes' => array('style' => 'width:300px;height:100px;'), '#inline' => true)));
            $row_data[] = $element;
        }
        foreach ($groups as $group) {
            foreach ($group['fields'] as $field) {
                // Date trigger
                if ($field['type'] == 'date') {
                    $date_trigger = true;
                }
                // Get WPCF form
                $element_org = wpcf_admin_post_process_fields($item, array('field' => $field), false, false, 'post_relationship');
                $element = array_shift($element_org);
                // @todo Check if this is needed for skype only
                //                if ($field['type'] == 'skype') {
                //                    $temp_second_element = array_pop($element_org);
                //                    if (!empty($temp_second_element['#validate'])) {
                //                        $element['#validate'] = $temp_second_element['#validate'];
                //                    }
                //
                //                }
                // TODO Monitor if may still be problem with IDs
                if (!in_array($field['type'], array('image', 'file'))) {
                    $element['#id'] = 'wpcf_post_relationship_' . $item->ID . '_' . $field['id'];
                }
                $element['#name'] = 'wpcf_post_relationship[' . $item->ID . '][' . wpcf_types_get_meta_prefix($field) . $field['slug'] . ']';
                $element['#inline'] = true;
                unset($element['#title'], $element['#description']);
                if (in_array($field['type'], array('wysiwyg'))) {
                    $element['#type'] = 'textarea';
                    $element['#attributes'] = array('style' => 'width:300px;height:100px;');
                }
                if (in_array($field['type'], array('checkbox'))) {
                    $element['#suffix'] = '<input type="hidden" name="wpcf_post_relationship_checkbox[' . $item->ID . '][' . wpcf_types_get_meta_prefix($field) . $field['slug'] . ']" value="1" />';
                }
                $value = get_post_meta($item->ID, wpcf_types_get_meta_prefix($field) . $field['slug'], true);
                $element = array('field' => $element);
                $element = wpcf_form_simple($element);
                $row_data[] = $element;
            }
        }
        // Get all parents
        $item_parents = wpcf_pr_admin_get_belongs($post_type);
        if ($item_parents) {
            foreach ($item_parents as $parent => $temp_data) {
                if ($parent == $parent_post_type) {
                    continue;
                }
                $meta = get_post_meta($item->ID, '_wpcf_belongs_' . $parent . '_id', true);
                $meta = empty($meta) ? 0 : $meta;
                $belongs_data = array('belongs' => array($parent => $meta));
                $temp_form = wpcf_pr_admin_post_meta_box_belongs_form($item, $parent, $belongs_data);
                unset($temp_form[$parent]['#suffix'], $temp_form[$parent]['#prefix'], $temp_form[$parent]['#title']);
                $temp_form[$parent]['#name'] = 'wpcf_post_relationship[' . $item->ID . '][parents][' . $parent . ']';
                $row_data[] = wpcf_form_simple($temp_form);
            }
        }
    }
    if (!empty($row_data)) {
        $output = '';
        $output .= '<tr><td>' . implode('</td><td>', $row_data) . '<input type="hidden" name="wpcf_post_relationship[' . $item->ID . '][post_type]" value="' . $post_type . '" /></td><td class="actions">' . '<a href="' . admin_url('admin-ajax.php?action=wpcf_ajax&amp;' . 'wpcf_action=pr_save_child_post&amp;post_type_parent=' . $parent_post_type . '&amp;post_id=' . $post->ID . '&amp;post_type_child=' . $post_type . '&_wpnonce=' . wp_create_nonce('pr_save_child_post')) . '" class="wpcf-pr-save-ajax button-secondary">' . __('Save') . '</a>';
        $output .= strpos($item->ID, 'new_') === false ? ' <a href="' . get_edit_post_link($item->ID) . '" class="button-secondary">' . __('Edit') . '</a>' : '';
        $output .= strpos($item->ID, 'new_') === false ? ' <a href="' . admin_url('admin-ajax.php?action=wpcf_ajax&amp;' . 'wpcf_action=pr_delete_child_post' . '&amp;post_id=' . $item->ID . '&_wpnonce=' . wp_create_nonce('pr_delete_child_post')) . '" class="wpcf-pr-delete-ajax button-secondary">' . __('Delete') . '</a>' : '';
        if ($date_trigger) {
            $output .= '<script type="text/javascript">
        //<![CDATA[
        jQuery(document).ready(function(){
            wpcfFieldsDateInit("#wpcf-post-relationship");
        });
        //]]>
    </script>';
        }
        $output .= wpcf_form_render_js_validation('#post', false) . '</td></tr>';
        return $output;
    }
    return $output = '<tr><td><span style="color:Red;">' . __('Error occured', 'wpcf') . '</span></td></tr>';
}
/**
 * Meta boxes contents output.
 *
 * @param type $post
 * @param type $args
 */
function wpcf_pr_admin_post_meta_box_output($post, $args)
{
    if (empty($post) || empty($post->ID)) {
        return array();
    }
    global $wpcf;
    $output = '';
    $relationships = $args;
    $post_id = !empty($post->ID) ? $post->ID : -1;
    $current_post_type = wpcf_admin_get_edited_post_type($post);
    /*
     * Render has form (child form)
     */
    if (!empty($relationships['has'])) {
        foreach ($relationships['has'] as $post_type => $data) {
            if (isset($data['fields_setting']) && 'only_list' == $data['fields_setting']) {
                $output .= $wpcf->relationship->child_list($post, $post_type, $data);
            } else {
                $output .= $wpcf->relationship->child_meta_form($post, $post_type, $data);
            }
        }
    }
    /*
     * Render belongs form (parent form)
     */
    if (!empty($relationships['belongs'])) {
        $meta = get_post_custom($post_id);
        $belongs = array('belongs' => array(), 'posts' => array());
        foreach ($meta as $meta_key => $meta_value) {
            if (strpos($meta_key, '_wpcf_belongs_') === 0) {
                $temp_post = get_post($meta_value[0]);
                if (!empty($temp_post)) {
                    $belongs['posts'][$temp_post->ID] = $temp_post;
                    $belongs['belongs'][$temp_post->post_type] = $temp_post->ID;
                }
            }
        }
        foreach ($relationships['belongs'] as $post_type => $data) {
            $output .= '<div style="margin: 20px 0 10px 0">';
            if ($x = wpcf_form_simple(wpcf_pr_admin_post_meta_box_belongs_form($post, $post_type, $belongs))) {
                $output .= sprintf(__('This <i>%s</i> belongs to:', 'wpcf'), get_post_type_object($current_post_type)->labels->singular_name);
                $output .= $x;
            } else {
                $output .= get_post_type_object($post_type)->labels->not_found;
            }
            $output .= '</div>';
        }
    }
    return $output;
}
/**
 * Meta boxes contents output.
 *
 * @param type $post
 * @param type $args
 */
function wpcf_pr_admin_post_meta_box_output($post, $args)
{
    if (empty($post->ID)) {
        return array();
    }
    global $wpcf;
    $output = '';
    $relationships = $args;
    $post_id = !empty($post->ID) ? $post->ID : -1;
    $current_post_type = wpcf_admin_get_edited_post_type($post);
    /*
     * Render has form (child form)
     */
    if (!empty($relationships['has'])) {
        foreach ($relationships['has'] as $post_type => $data) {
            $output .= $wpcf->relationship->child_meta_form($post, $post_type, $data);
        }
    }
    /*
     * Render belongs form (parent form)
     */
    if (!empty($relationships['belongs'])) {
        $meta = get_post_custom($post_id);
        $belongs = array('belongs' => array(), 'posts' => array());
        foreach ($meta as $meta_key => $meta_value) {
            if (strpos($meta_key, '_wpcf_belongs_') === 0) {
                $temp_post = get_post($meta_value[0]);
                if (!empty($temp_post)) {
                    $belongs['posts'][$temp_post->ID] = $temp_post;
                    $belongs['belongs'][$temp_post->post_type] = $temp_post->ID;
                }
            }
        }
        $output_temp = '';
        foreach ($relationships['belongs'] as $post_type => $data) {
            $output_temp .= wpcf_form_simple(wpcf_pr_admin_post_meta_box_belongs_form($post, $post_type, $belongs));
        }
        if (!empty($output_temp)) {
            $types_existing = get_option('wpcf-custom-types', array());
            $output .= '<div style="margin: 20px 0 10px 0">';
            $output .= sprintf(__('This <i>%s</i> belongs to:', 'wpcf'), $types_existing[$current_post_type]['labels']['singular_name']);
            $output .= '</div>' . $output_temp;
        }
    }
    return $output;
}