diff -ub nodereferrer_d5/nodereferrer.info nodereferrer_d6/nodereferrer.info --- nodereferrer_d5/nodereferrer.info 2008-06-10 13:08:45.000000000 +0100 +++ nodereferrer_d6/nodereferrer.info 2008-06-11 18:19:47.000000000 +0100 @@ -1,11 +1,13 @@ ; $Id: nodereferrer.info,v 1.1 2007/09/18 10:57:20 dopry Exp $ name = Node Referrer description = provides a counter part to CCK's nodereference field. -dependencies = content nodereference +core = 6.x +dependencies[] = content +dependencies[] = nodereference package = CCK ; Information added by drupal.org packaging script on 2008-06-10 -version = "5.x-1.x-dev" +version = "6.x-1.x-dev" project = "nodereferrer" datestamp = "1213099725" diff -ub nodereferrer_d5/nodereferrer.install nodereferrer_d6/nodereferrer.install --- nodereferrer_d5/nodereferrer.install 2007-01-04 18:45:41.000000000 +0000 +++ nodereferrer_d6/nodereferrer.install 2008-06-11 18:19:47.000000000 +0100 @@ -1,7 +1,31 @@ CCK: Defines a field type for displaying referrers to a node. Note: Requires content.module.'); @@ -44,7 +44,7 @@ '#type' => 'checkboxes', '#title' => t('Referring Node Types'), '#multiple' => TRUE, - '#default_value' => isset($field['referrer_types']) ? $field['referrer_types'] : array(), + '#default_value' => is_array($field['referrer_types']) ? $field['referrer_types'] : array(), '#options' => node_get_types('names'), ); @@ -53,7 +53,7 @@ '#type' => 'checkboxes', '#title' => t('Referring Fields'), '#multiple' => TRUE, - '#default_value' => isset($field['referrer_fields']) ? $field['referrer_fields'] : array(), + '#default_value' => is_array($field['referrer_fields']) ? $field['referrer_fields'] : array(), '#options' => $options, ); @@ -61,7 +61,7 @@ '#type' => 'textfield', '#title' => t('Referrers Per Page'), '#description' => t('Referring nodes to display per page. 0 for no paging.'), - '#default_value' => isset($field['referrer_nodes_per_page']) ? $field['referrer_nodes_per_page'] : 0, + '#default_value' => is_int($field['referrer_nodes_per_page']) ? $field['referrer_nodes_per_page'] : 0, ); $form['referrer_order'] = array( @@ -73,7 +73,7 @@ 'TITLE_ASC' => t('Title Order'), 'TITLE_DESC' => t('Reverse Title Order'), ), - '#default_value' => isset($field['referrer_order']) ? $field['referrer_order'] : 'DESC', + '#default_value' => strlen($field['referrer_order']) ? $field['referrer_order'] : 'TITLE_ASC', ); return $form; @@ -88,51 +88,7 @@ */ function nodereferrer_field($op, &$node, $field, &$items, $teaser, $page) { static $element=3; - switch ($op) { - case 'view': - $pager = ''; - - if ($field['referrer_nodes_per_page']) { - // Unique Element for the pager. - $element++; - - $limit = $field['referrer_nodes_per_page']; - - // Fake the values set by pager query... - global $pager_page_array, $pager_total, $pager_total_items; - $page = isset($_GET['page']) ? $_GET['page'] : ''; - - // Convert comma-separated $page to an array, used by other functions. - $pager_page_array = explode(',', $page); - - // We calculate the total of pages as ceil(items / limit). - $pager_total_items[$element] = count($items); - $pager_total[$element] = ceil($pager_total_items[$element] / $limit); - $pager_page_array[$element] = max(0, min((int)$pager_page_array[$element], ((int)$pager_total[$element]) - 1)); - - // only display the select elements. - if (is_array($items)) { - $items = array_slice($items, $pager_page_array[$element] * $limit, $limit); - } - - $pager = theme('pager', array(), $limit, $element); - } - - // get the context - $context = $teaser ? 'teaser' : 'full'; - - // get the formatter - $formatter = isset($field['display_settings'][$context]['format']) ? $field['display_settings'][$context]['format'] : 'default'; - - foreach ($items as $delta => $item) { - $access_node = node_load($item['nid']); - if ($access_node && node_access('view', $access_node)) { - $items[$delta]['view'] = content_format($field, $item, $formatter); - } - } - return theme('field', $node, $field, $items, $teaser, $page) . $pager; - case 'load': $types = array_values(array_filter($field['referrer_types'])); $fields = array_values(array_filter($field['referrer_fields'])); @@ -172,43 +128,73 @@ 'default' => array( 'label' => 'Node Title Link (Default)', 'field types' => array('nodereferrer'), + 'multiple values' => CONTENT_HANDLE_CORE, ), 'plain' => array( 'label' => 'Node Title Plain Text', 'field types' => array('nodereferrer'), + 'multiple values' => CONTENT_HANDLE_CORE, ), 'teaser' => array( 'label' => 'Node Teaser', 'field types' => array('nodereferrer'), + 'multiple values' => CONTENT_HANDLE_CORE, ), 'full' => array( 'label' => 'Node Body', 'field types' => array('nodereferrer'), + 'multiple values' => CONTENT_HANDLE_CORE, ), - ); } /** - * Implementation of hook_field_formatter(). + * Implementation of hook_theme(). */ -function nodereferrer_field_formatter($field, $item, $formatter, $node) { - switch ($formatter) { - case 'plain': - return strip_tags($item['title']); - - case 'teaser': - return node_view(node_load($item['nid']), TRUE); +function nodereferrer_theme() { + return array( + 'nodereferrer_formatter_default' => array( + 'arguments' => array('element' => NULL), + ), + 'nodereferrer_formatter_plain' => array( + 'arguments' => array('element' => NULL), + ), + 'nodereferrer_formatter_teaser' => array( + 'arguments' => array('element' => NULL), + ), + 'nodereferrer_formatter_full' => array( + 'arguments' => array('element' => NULL), + ), + ); +} - case 'full': - return node_view(node_load($item['nid'])); +/** + * Theme function for 'default' field formatter. + */ +function theme_nodereferrer_formatter_default($element) { + return l($element['#item']['title'], 'node/'. $element['#item']['nid']); +} - default: - return l($item['title'], 'node/'. $item['nid']); +/** + * Theme function for 'plain' field formatter. + */ +function theme_nodereferrer_formatter_plain($element) { + return strip_tags($element['#item']['title']); +} - } +/** + * Theme function for 'teaser' field formatter. + */ +function theme_nodereferrer_formatter_teaser($element) { + return node_view(node_load($element['#item']['nid']), TRUE); } +/** + * Theme function for 'full' field formatter. + */ +function theme_nodereferrer_formatter_full($element) { + return node_view(node_load($element['#item']['nid'])); +} /** * Implementation of hook_widget_info(). @@ -218,36 +204,21 @@ 'nodereferrer_list' => array( 'label' => t('Read-Only List'), 'field types' => array('nodereferrer'), + 'multiple values' => CONTENT_HANDLE_MODULE, + 'callbacks' => array( + 'default value' => CONTENT_CALLBACK_NONE, + ), ), ); } /** - * Implementation of hook_widget(). + * Implementation of hook_content_is_empty */ -function nodereferrer_widget($op, &$node, $field, &$node_field) { - - // for some reason widgets must implement a form for them to work... - // I'm not sure that this is ideal for a set and forget service - // automated field, something in CCK in content_admin.inc:content_admin_field_overview_form - // need to be re-thunk I think. - - // token module tries to use the form input.. grr... so lets structure it like - // an item... - - switch ($op) { - case 'form': - - $form[$field['field_name']]= array( - '#tree' => TRUE, - '0' => array(), - ); - return $form; - } - // I do nothing. I'm a read only thing... not too into the widgets. +function nodereferrer_content_is_empty($item, $field) { + return FALSE; } - /** * Get an array of referrer nids, by node.type & field.type * @param nid @@ -366,122 +337,3 @@ } } -/** - * Implementation of hook_views_tables - */ -function nodereferrer_views_tables() { - $tables['nodereferrer'] = array( - 'filters' => array( - 'nodereferrer_filter_field' => array( - 'name' => t('NodeReferrer: by field'), - 'field' => 'nid', - 'operator' => 'nodereferrer_view_handler_operator_innotin', - 'handler' => 'nodereferrer_view_handler_filter_field', - 'option' => array( - '#type' => 'select', - '#options' => nodereferrer_nodereference_field_options(), - ), - 'help' => t('Allows views to query the node\'s references by a certain node reference field.'), - ), - 'nodereferrer_filter_type' => array( - 'name' => t('NodeReferrer: by node'), - 'field' => 'nid', - 'operator' => 'nodereferrer_view_handler_operator_innotin', - 'handler' => 'nodereferrer_view_handler_filter_type', - 'option' => array( - '#type' => 'select', - '#options' => nodereferrer_nodereference_field_options(), - ), - 'help' => t('Allows views to query the node\'s references by a certain node type.'), - ), - - ), - ); - return $tables; -} - -function nodereferrer_view_handler_operator_innotin() { - return array('in' => t('IN'), 'not in' => t('NOT IN')); -} - -function nodereferrer_view_handler_filter_field($op, $filter, $filterinfo, &$query) { - $nid = (int)$filter['value']; - $field = $filter['options']; - $fields = (empty($field)) ? array_keys(nodereferrer_nodereference_field_options()) : array($field); - $referrers = nodereferrer_referrers($nid, $fields); - $query->add_where('node.nid '. $filter['operator'] .' ('. implode(',', array_keys($referrers)) .') '); -} - -function nodereferrer_view_handler_filter_node_type($op, $filter, $filterinfo, &$query) { - $nid = $filter['value']; - $fields = array_keys(nodereferrer_nodereference_field_options()); - $node_type = $filter['options']; - $referrers = nodereferrer_referrers($nid, $fields, array($node_type)); - $query->add_where('node.nid '. $filter['operator'] .' ('. implode(',', array_keys($referrers)) .') '); -} - - -/** - * Implementation of hook_views_arguments(). - */ -function nodereferrer_views_arguments() { - $arguments = array( - 'nodereferrer_by_field' => array( - 'name' => t('NodeReference Field References: ID'), - 'handler' => t('nodereferrer_view_handler_argument_field'), - 'option' => array( - '#type' => 'select', - '#options' => nodereferrer_nodereference_field_options(), - ), - 'help' => t('This argument allows views to query the nodes that refer a certain node reference by field. - Specify referencing field In the options.'), - ), - 'nodereferrer_by_type' => array( - 'name' => t('Node Type References: ID'), - 'handler' => t('nodereferrer_view_handler_argument_type'), - 'option' => array( - '#type' => 'select', - '#options' => node_get_types('names'), - ), - 'help' => t('This argument allows views to query the nodes that refer to a certain node reference by node type. - Specify node type in the options field.'), - ), - - ); - return $arguments; -} - -// delegate argument handling to op specific callbacks. -function nodereferrer_view_handler_argument_field($op, &$query, $a1, $a2 = NULL) { - $function = 'nodereferrer_view_handler_argument_field_'. $op; - if (function_exists($function)) { - $function($query, $a1, $a2); - } -} - -function nodereferrer_view_handler_argument_field_filter(&$query, $argtype, $arg = null) { - $nid = (int)$arg; - $field = $argtype['options']; - $fields = (empty($field)) ? array_keys(nodereferrer_nodereference_field_options()) : array($field); - $referrers = nodereferrer_referrers($nid, $fields); - if (empty($referrers)) $referrers = array(0 => 0); - $query->add_where('node.nid in ('. implode(',', array_keys($referrers)) .') '); -} - -// delegate argument handling to op specific callbacks. -function nodereferrer_view_handler_argument_type($op, &$query, $a1, $a2 = NULL) { - $function = 'nodereferrer_view_handler_argument_type_'. $op; - if (function_exists($function)) { - $function($query, $a1, $a2); - } -} - -function nodereferrer_view_handler_argument_type_filter(&$query, $argtype, $arg = null) { - $nid = (int)$arg; - $fields = array_keys(nodereferrer_nodereference_field_options()); - $node_type = $argtype['options']; - $referrers = nodereferrer_referrers($nid, $fields, array($node_type)); - if (empty($referrers)) $referrers = array(0 => 0); - $query->add_where('node.nid in ('. implode(',', array_keys($referrers)) .') '); -} -