Index: node_page.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_page/node_page.module,v
retrieving revision 1.2
diff -u -r1.2 node_page.module
--- node_page.module	15 Jan 2010 15:32:26 -0000	1.2
+++ node_page.module	22 Nov 2010 15:23:30 -0000
@@ -132,22 +132,34 @@
   }
 }
 
-function _page_templates() {
-
-  $theme = variable_get('theme_default', 'garland');
-  $theme_path = drupal_get_path('theme', $theme) .'/';
-  $options = array('default' => 'default');
-
-  $handler = opendir($theme_path);
+function _get_page_template_files($directory, $options) {
+  
+	$handler = opendir($directory);
+	
   while ($file = readdir($handler)) {
-    if ($file != '.' && $file != '..' && drupal_substr($file, 0, 4) == 'page') {
-      $name = drupal_substr($file, 0, -8);  // name without .tpl.php
-      $options[$name] = $name;
+    if(is_dir($directory . $file) && substr($file, 0, 1) != '.'){
+       $options = array_merge($options, _get_page_template_files($directory . $file . '/', $options));
     }
+    else if (drupal_substr($file, 0, 4) == 'page')
+		{
+			$name = drupal_substr($file, 0, -8);  // name without .tpl.php
+			$options[$name] = $name;
+		}
   }
   closedir($handler);
+	
+	return $options;
+}
+
+function _page_templates() {
+  $theme = variable_get('theme_default', 'garland');
+  $theme_path = drupal_get_path('theme', $theme) .'/';
+	
+  $options = array('default' => 'default');
+	
+	dpm(_get_page_template_files($theme_path, $options));
 
-  return $options;
+  return _get_page_template_files($theme_path, $options);
 }
 
 /**

