PHP Classes

File: engine/modules/core/manager/manager.hook.inc

Recommend this page to a friend!
  Classes of Aldo Tripiciano   Quanta CMS   engine/modules/core/manager/manager.hook.inc   Download  
File: engine/modules/core/manager/manager.hook.inc
Role: Example script
Content type: text/plain
Description: Example script
Class: Quanta CMS
Manage content that works without a database
Author: By
Last change:
Date: 5 years ago
Size: 3,043 bytes
 

Contents

Class file image Download
<?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'] . '"';
  }
}