Beispiel #1
0
function _nxt_ajax_add_hierarchical_term()
{
    $action = $_POST['action'];
    $taxonomy = get_taxonomy(substr($action, 4));
    check_ajax_referer($action, '_ajax_nonce-add-' . $taxonomy->name);
    if (!current_user_can($taxonomy->cap->edit_terms)) {
        die('-1');
    }
    $names = explode(',', $_POST['new' . $taxonomy->name]);
    $parent = isset($_POST['new' . $taxonomy->name . '_parent']) ? (int) $_POST['new' . $taxonomy->name . '_parent'] : 0;
    if (0 > $parent) {
        $parent = 0;
    }
    if ($taxonomy->name == 'category') {
        $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array();
    } else {
        $post_category = isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ? (array) $_POST['tax_input'][$taxonomy->name] : array();
    }
    $checked_categories = array_map('absint', (array) $post_category);
    $popular_ids = nxt_popular_terms_checklist($taxonomy->name, 0, 10, false);
    foreach ($names as $cat_name) {
        $cat_name = trim($cat_name);
        $category_nicename = sanitize_title($cat_name);
        if ('' === $category_nicename) {
            continue;
        }
        if (!($cat_id = term_exists($cat_name, $taxonomy->name, $parent))) {
            $new_term = nxt_insert_term($cat_name, $taxonomy->name, array('parent' => $parent));
            $cat_id = $new_term['term_id'];
        }
        $checked_categories[] = $cat_id;
        if ($parent) {
            // Do these all at once in a second
            continue;
        }
        $category = get_term($cat_id, $taxonomy->name);
        ob_start();
        nxt_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids));
        $data = ob_get_contents();
        ob_end_clean();
        $add = array('what' => $taxonomy->name, 'id' => $cat_id, 'data' => str_replace(array("\n", "\t"), '', $data), 'position' => -1);
    }
    if ($parent) {
        // Foncy - replace the parent and all its children
        $parent = get_term($parent, $taxonomy->name);
        $term_id = $parent->term_id;
        while ($parent->parent) {
            // get the top parent
            $parent =& get_term($parent->parent, $taxonomy->name);
            if (is_nxt_error($parent)) {
                break;
            }
            $term_id = $parent->term_id;
        }
        ob_start();
        nxt_terms_checklist(0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids));
        $data = ob_get_contents();
        ob_end_clean();
        $add = array('what' => $taxonomy->name, 'id' => $term_id, 'data' => str_replace(array("\n", "\t"), '', $data), 'position' => -1);
    }
    ob_start();
    nxt_dropdown_categories(array('taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new' . $taxonomy->name . '_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $taxonomy->labels->parent_item . ' —'));
    $sup = ob_get_contents();
    ob_end_clean();
    $add['supplemental'] = array('newcat_parent' => $sup);
    $x = new nxt_Ajax_Response($add);
    $x->send();
}
Beispiel #2
0
/**
 * Display link categories form fields.
 *
 * @since 2.6.0
 *
 * @param object $link
 */
function link_categories_meta_box($link)
{
    ?>
<ul id="category-tabs" class="category-tabs">
	<li class="tabs"><a href="#categories-all"><?php 
    _e('All Categories');
    ?>
</a></li>
	<li class="hide-if-no-js"><a href="#categories-pop"><?php 
    _e('Most Used');
    ?>
</a></li>
</ul>

<div id="categories-all" class="tabs-panel">
	<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
		<?php 
    if (isset($link->link_id)) {
        nxt_link_category_checklist($link->link_id);
    } else {
        nxt_link_category_checklist();
    }
    ?>
	</ul>
</div>

<div id="categories-pop" class="tabs-panel" style="display: none;">
	<ul id="categorychecklist-pop" class="categorychecklist form-no-clear">
		<?php 
    nxt_popular_terms_checklist('link_category');
    ?>
	</ul>
</div>

<div id="category-adder" class="nxt-hidden-children">
	<h4><a id="category-add-toggle" href="#category-add"><?php 
    _e('+ Add New Category');
    ?>
</a></h4>
	<p id="link-category-add" class="nxt-hidden-child">
		<label class="screen-reader-text" for="newcat"><?php 
    _e('+ Add New Category');
    ?>
</label>
		<input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php 
    esc_attr_e('New category name');
    ?>
" aria-required="true" />
		<input type="button" id="category-add-submit" class="add:categorychecklist:linkcategorydiv button" value="<?php 
    esc_attr_e('Add');
    ?>
" />
		<?php 
    nxt_nonce_field('add-link-category', '_ajax_nonce', false);
    ?>
		<span id="category-ajax-response"></span>
	</p>
</div>
<?php 
}