You are here

function noderelationships_noderef_page_search in Node Relationships 6

Build the search and reference page.

1 call to noderelationships_noderef_page_search()
noderelationships_noderef_page in ./noderelationships.pages.inc
Menu callback; Search or Create and reference.

File

./noderelationships.pages.inc, line 445
Implementation of user land pages.

Code

function noderelationships_noderef_page_search($referrer_type, $field_name, $referrer_field, $view_name, $display_id, $field_multiple) {

  // Load the view and check access to the given display.
  if (!($view = views_get_view($view_name)) || !$view
    ->access($display_id)) {
    drupal_set_message(t('Could not load the view %view:%display.', array(
      '%view' => $view_name,
      '%display' => $display_id,
    )), 'error');
    watchdog('noderelationships', 'Could not load the view %view:%display.', array(
      '%view' => $view_name,
      '%display' => $display_id,
    ), WATCHDOG_ERROR);
    return;
  }

  // Add javascript to the search and reference page.
  $js_settings = array(
    'maxAllowedValues' => $field_multiple == 1 ? 0 : ($field_multiple == 0 ? 1 : $field_multiple),
  );
  drupal_add_js(array(
    'nodeRelationships' => $js_settings,
  ), 'setting');
  jquery_ui_add(array(
    'ui.sortable',
    'effects.transfer',
  ));

  // Prepare values for the view arguments as follows:
  // 0 - type of the referrer node.
  // 1 - name of the nodereference field in the referrer type.
  $view_args = array(
    $referrer_type,
    $field_name,
  );

  // Make sure the view is completely valid.
  $errors = $view
    ->validate();
  if (is_array($errors)) {
    foreach ($errors as $error) {
      drupal_set_message($error, 'error');
    }
    return '';
  }

  // Execute the view display.
  $output = $view
    ->execute_display($display_id, $view_args);
  if (!empty($output)) {
    if ($referrer_field['multiple'] && $js_settings['maxAllowedValues'] != 1) {
      $output = theme('noderelationships_noderef_multiselect', $referrer_field) . "\n" . $output;
    }
    else {
      $output = theme('noderelationships_noderef_singleselect', $referrer_field) . "\n" . $output;
    }
  }
  return $output;
}