Your IP : 172.28.240.42


Current Path : /var/www/html/clients/td-teplouchet.ru/old/sites/all/modules/node_field/
Upload File :
Current File : /var/www/html/clients/td-teplouchet.ru/old/sites/all/modules/node_field/node_field.module

<?php

/**
 * Requirements.
 */
require_once 'model/node_field.db.inc';
require_once 'includes/node_field.field.inc';
require_once 'includes/node_field.api.inc';

// Constants
define('NODE_FIELD_OPTIONS_FIELD_DESCRIPTION', 'Possible values this field can contain. Enter one value per line in the key|label format.');

/**
 * Implements hook_menu().
 */
function node_field_menu() {
  $items = array();
  $items['admin/config/content/node-field'] = array(
    'title' => 'Node field settings',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('node_field_admin_settings_form'),
    'access arguments' => array('administer modules'),
    'type' => MENU_NORMAL_ITEM,
    'file' => 'includes/pages/node_field.admin.inc'
  );
  $items['node/%node_field_menu_loader_node/node-field'] = array(
    'title' => 'Node fields',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('node_field_node_field_form', 1),
    'access callback' => 'node_access',
    'access arguments' => array('update', 1),
    'type' => MENU_LOCAL_TASK,
    'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
    'file' => 'includes/node_field.form.node_field.inc',
  );
  $items['node/%node_field_menu_loader_node/node-field/%node_field/view'] = array(
    'title' => 'Node fields',
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => 0,
  );
  $items['node/%node_field_menu_loader_node/node-field/%node_field/edit'] = array(
    'title callback' => 'node_field_menu_title_callback',
    'title arguments' => array(3, 'edit'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('node_field_node_field_edit_form', 1, 3),
    'access callback' => 'node_access',
    'access arguments' => array('update', 1),
    'type' => MENU_LOCAL_TASK,
    'file' => 'includes/node_field.form.node_field.inc',
    'weight' => 1,
  );
  $items['node/%node_field_menu_loader_node/node-field/%node_field/delete'] = array(
    'title callback' => 'node_field_menu_title_callback',
    'title arguments' => array(3, 'delete'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('node_field_node_field_delete_form', 1, 3),
    'access callback' => 'node_access',
    'access arguments' => array('update', 1),
    'type' => MENU_LOCAL_TASK,
    'file' => 'includes/node_field.form.node_field.inc',
    'weight' => 2,
  );
  return $items;
}

function node_field_menu_title_callback($field, $op) {
  if ($op == 'edit') {
    return t('Edit "!title" node field', array('!title' => $field['title']));
  }
  else {
    return t('Delete "!title" node field', array('!title' => $field['title']));
  }
}

/**
 * Implements hook_admin_paths().
 */
function node_field_admin_paths() {
  $paths = array(
    'node/*/node-field' => TRUE,
    'node/*/node-field/*' => TRUE,
  );
  return $paths;
}

/**
 * Menu node loader callback.
 */
function node_field_menu_loader_node_load($nid) {
  $node = node_load($nid);
  // Return if it is not a node.
  if (!$node) {
    return FALSE;
  }
  if (node_field_is_node_field_content_type($node->type)) {
    return $node;
  }
  else {
    return FALSE;
  }
}

/**
 * Menu node_field loader callback.
 */
function node_field_load($fid) {
  if ($fid) {
    return node_field_load_node_field($fid);
  }
  else {
    return FALSE;
  }
}

/**
 * Implements hook_theme().
 */
function node_field_theme() {
  $items = array();
  $items['node_field_field'] = array(
    'render element' => 'element',
    'template' => 'theme/tpl/node_field_field',
  );
  $items['node_field_fields'] = array(
    'render element' => 'element',
    'template' => 'theme/tpl/node_field_fields',
  );
  $items['node_field_node_field_page_form_fields'] = array(
    'render element' => 'container',
    'file' => 'theme/node_field.template.inc',
  );
  return $items;
}

/**
 * Implements hook_field_extra_fields().
 */
function node_field_field_extra_fields() {
  $items = array();
  $options = variable_get('node_field_node_types', array());
  foreach ($options as $option) {
    if (empty($option)) {
      continue;
    }
    $items['node'][$option] = array(
      'display' => array(
        'node_fields' => array(
          'label' => t('Node fields'),
          'description' => t('Node fields'),
          'weight' => 0,
        ),
      ),
      'form' => array(
        'node_fields' => array(
          'label' => t('Node fields'),
          'description' => t('Node fields'),
          'visible' => TRUE,
          'weight' => 0,
        ),
      ),
    );
  }
  return $items;
}

/**
 * Implements hook_node_view().
 */
function node_field_node_view($node, $view_mode, $langcode) {
  if (node_field_is_node_field_content_type($node->type)) {
    require_once 'includes/pages/node_field.pages.node.inc';
    // Adding node_fields to content.
    node_field_node_content_add_node_fields($node);
  }
}

/**
 * Implements hook_node_update().
 * 
 * Allows to change node fields param in code.
 * Use node_field_get_node_fields and node_fields_set_node_fields functions.
 */
function node_field_node_update($node) {
  if (node_field_is_node_field_content_type($node->type)) {
    if (!node_field_is_node_fields_changed($node)) {
      return;
    }
    $node_fields = node_field_get_node_fields($node);
    foreach ($node_fields as $field) {
      if (!empty($field['delete'])) {
        node_field_delete_node_field($field);
      }
      elseif (!empty($field['id'])) {
        node_field_update_node_field($field);
      }
      else {
        node_field_create_node_field($field);
      }
    }
  }
}

/**
 * Implements hook_node_delete().
 */
function node_field_node_delete($node) {
  if (node_field_is_node_field_content_type($node->type)) {
    $node_fields = node_field_get_node_fields($node);
    if ($node_fields) {
      node_field_delete_node_fields($node);
    }
  }
}

/**
 * Implements hook_form_alter().
 */
function node_field_form_node_form_alter(&$form, &$form_state) {
  $node = $form_state['node'];
  if (node_field_is_node_field_content_type($node->type)) {
    if (empty($node->nid)) {
      return;
    }
    form_load_include($form_state, 'inc', 'node_field', 'includes/node_field.form');
    node_field_node_form_edit($form, $form_state);
  }
}

/**
 * Implements hook_node_submit().
 */
function node_field_node_submit($node, $form, &$form_state) {
  if (isset($form_state['values']['node_fields'])) {
    drupal_alter('node_field_node_submit', $form_state);
    foreach ($form_state['values']['node_fields'] as $fid => $value) {
      $field = array(
        'id' => $fid,
        'value' => $value,
      );
      node_field_update_node_field($field);
    }
  }
}

/**
 * Implements hook_taxonomy_term_delete().
 */
function node_field_taxonomy_term_delete($term) {
  // Delete taxonomy node field values if term was deleted.
  $query_fields = array(
    'value' => $term->tid,
    'type' => 'taxonomy',
  );
  $node_fields = node_field_db_field_select($query_fields);
  foreach ($node_fields as $item) {
    $item['value'] = NULL;
    drupal_alter('node_field_term_default_value', $item);
    node_field_update_node_field($item);
  }
}

/**
 * Implements hook_preprocess_THEME().
 */
function node_field_preprocess_node_field_field(&$vars) {
  // Default element.
  $element = $vars['element'];
  // Class.
  $class = array();
  $class[] = $element['#node_field']['show_title'] ? 'with-title' : 'without-title';
  $class[] = 'type-' . $element['#node_field']['type'];
  $vars['class'] = implode(' ', $class);
  // Show title.
  $vars['show_title'] = $element['#node_field']['show_title'];
  $vars['hidden'] = $element['#node_field']['hidden'];
  $vars['title'] = $element['#node_field']['title'];
  $vars['value'] = $element['#node_field']['value'];
}

/**
 * Implements hook_preprocess_THEME().
 */
function node_field_preprocess_node_field_fields(&$vars) {
  $element = $vars['element'];
  $vars['children'] = $element['#children'];
}

/**
 * Implements hook_permission().
 */
function node_field_permission() {
  $items = array();
  $items['add classes to node fields'] = array(
    'title' => t('Add classes to node fields'),
    'description' => t('Allow to set additional classes to node fields.')
  );
  return $items;
}

/**
 * Implements hook_node_field_settings().
 */
function node_field_node_field_settings_alter($node_field, &$form) {
  if (user_access('add classes to node fields')) {
    $form['node_field_class'] = array(
      '#type' => 'textfield',
      '#title' => t('Additional Field Class(es)'),
      '#default_value' => !empty($node_field['settings']['node_field_class']) ? $node_field['settings']['node_field_class'] : NULL,
      '#size' => 60,
      '#weight' => 25,
      '#description' => t('Specify class(es) that you want to add to the field element. It (they) will be added to the class attribute of the element. Multiple classes must be separated by space.')
    );
  }
}