book['bid'])) {
// Only show the block if the user has view access for the top-level node.
$title = db_result(db_query(db_rewrite_sql('SELECT n.title FROM {node} n WHERE n.nid = %d'), $node->book['bid']));
if ($title) {
// Dynamic block
if (module_exists('admin') && variable_get('atrium_book_mode', 'ajax') === 'ajax') {
$data = array_shift(menu_tree_all_data($node->book['menu_name']));
if ($data['below']) {
drupal_add_css(drupal_get_path('module', 'admin') .'/includes/admin.menu.css');
drupal_add_js(drupal_get_path('module', 'admin') .'/includes/jquery.drilldown.js');
drupal_add_js(drupal_get_path('module', 'atrium_book') .'/atrium_book.js');
drupal_add_js(array('atriumBookPath' => url($_GET['q'])), 'setting');
$title = l($data['link']['title'], "node/{$node->book['bid']}", array('attributes' => array('class' => 'depth-0')));
return array(
'subject' => "{$title}",
'content' => menu_tree_output(array($data)),
);
}
}
// Boring old block
else {
$data = array_shift(menu_tree_page_data($node->book['menu_name']));
if ($data['below']) {
$title = l($data['link']['title'], "node/{$node->book['bid']}", array('attributes' => array('class' => 'depth-0')));
return array(
'subject' => $title,
'content' => menu_tree_output($data['below']),
);
}
}
}
}
}
/**
* Feature-aware book block. Show all books that belong to the current feature.
*/
function _atrium_book_block_book_all() {
if (module_exists('spaces')) {
$space = spaces_get_space();
}
// Retrieve node type arguments from active context if necessary.
$type = NULL;
foreach (context_get('context') as $context) {
if (!empty($context->conditions['bookroot']['values'])) {
$type = current($context->conditions['bookroot']['values']);
break;
}
}
// Dynamic block.
if (module_exists('admin') && variable_get('atrium_book_mode', 'ajax') === 'ajax') {
drupal_add_css(drupal_get_path('module', 'admin') .'/includes/admin.menu.css');
drupal_add_js(drupal_get_path('module', 'admin') .'/includes/jquery.drilldown.js');
drupal_add_js(drupal_get_path('module', 'atrium_book') .'/atrium_book.js');
drupal_add_js(array('atriumBookPath' => url($_GET['q'])), 'setting');
// Build a distinct cache ID per space & node type.
if ($space) {
$cid = $type ? "atrium_book:{$space->type}:{$space->id}:$type" : "atrium_book:{$space->type}:{$space->id}";
}
else {
$cid = $type ? "atrium_book:$type" : "atrium_book";
}
if ($cache = cache_get($cid)) {
$block = array(
'subject' => "". t('Notebook') ."",
'content' => $cache->data,
);
}
else if ($view = views_get_view('book_current')) {
// Since the tree is *complete* and will be cached, we clear out
// $_GET['q'] for the duration of the build to prevent stray active
// classes from being added to links in the tree.
$q = $_GET['q'];
$_GET['q'] = '';
// Generate book tree per book node in current space.
$data = array();
$view->execute_display('default', array($type));
if (is_array($view->result) && count($view->result)) {
foreach($view->result as $row) {
$data = array_merge($data, menu_tree_all_data(book_menu_name($row->nid)));
}
$data = array(array('link' => array('title' => t('Notebook'), 'href' => 'notebook'), 'below' => $data));
if ($output = menu_tree_output($data)) {
cache_set($cid, $output);
$block = array(
'subject' => "". t('Notebook') ."",
'content' => $output,
);
}
}
// Put path back.
$_GET['q'] = $q;
}
}
// Boring old block.
else if ($view = views_get_view('book_current')) {
$data = array();
$view->execute_display('default', array($type));
if (is_array($view->result) && count($view->result)) {
foreach($view->result as $row) {
$data = array_merge($data, menu_tree_page_data(book_menu_name($row->nid)));
}
}
if ($output = menu_tree_output($data)) {
$title = l(t('Notebook'), 'notebook', array('attributes' => array('class' => 'depth-0')));
$block = array(
'subject' => $title,
'content' => $output,
);
}
}
return isset($block) ? $block : NULL;
}