Changeset 12061

Show
Ignore:
Timestamp:
01/16/08 17:55:40 (12 months ago)
Author:
pottedmeat
Message:

Refs #5602

  • Update "Appears in Resources" output
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • util/branches/dev/jsdoc/jsdoc.module

    r12056 r12061  
    117117      if (arg(5) && arg(5) != 'view' && arg(5) != 'edit' && arg(5) != 'private') { 
    118118        $item = arg(4) . '/' . arg(5); 
    119         $detail = $node = jsdoc_object_node_load(arg(1), arg(2), arg(5), str_replace('__', '/', arg(4))); 
     119        $object = $node = jsdoc_object_node_load(arg(1), arg(2), arg(5), str_replace('__', '/', arg(4))); 
    120120      } 
    121121      // jsdoc/namespace/'HEAD'/'object'/object 
    122122      else { 
    123123        $item = arg(4); 
    124         $detail = $node = jsdoc_object_node_load(arg(1), arg(2), arg(4)); 
    125       } 
    126  
    127       if ($node->jsdoc_detail) { 
    128         $detail = $node->jsdoc_detail; 
     124        $object = $node = jsdoc_object_node_load(arg(1), arg(2), arg(4)); 
     125      } 
     126 
     127      if (jsdoc_get_variable_object($node)) { 
     128        $object = jsdoc_get_variable_object($node); 
    129129      } 
    130130      $items[] = array('path' => 'jsdoc/' . arg(1) . '/' . arg(2) . '/object/' . $item, 
     
    165165      ); 
    166166 
    167       if ($detail->jsdoc_type == 'Function') { 
    168         if ($detail->jsdoc_classlike || $detail->jsdoc_initialized) { 
     167      if (jsdoc_get_type($object) == 'Function') { 
     168        if (jsdoc_get_classlike($object) || jsdoc_is_initialized($object)) { 
    169169          $items[] = array('path' => 'jsdoc/'. arg(1) . '/' . arg(2) . '/object/' . $item . '/view/init', 
    170170            'title' => t('Initialized'), 
     
    172172            'weight' => -10 
    173173          ); 
    174           if (!$detail->jsdoc_initialized) { 
     174          if (!jsdoc_is_initialized($object)) { 
    175175            $items[] = array('path' => 'jsdoc/'. arg(1) . '/' . arg(2) . '/object/' . $item . '/view/normal', 
    176176              'title' => t('Uninitialized'), 
     
    12961296  if ($node->type == "jsdoc_object" || ($node->type == "jsdoc_variable" && jsdoc_get_variable_object($node))) { 
    12971297    if ($node->type == "jsdoc_variable") { 
    1298       $detail = jsdoc_get_variable_object($node); 
     1298      $object = jsdoc_get_variable_object($node); 
    12991299    } 
    13001300    else { 
    1301       $detail = $node; 
    1302     } 
    1303     $detail->jsdoc_parents = array(); 
    1304     $query = db_query("SELECT n.title, j.type FROM {jsdoc_variable_hierarchy} j JOIN {node_revisions} n ON (n.vid = j.parent_vid) WHERE j.type IN ('normal', 'prototype', 'instance') AND j.vid = %d GROUP BY BINARY n.title", $detail->vid); 
     1301      $object = $node; 
     1302    } 
     1303    $object->jsdoc_parents = array(); 
     1304    $query = db_query("SELECT n.title, j.type FROM {jsdoc_variable_hierarchy} j JOIN {node_revisions} n ON (n.vid = j.parent_vid) WHERE j.type IN ('normal', 'prototype', 'instance') AND j.vid = %d GROUP BY BINARY n.title", $object->vid); 
    13051305    while ($parent = db_fetch_object($query)) { 
    1306       $detail->jsdoc_parents['all'][] = $parent->title; 
    1307       $detail->jsdoc_parents[$parent->type][] = $parent->title; 
    1308       natsort($detail->jsdoc_parents[$parent->type]); 
    1309     } 
    1310  
    1311     $query = db_query("SELECT j.type, j.subtype, nr.title AS parent FROM {jsdoc_variable_hierarchy} j JOIN {node_revisions} nr ON (nr.vid = j.parent_vid) WHERE j.vid = %d AND j.type IN ('chain', 'mixin')", $detail->vid); 
     1306      $object->jsdoc_parents['all'][] = $parent->title; 
     1307      $object->jsdoc_parents[$parent->type][] = $parent->title; 
     1308      natsort($object->jsdoc_parents[$parent->type]); 
     1309    } 
     1310 
     1311    $query = db_query("SELECT j.type, j.subtype, nr.title AS parent FROM {jsdoc_variable_hierarchy} j JOIN {node_revisions} nr ON (nr.vid = j.parent_vid) WHERE j.vid = %d AND j.type IN ('chain', 'mixin')", $object->vid); 
    13121312    while ($chain = db_fetch_object($query)) { 
    13131313      if (!$chain->subtype) { 
     
    13151315      } 
    13161316      $detail->jsdoc_parents['all'][] = $chain->parent; 
    1317       $detail->jsdoc_parents[$chain->type][$chain->subtype][] = $chain->parent; 
    1318       natsort($detail->jsdoc_parents[$chain->type][$chain->subtype]); 
    1319     } 
    1320  
    1321     $detail->jsdoc_parents['all'] = array_unique($detail->jsdoc_parents['all']); 
    1322     natcasesort($detail->jsdoc_parents['all']); 
    1323     $node->jsdoc_parents = $detail->jsdoc_parents; 
     1317      $object->jsdoc_parents[$chain->type][$chain->subtype][] = $chain->parent; 
     1318      natsort($object->jsdoc_parents[$chain->type][$chain->subtype]); 
     1319    } 
     1320 
     1321    $object->jsdoc_parents['all'] = array_unique($object->jsdoc_parents['all']); 
     1322    natcasesort($object->jsdoc_parents['all']); 
     1323    $node->jsdoc_parents = $object->jsdoc_parents; 
    13241324  } 
    13251325  elseif ($node->type == 'jsdoc_variable') { 
     
    13431343 
    13441344  return $node->jsdoc_parents; 
     1345} 
     1346 
     1347function jsdoc_is_initialized(&$node) { 
     1348  if (isset($node->jsdoc_initialized)) { 
     1349    return $node->jsdoc_initialized; 
     1350  } 
     1351  return jsdoc_get_variable_object($node)->jsdoc_initialized; 
    13451352} 
    13461353 
     
    16881695} 
    16891696 
     1697/* 
    16901698function _jsdoc_detail_view($node) { 
    16911699  if ($node->type == 'jsdoc_variable') { 
     
    21732181  return $node; 
    21742182} 
     2183*/ 
    21752184 
    21762185/** 
     
    24642473  $full_url = $node->jsdoc_url; 
    24652474 
    2466   $resources = array(); 
    2467  
    24682475  $variables = array(); 
    24692476  $source = ''; 
     
    24712478  $parameters = array(); 
    24722479 
     2480  $resources = jsdoc_get_variable_resources($node); 
     2481 
    24732482  if ($node->type == 'jsdoc_object') { 
    24742483    $object = $node; 
    24752484  } 
    24762485  elseif ($node->type == 'jsdoc_variable') { 
    2477     $resource = jsdoc_get_resource($node); 
    24782486    $version = jsdoc_get_version($node); 
    24792487 
     
    24842492    $classlike = jsdoc_get_classlike($node); 
    24852493    $full_url = jsdoc_get_full_url($node); 
     2494 
    24862495    $object = jsdoc_get_variable_object($node); 
    2487  
    24882496    if ($object || count($resources)) { 
    24892497      $used = 1; 
     
    25232531  $display->formatted = _jsdoc_format_type($display->object_type, $classlike);; 
    25242532 
    2525   $display = _jsdoc_theme_clone($node); 
    25262533  if (!empty($resources)) { 
     2534    $display = _jsdoc_theme_clone($node); 
    25272535    $display->multiple = count($resources) != 1; 
    25282536    $display_resources = array(); 
     
    30173025} 
    30183026 
    3019 function jsdoc_get_resources($node, $environments) { 
    3020   if ($node->jsdoc_resources) { 
     3027function jsdoc_get_variable_resources(&$node) { 
     3028  if (isset($node->variable_resources)) { 
     3029    return $node->variable_resources; 
     3030  } 
     3031 
     3032  $node->variable_resources = array(); 
     3033  if ($node->type == 'jsdoc_variable') { 
     3034    $query = db_query("SELECT j.resource_nid AS nid, j.resource_vid AS vid FROM {jsdoc_objects} j JOIN {node_revisions} nr ON (nr.vid = j.vid) WHERE nr.title = '%s' AND BINARY nr.title = '%s' AND j.version = %d", $node->title, $node->title, jsdoc_get_version($node)->nid); 
     3035    while ($result = db_fetch_object($query)) { 
     3036      $node->variable_resources[] = _jsdoc_node_load($result->nid, $result->vid); 
     3037    } 
     3038  } 
     3039  elseif ($node->type == 'jsdoc_object') { 
     3040    if ($resource = jsdoc_get_resource($node)) { 
     3041      $node->variable_resources[] = $resource; 
     3042    } 
     3043  } 
     3044 
     3045  return $node->variable_resources; 
     3046} 
     3047 
     3048function jsdoc_get_resources(&$node, $environments) { 
     3049  if (isset($node->jsdoc_resources)) { 
    30213050    return; 
    30223051  } 
    30233052 
     3053  $node->jsdoc_provide_vids = array(); 
     3054  $node->jsdoc_resources = array(); 
     3055 
    30243056  if ($node->type == 'jsdoc_object') { 
    3025     $detail = $node; 
    3026   } 
    3027   elseif ($node->type == 'jsdoc_variable' and $node->jsdoc_detail) { 
    3028     $detail = $node->jsdoc_detail; 
    3029     if (!$detail->type) { 
    3030       $detail = _jsdoc_node_load($detail->nid, $detail->vid); 
    3031     } 
     3057    $object = $node; 
     3058  } 
     3059  elseif ($node->type == 'jsdoc_variable' && jsdoc_get_variable_object($node)) { 
     3060    $object = jsdoc_get_variable_object($node); 
    30323061  } 
    30333062 
     
    30353064  $node_resource = jsdoc_get_resource($node); 
    30363065 
    3037   if ($detail && $provide) { 
    3038     $detail_provide = jsdoc_get_provide($detail); 
     3066  if ($object && $provide) { 
     3067    $object_provide = jsdoc_get_provide($object); 
    30393068    $resource_tree = _jsdoc_get_tree($environments, $provide->vid); 
    30403069    $provide_vids = array(); 
     
    30523081      $resources[] = $resource_node; 
    30533082    } 
    3054     if ($detail_provide->vid && !in_array($detail_provide->vid, $provide_vids)) { 
    3055       $provide_vids[] = $detail_provide->vid; 
    3056       $resource_node = _jsdoc_node_load($detail_provide->nid, $detail_provide->vid); 
     3083    if ($object_provide->vid && !in_array($object_provide->vid, $provide_vids)) { 
     3084      $provide_vids[] = $object_provide->vid; 
     3085      $resource_node = _jsdoc_node_load($object_provide->nid, $object_provide->vid); 
    30573086      $resource_node->jsdoc_resource_depth = -1; 
    30583087      $resources[] = $resource_node; 
    30593088    } 
    3060     $node->jsdoc_provide_vids = $detail->jsdoc_provide_vids = array_unique($provide_vids); 
    3061     $node->jsdoc_resources = $detail->jsdoc_resources = $resources; 
    3062   } 
    3063   else { 
    3064     $node->jsdoc_provide_vids = array(); 
    3065     $node->jsdoc_resources = array(); 
    3066   } 
     3089    $node->jsdoc_provide_vids = $object->jsdoc_provide_vids = array_unique($provide_vids); 
     3090    $node->jsdoc_resources = $object->jsdoc_resources = $resources; 
     3091  } 
     3092 
     3093  return (object)array( 
     3094    'jsdoc_provide_vids' => $node->jsdoc_provide_vids, 
     3095    'jsdoc_resources' => $node->jsdoc_resources 
     3096  ); 
    30673097} 
    30683098