wp_nonce_field('bp-docs-delete-folder-' . $folder_to_delete->ID); ?> </p> </form> <?php } ?> <?php } else { ?> <?php $folders = bp_docs_get_folders(array('display' => 'flat', 'parent_id' => null)); $walker = new BP_Docs_Folder_Manage_Walker(); ?> <?php $f = $walker->walk($folders, 10, array('foo' => 'bar')); ?> <h3><?php _e('Manage Existing Folders', 'bp-docs'); ?> </h3> <ul class="docs-folder-manage"> <?php echo $f; ?>
/** * @group bp_docs_delete_folder_contents */ public function test_bp_docs_delete_folder_contents() { $f1 = bp_docs_create_folder(array('name' => 'foo')); $f1_d1 = $this->factory->doc->create(); $f1_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f1_d1, $f1); bp_docs_add_doc_to_folder($f1_d2, $f1); $f2 = bp_docs_create_folder(array('name' => 'foo', 'parent' => $f1)); $f2_d1 = $this->factory->doc->create(); $f2_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f2_d1, $f2); bp_docs_add_doc_to_folder($f2_d2, $f2); $f3 = bp_docs_create_folder(array('name' => 'foo', 'parent' => $f1)); $f3_d1 = $this->factory->doc->create(); $f3_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f3_d1, $f3); bp_docs_add_doc_to_folder($f3_d2, $f3); $f4 = bp_docs_create_folder(array('name' => 'foo', 'parent' => $f2)); $f4_d1 = $this->factory->doc->create(); $f4_d2 = $this->factory->doc->create(); bp_docs_add_doc_to_folder($f4_d1, $f4); bp_docs_add_doc_to_folder($f4_d2, $f4); $this->assertTrue(bp_docs_delete_folder_contents($f1)); $f1_term = bp_docs_get_folder_term($f1); $f1_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f1_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f1_docs); $f2_term = bp_docs_get_folder_term($f2); $f2_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f2_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f2_docs); $f3_term = bp_docs_get_folder_term($f3); $f3_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f3_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f3_docs); $f4_term = bp_docs_get_folder_term($f4); $f4_docs = get_posts(array('post_type' => bp_docs_get_post_type_name(), 'tax_query' => array(array('taxonomy' => 'bp_docs_doc_in_folder', 'field' => 'term_id', 'terms' => $f4_term)), 'update_meta_cache' => false, 'update_term_cache' => false)); $this->assertSame(array(), $f4_docs); $this->assertSame(array(), bp_docs_get_folders(array('parent_id' => $f1))); $this->assertSame(array(), bp_docs_get_folders(array('parent_id' => $f2))); }
/** * Fetch <select> box for folder selection. * * @since 1.9 * * @param array $args { * Array of optional arguments. * @type int $group_id Include folders of a given group. * @type int $user_id Include folders of a given user. * @type int $selected ID of the selected folder. * } * @return string */ function bp_docs_folder_selector($args = array()) { $defaults = array('name' => 'bp-docs-folder', 'id' => 'bp-docs-folder', 'class' => '', 'group_id' => null, 'user_id' => null, 'selected' => null, 'doc_id' => null, 'force_global' => false, 'echo' => true); if (function_exists('bp_parse_args')) { $r = bp_parse_args($args, $defaults, 'bp_docs_folder_selector'); } else { $r = wp_parse_args($args, $defaults); } // If no manual 'selected' value is passed, try to infer it from the // current context if (is_null($r['selected'])) { if (!is_null($r['doc_id'])) { $doc_id = intval($r['doc_id']); } else { $maybe_doc = get_queried_object(); if (isset($maybe_doc->post_type) && bp_docs_get_post_type_name() === $maybe_doc->post_type) { $doc_id = $maybe_doc->ID; } } if (!empty($doc_id)) { $maybe_folders = wp_get_object_terms($doc_id, array('bp_docs_doc_in_folder')); // Take the first one if (!empty($maybe_folders)) { $r['selected'] = substr($maybe_folders[0]->slug, 22); } } } $types = array(); // Include Global folders either when force_global is true or there // are no others to show if ($r['force_global'] || empty($r['group_id']) && empty($r['user_id'])) { $types['global'] = array('label' => __('Global', 'bp-docs'), 'folders' => bp_docs_get_folders(array('display' => 'flat', 'group_id' => null, 'user_id' => null, 'parent_id' => null))); } if (!empty($r['group_id'])) { $group = groups_get_group(array('group_id' => $r['group_id'])); if (!empty($group->name)) { $types['group'] = array('label' => $group->name, 'folders' => bp_docs_get_folders(array('display' => 'flat', 'group_id' => $r['group_id'], 'parent_id' => null))); } } if (!empty($r['user_id'])) { $user = new WP_User($r['user_id']); if (!empty($user->ID)) { $label = $r['user_id'] === bp_loggedin_user_id() ? __('My Folders', 'bp-docs') : bp_core_get_user_displayname($r['user_id']); $types['user'] = array('label' => $label, 'folders' => bp_docs_get_folders(array('display' => 'flat', 'user_id' => $r['user_id'], 'parent_id' => null))); } } $walker = new BP_Docs_Folder_Dropdown_Walker(); // Global only if (1 === count($types) && isset($types['global'])) { $options = $walker->walk($types['global']['folders'], 10, array('selected' => $r['selected'])); // If there is more than one folder type (global + user or group), // organize into <optgroup> } else { $options = ''; foreach ($types as $type) { if (empty($type['folders'])) { continue; } $options .= sprintf('<optgroup label="%s">', esc_attr($type['label'])); $options .= $walker->walk($type['folders'], 10, array('selected' => $r['selected'])); $options .= '</optgroup>'; } } $options = '<option value="">' . __(' - None - ', 'bp-docs') . '</option>' . $options; $retval = sprintf('<select name="%s" id="%s" class="chosen-select %s">', esc_attr($r['name']), esc_attr($r['id']), esc_attr($r['class'])) . $options . '</select>'; if (false === $r['echo']) { return $retval; } else { echo $retval; } }
<table class="doctable"> <tbody> <?php if (bp_docs_enable_folders_for_current_context()) { ?> <?php if (bp_docs_include_folders_in_loop_view()) { ?> <?php foreach (bp_docs_get_folders() as $folder) { $folder_title = esc_html($folder->post_title); $folder_id = $folder->ID; $folder_url = esc_url(bp_docs_get_folder_url($folder_id)); ?> <tr class="folder-row"> <?php /* Just to keep things even */ ?> <?php if (bp_docs_enable_attachments()) { ?> <td class="attachment-clip-cell"> <?php bp_docs_attachment_icon(); ?> </td> <?php } ?> <td class="folder-row-name" colspan=10>
<?php $folders = bp_docs_get_folders('display=flat'); $walker = new BP_Docs_Folder_Walker(); ?> <?php $f = $walker->walk($folders, 10, array('foo' => 'bar')); ?> <?php if (bp_docs_current_user_can('manage_folders')) { ?> <a id="manage-folders-link" href="<?php echo add_query_arg('view', 'manage', remove_query_arg('view', bp_get_requested_url())); ?> "><?php _e('Manage Folders', 'bp-docs'); ?> </a> <?php } ?> <div style="clear:both"></div> <ul class="docs-folder-tree"> <?php echo $f; ?> </ul>