Current Path : /var/www/html/clients/td-teplouchet.ru/old/sites/all/modules/node_field/ |
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.') ); } }