? proj-namespace-98278-34.patch
Index: project.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/project/project.inc,v
retrieving revision 1.121
diff -u -p -r1.121 project.inc
--- project.inc	9 Feb 2008 00:26:36 -0000	1.121
+++ project.inc	7 Mar 2008 18:13:35 -0000
@@ -70,20 +70,14 @@ function project_project_form($node) {
     }
   }
 
-  /* Project properties */
-  $form['project'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Project information'),
-    '#collapsible' => TRUE,
-  );
-  $form['project']['title'] = array(
+  $form['title'] = array(
     '#type' => 'textfield',
     '#title' => t('Full project name'),
     '#default_value' => isset($node->title) ? $node->title : NULL,
     '#maxlength' => 128,
     '#required' => TRUE,
   );
-  $form['project']['body'] = array(
+  $form['body'] = array(
     '#type' => 'textarea',
     '#title' => t('Full description'),
     '#default_value' => isset($node->body) ? $node->body : NULL,
@@ -91,11 +85,19 @@ function project_project_form($node) {
     '#rows' => 10,
     '#required' => TRUE,
   );
-  $form['project']['format'] = filter_form($node->format);
+  $form['format'] = filter_form($node->format);
+  /* Project properties */
+  $form['project'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Project information'),
+    '#collapsible' => TRUE,
+    '#tree' => TRUE,
+  );
+
   $form['project']['uri'] = array(
     '#type' => 'textfield',
     '#title' => t('Short project name'),
-    '#default_value' => isset($node->uri) ? $node->uri : NULL,
+    '#default_value' => isset($node->project['uri']) ? $node->project['uri'] : NULL,
     '#size' => 40,
     '#maxlength' => 50,
     '#description' => t('This will be used to generate a /project/&lt;shortname&gt;/ URL for your project.'),
@@ -104,7 +106,7 @@ function project_project_form($node) {
   $form['project']['homepage'] = array(
     '#type' => 'textfield',
     '#title' => t('Homepage'),
-    '#default_value' => isset($node->homepage) ? $node->homepage : NULL,
+    '#default_value' => isset($node->project['homepage']) ? $node->project['homepage'] : NULL,
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to project homepage.'),
@@ -112,7 +114,7 @@ function project_project_form($node) {
   $form['project']['documentation'] = array(
     '#type' => 'textfield',
     '#title' => t('Documentation'),
-    '#default_value' => isset($node->documentation) ? $node->documentation : NULL,
+    '#default_value' => isset($node->project['documentation']) ? $node->project['documentation'] : NULL,
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to project documentation.'),
@@ -120,7 +122,7 @@ function project_project_form($node) {
   $form['project']['license'] = array(
     '#type' => 'textfield',
     '#title' => t('License'),
-    '#default_value' => isset($node->license) ? $node->license : NULL,
+    '#default_value' => isset($node->project['license']) ? $node->project['license'] : NULL,
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to project license.'),
@@ -128,7 +130,7 @@ function project_project_form($node) {
   $form['project']['screenshots'] = array(
     '#type' => 'textfield',
     '#title' => t('Screenshots'),
-    '#default_value' => isset($node->screenshots) ? $node->screenshots : NULL,
+    '#default_value' => isset($node->project['screenshots']) ? $node->project['screenshots'] : NULL,
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to project screenshots.'),
@@ -136,7 +138,7 @@ function project_project_form($node) {
   $form['project']['changelog'] = array(
     '#type' => 'textfield',
     '#title' => t('Changelog'),
-    '#default_value' => isset($node->changelog) ? $node->changelog : NULL,
+    '#default_value' => isset($node->project['changelog']) ? $node->project['changelog'] : NULL,
      '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to changelog.'),
@@ -144,7 +146,7 @@ function project_project_form($node) {
   $form['project']['cvs'] = array(
     '#type' => 'textfield',
     '#title' => t('CVS tree'),
-    '#default_value' => isset($node->cvs) ? $node->cvs : NULL,
+    '#default_value' => isset($node->project['cvs']) ? $node->project['cvs'] : NULL,
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to webcvs/viewcvs.'),
@@ -152,7 +154,7 @@ function project_project_form($node) {
   $form['project']['demo'] = array(
     '#type' => 'textfield',
     '#title' => t('Demo site'),
-    '#default_value' => isset($node->demo) ? $node->demo : NULL,
+    '#default_value' => isset($node->project['demo']) ? $node->project['demo'] : NULL,
     '#size' => 40,
     '#maxlength' => 255,
     '#description' => t('Link to a live demo.'),
@@ -174,12 +176,12 @@ function project_project_validate(&$node
   }
 
   // Validate uri.
-  if (empty($node->uri)) {
+  if (empty($node->project['uri'])) {
     form_set_error('uri', t('A short project name is required.'));
   }
   else {
     // Make sure uri only includes valid characters
-    if (!preg_match('/^[a-zA-Z0-9_-]+$/', $node->uri)) {
+    if (!preg_match('/^[a-zA-Z0-9_-]+$/', $node->project['uri'])) {
       form_set_error('uri', t('Please only use alphanumerical characters for the project name.'));
     }
 
@@ -194,7 +196,7 @@ function project_project_validate(&$node
         }
       }
     }
-    if (in_array(strtolower($node->uri), $reserved_names) || db_num_rows(db_query("SELECT nid FROM {project_projects} WHERE uri = '%s' AND nid <> %d", $node->uri, $node->nid))) {
+    if (in_array(strtolower($node->project['uri']), $reserved_names) || db_num_rows(db_query("SELECT nid FROM {project_projects} WHERE uri = '%s' AND nid <> %d", $node->project['uri'], $node->nid))) {
       form_set_error('uri', t('This project name is already in use.'));
     }
   }
@@ -292,8 +294,8 @@ function project_project_view($node, $te
       'weight' => 4,
     );
     foreach (array('homepage' => t('Home page'), 'documentation' => t('Read documentation'), 'license' => t('Read license'), 'changelog' => t('Read complete log of changes'), 'demo' => t('Try out a demonstration'), 'screenshots' => t('Look at screenshots')) as $uri => $name) {
-      if (!empty($node->$uri)) {
-        $all_links['resources']['links'][$uri] = l($name, $node->$uri);
+      if (!empty($node->project[$uri])) {
+        $all_links['resources']['links'][$uri] = l($name, $node->project[$uri]);
       }
     }
 
@@ -310,18 +312,18 @@ function project_project_view($node, $te
     );
     $links = array();
     if ($view_issues) {
-      $links['all_support'] = l(t('View all support requests'), 'project/issues/'. $node->uri, null, 'categories=support&states=all', null);
-      $links['pending_support'] = l(t('View pending support requests'), 'project/issues/'. $node->uri, null, 'categories=support', null);
-      $links['pending_bugs'] = l(t('View pending bug reports'), 'project/issues/'. $node->uri, null, 'categories=bug', null);
-      $links['pending_features'] = l(t('View pending feature requests'), 'project/issues/'. $node->uri, null, 'categories=feature', null);
+      $links['all_support'] = l(t('View all support requests'), 'project/issues/'. $node->project['uri'], null, 'categories=support&states=all', null);
+      $links['pending_support'] = l(t('View pending support requests'), 'project/issues/'. $node->project['uri'], null, 'categories=support', null);
+      $links['pending_bugs'] = l(t('View pending bug reports'), 'project/issues/'. $node->project['uri'], null, 'categories=bug', null);
+      $links['pending_features'] = l(t('View pending feature requests'), 'project/issues/'. $node->project['uri'], null, 'categories=feature', null);
     }
     if ($make_issues) {
-      $links['request_support'] = l(t('Request support'), 'node/add/project_issue/'. $node->uri .'/support');
-      $links['report_bug'] = l(t('Report new bug'), 'node/add/project_issue/'. $node->uri .'/bug');
-      $links['request_feature'] = l(t('Request new feature'), 'node/add/project_issue/'. $node->uri .'/feature');
+      $links['request_support'] = l(t('Request support'), 'node/add/project_issue/'. $node->project['uri'] .'/support');
+      $links['report_bug'] = l(t('Report new bug'), 'node/add/project_issue/'. $node->project['uri'] .'/bug');
+      $links['request_feature'] = l(t('Request new feature'), 'node/add/project_issue/'. $node->project['uri'] .'/feature');
     }
     else {
-      $links['create_forbidden'] = theme('project_issue_create_forbidden', $node->uri);
+      $links['create_forbidden'] = theme('project_issue_create_forbidden', $node->project['uri']);
     }
     $all_links['support']['links'] = $links;
 
@@ -333,13 +335,13 @@ function project_project_view($node, $te
     );
     $links = array();
     if ($view_issues) {
-      $links['pending_patches'] = l(t('View pending patches'), 'project/issues/'. $node->uri, null, 'states=8,13,14', null);
-      $links['available_tasks'] = l(t('View available tasks'), 'project/issues/'. $node->uri, null, 'categories=task', null);
-      $links['pending_issues'] = l(t('View all pending issues'), 'project/issues/'. $node->uri);
+      $links['pending_patches'] = l(t('View pending patches'), 'project/issues/'. $node->project['uri'], null, 'states=8,13,14', null);
+      $links['available_tasks'] = l(t('View available tasks'), 'project/issues/'. $node->project['uri'], null, 'categories=task', null);
+      $links['pending_issues'] = l(t('View all pending issues'), 'project/issues/'. $node->project['uri']);
     }
 
-    if ($node->cvs) {
-      $links['browse_repository'] = l(t('Browse the CVS repository'), $node->cvs);
+    if ($node->project['cvs']) {
+      $links['browse_repository'] = l(t('Browse the CVS repository'), $node->project['cvs']);
     }
 
     if (project_use_cvs($node)) {
@@ -366,9 +368,9 @@ function project_project_view($node, $te
 }
 
 function project_project_load($node) {
-  $project = db_fetch_object(db_query('SELECT * FROM {project_projects} WHERE nid = %d', $node->nid));
+  $project = db_fetch_array(db_query('SELECT * FROM {project_projects} WHERE nid = %d', $node->nid));
 
-  return $project;
+  return array('project' => $project);
 }
 
 /**
@@ -380,7 +382,7 @@ function project_project_nodeapi(&$node,
     case 'insert':
       _project_save_taxonomy($node);
       if (module_exists('path')) {
-        path_set_alias("node/$node->nid", "project/$node->uri");
+        path_set_alias("node/$node->nid", "project/". $node->project['uri']);
       }
       break;
 
@@ -388,20 +390,20 @@ function project_project_nodeapi(&$node,
       _project_save_taxonomy($node);
       if (module_exists('path')) {
         path_set_alias("node/$node->nid");  // Clear existing alias.
-        path_set_alias("node/$node->nid", "project/$node->uri");
+        path_set_alias("node/$node->nid", "project/". $node->project['uri']);
       }
       break;
   }
 }
 
 function project_project_insert($node) {
-  db_query("INSERT INTO {project_projects} (nid, uri, homepage, changelog, cvs, demo, release_directory, version, screenshots, documentation, license) VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s')", $node->nid, $node->uri, $node->homepage, $node->changelog, $node->cvs, $node->demo, $node->release_directory, $node->version, $node->screenshots, $node->documentation, $node->license);
-//  project_release_scan_directory($node->uri);
+  db_query("INSERT INTO {project_projects} (nid, uri, homepage, changelog, cvs, demo, release_directory, version, screenshots, documentation, license) VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s')", $node->nid, $node->project['uri'], $node->project['homepage'], $node->project['changelog'], $node->project['cvs'], $node->project['demo'], $node->project['release_directory'], $node->project['version'], $node->project['screenshots'], $node->project['documentation'], $node->project['license']);
+//  project_release_scan_directory($node->project['uri']);
 }
 
 function project_project_update($node) {
-  db_query("UPDATE {project_projects} SET uri = '%s', homepage = '%s', changelog = '%s', cvs = '%s', demo = '%s', release_directory = '%s', version = %d, screenshots = '%s', documentation = '%s', license = '%s' WHERE nid = %d", $node->uri, $node->homepage, $node->changelog, $node->cvs, $node->demo, $node->release_directory, $node->version, $node->screenshots, $node->documentation, $node->license, $node->nid);
-//  project_release_scan_directory($node->uri);
+  db_query("UPDATE {project_projects} SET uri = '%s', homepage = '%s', changelog = '%s', cvs = '%s', demo = '%s', release_directory = '%s', version = %d, screenshots = '%s', documentation = '%s', license = '%s' WHERE nid = %d", $node->project['uri'], $node->project['homepage'], $node->project['changelog'], $node->project['cvs'], $node->project['demo'], $node->project['release_directory'], $node->project['version'], $node->project['screenshots'], $node->project['documentation'], $node->project['license'], $node->nid);
+//  project_release_scan_directory($node->project['uri']);
 }
 
 function project_project_delete($node) {
@@ -416,7 +418,7 @@ function project_project_access($op, $no
       // Since this function is shared for project_release nodes, we have to
       // be careful what node we pass to project_check_admin_access().
       if ($node->type == 'project_release') {
-        $node = node_load($node->pid);
+        $node = node_load($node->project['pid']);
       }
       if (project_check_admin_access($node)) {
         return TRUE;
