<?php 
 
/** 
 * Implements hook_load_includes(). 
 * 
 * @param Environment $env 
 *   The Environment. 
 * @param array $vars 
 *   An array of variables. 
 */ 
function manager_load_includes($env, $vars) { 
  $module_path = $env->getModulePath('manager'); 
  $env->addInclude($module_path . '/js/manager.js'); 
  $env->addInclude($module_path . '/css/manager.css'); 
} 
 
/** 
 * Implements hook_init(). 
 * 
 * @param Environment $env 
 *   The Environment. 
 * @param array $vars 
 *   An array of variables. 
 */ 
function manager_init($env, $vars) { 
  if ($env->getRequestedPath() == 'expand') { 
    $node = NodeFactory::load($env, $_GET['node']); 
    $manager = new Manager($env, $node); 
    print $manager->renderTree($_GET['path']); 
    exit; 
  } 
} 
 
/** 
 * Implement hook_shadow_FORMID_form(). 
 * 
 * @param Environment $env 
 *   The Environment. 
 * @param array $vars 
 *   An array of variables.. 
 */ 
function manager_shadow_manager_form($env, $vars) { 
  /** @var Shadow $shadow */ 
  $shadow = $vars['shadow']; 
 
  $node = $shadow->getNode(); 
  $manager = new Manager($env, $node); 
  $manager_cats = $shadow->getData('manager'); 
  if (empty($manager_cats)) { 
    $manager_cats = 'root'; 
  } 
 
  $shadow->addTab('manage categories', '<h2>Manage Categories</h2>' . '<div class="shadow-hint">In this screen you can select the categories in which you want to include the node.</div>' . $manager->renderTree($manager_cats), 4, 'manager-tree'); 
} 
 
/** 
 * Implements hook_node_add_complete(). 
 * 
 * @param Environment $env 
 *   The Environment. 
 * @param array $vars 
 *   An array of variables. 
 */ 
function manager_node_add_complete($env, $vars) { 
  // TODO: bugged on node add because we do not know the name of the node! 
  manager_node_edit_complete($env, $vars); 
} 
 
/** 
 * Implements hook_node_save(). 
 * Update all the symlinks that the user selected as checkboxes 
 * in the manager tree. 
 * 
 * @param Environment $env 
 *   The Environment. 
 * @param array $vars 
 *   An array of variables. 
 */ 
function manager_node_edit_complete($env, &$vars) { 
  /** @var Node $node */ 
  $node = $vars['node']; 
 
  foreach($vars['data'] as $label => $val) { 
    // If the user has selected a checkbox in the manager, attempt to create a symlink. 
    if (substr($label, 0, 8) == 'add-leaf') { 
      $leaf = substr($label, 9); 
      NodeFactory::linkNodes($env, $node->getName(), $leaf, array('if_exists' => 'ignore')); 
    } 
    // If the user has deselected a checkbox in the manager, attempt to remove the symlink. 
    elseif (substr($label, 0, 8) == 'rem-leaf') { 
 
      $leaf = substr($label, 9); 
      NodeFactory::unlinkNodes($env, $node->getName(), $leaf); 
    } 
  } 
} 
 
/** 
 * Implements hook_link_alter(). 
 * 
 * @param Environment $env 
 *   The Environment. 
 * @param array $vars 
 *   An array of variables. 
 */ 
function manager_link_alter($env, $vars) { 
  // TODO: bugged on node add because we do not know the name of the node! 
  if (isset($vars['attributes']['manager'])) { 
    $vars['link_data'][] = 'data-manager="' . $vars['attributes']['manager'] . '"'; 
  } 
} 
 
 
 
 |