--- theme_editor/theme_editor.inc	2009-05-07 22:12:03.000000000 +0200
+++ theme_editor.inc	2011-07-02 18:39:31.000000000 +0200
@@ -62,8 +62,9 @@
 	$dir = str_replace('/'.$theme->name.'.info','',$theme->filename);
 	//$special = file_scan_directory($dir,'\.[a-z0-9]',array('.', '..', 'CVS'), 0, false, 'filename', 0);
 	//drupal_set_message('<pre>'.print_r($special,1).'</pre>','error');
-		$out = theme_editor_build_file_tree($dir, $theme);
-	$file=$out[1];
+	$out = theme_editor_build_file_tree($dir, $theme);
+//	$file=$out[1];
+	$file=theme_editor_get_filename();
 	$out=$out[0];
 	$showname = $file != null ? '&nbsp;&nbsp;&nbsp;File: '.$file.'' : '';
 	$head = '<h4>Theme Directory: '.$dir.$showname.'</h4>
@@ -72,7 +73,10 @@
 	<li class="active"><a href="#theme_editor_file_editor_form" id="editor_tab" >'.$file.' Editor</a></li>
 	<li><a href="#theme_editor_file_backup_form" id="backup_tab" class="not_active">'.$file.' Backup</a></li>
 	</ul></div>';
-	$edit_form='<div class="theme_editor_form_wrap">'.$tabs.'<div id="theme_editor_file_editor_form" class="theme_editor_file_editor_form form_wrap">'.drupal_get_form('theme_editor_editor_form', $dir,$file).'</div><div class="theme_editor_file_backup_form form_wrap" id="theme_editor_file_backup_form">'.drupal_get_form('theme_editor_backup_form', $dir,$file).'</div></div>';
+	$edit_form='<div class="theme_editor_form_wrap">'.$tabs.
+	'<div id="theme_editor_file_editor_form" class="theme_editor_file_editor_form form_wrap">'.drupal_get_form('theme_editor_editor_form', $dir,$file).
+	'</div><div class="theme_editor_file_backup_form form_wrap" id="theme_editor_file_backup_form">'.drupal_get_form('theme_editor_backup_form', $dir,$file).
+	'</div></div>';
 	$newfile=(!user_access('Add New Files to themes') ? '':'<div id="new_file_form_wrap">'.drupal_get_form('theme_editor_new_file_form',$dir,$theme,$file).'</div>');
 	$delete = (!user_access('Delete files from themes') ? '' : '<div id="theme_editor_delete_form_wrap">'.drupal_get_form('theme_editor_delete_files_form',$dir,$file,$theme).'</div>');
 	$out = $head.$edit_form.'<div class="theme_editor_files_links"><div id="theme_editor_filelist_wrap">'.$out.'</div>'.$newfile.$delete.'</div>';
@@ -187,6 +191,8 @@
  * 
  **/
  function theme_editor_editor_form($form_state, $dir,$file) {
+        //drupal_set_message($file);
+         
  	$contents = _file_get_contents($dir.'/'.$file);
 	$form['file_name'] = array(
 	'#type' => 'value',
@@ -493,7 +499,8 @@
  *
 **/
 function _file_write_theme_file($data, $dir,$file, $mess=NULL) {
-$filename = $dir.'/'.$file;
+//$filename = $dir.'/'.$file;
+$filename = $dir.'/'.theme_editor_get_filename();
 $somecontent = $data;
 
 // Let's make sure the file exists and is writable first.
@@ -574,6 +581,10 @@
  **/
 function theme_editor_create_backup($file,$dir) {
 	$filename = $dir.'/'.$file;
+	$add_dir=split('/',$file);
+	$dir=$dir.'/'.$add_dir[count($add_dir)-2];
+	$file=$add_dir[count($add_dir)-1];
+//	drupal_set_message($dir." |||".$file);
 	if (file_exists($dir.'/theme_editor_backup')) {
 	if (copy($filename, $dir.'/theme_editor_backup'.'/'.$file.'.bak')) {
 		drupal_set_message('Backup created of file ('.$filename.')');
@@ -609,27 +620,27 @@
  * Creates the list of files for the file tree
  **/
 function theme_editor_get_files($dir,$excl=array()) {
-if (!in_array('info',$excl) && user_access('Edit theme .info files')) {
+	if (!in_array('info',$excl) && user_access('Edit theme .info files')) {
 		$files['Theme Info'] = file_scan_directory($dir,'\.info$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
-		}
-		if (!in_array('php',$excl) && user_access('Edit PHP based files')) {
-	$files['PHP'] = file_scan_directory($dir,'[^(\.tpl)]\.((php)|(inc))$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
-	//$files['PHP'] = file_scan_directory($dir,'\.tpl\.php$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
+	}
+	if (!in_array('php',$excl) && user_access('Edit PHP based files')) {
+		$files['PHP'] = file_scan_directory($dir,'[^(\.tpl)]\.((php)|(inc))$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
+		//$files['PHP'] = file_scan_directory($dir,'\.tpl\.php$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
 	}
 	if (!in_array('js',$excl)) {
-	$files['Javascript'] = file_scan_directory($dir,'\.js$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
+		$files['Javascript'] = file_scan_directory($dir,'\.js$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
 	}
 	if (!in_array('tpl',$excl) && user_access('Edit PHP based files')) {
-	$files['Template'] = file_scan_directory($dir,'\.tpl\.php$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
+		$files['Template'] = file_scan_directory($dir,'\.tpl\.php$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
 	}
 	if (!in_array('css',$excl)) {
-	$files['Style Sheet'] = file_scan_directory($dir,'\.css$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
+		$files['Style Sheet'] = file_scan_directory($dir,'\.css$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
 	}
 	if (!in_array('htm',$excl)) {
-	$files['Basic'] = file_scan_directory($dir,'\.((txt)|(htm)|(html))$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
+		$files['Basic'] = file_scan_directory($dir,'\.((txt)|(htm)|(html))$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
 	}
 	if (!in_array('img',$excl)) {
-	$files['Image'] = file_scan_directory($dir,'\.((png)|(jpg)|(jpeg)|(gif))$',array('.', '..', 'CVS'), 0, false, 'filename', 0);
+		$files['Image'] = file_scan_directory($dir,'\.((png)|(jpg)|(jpeg)|(gif))$',array('.', '..', 'CVS'), 0, TRUE, 'filename', 0);
 	}
 	return $files;
 }
@@ -641,6 +652,7 @@
 function theme_editor_build_file_tree($dir, $theme,$new=NULL,$current=NULL) {
 	$file_img = array('txt'=>'txt_img','info'=>'txt_img','css'=>'css_img','php'=>'php_img','inc'=>'php_img','js'=>'js_img','htm'=>'htm_img','html'=>'htm_img','png'=>'img_img','jpg'=>'img_img','jpeg'=>'img_img','gif'=>'img_img',);
 	$files=theme_editor_get_files($dir);
+//	drupal_set_message(print_r($files));
 	$file= !$current ? arg(5) : $current;
 	$i=0;
 	
@@ -679,21 +691,21 @@
 		'#suffix'=>'</ul>'
 		);
 		foreach($value as $type => $val) {
-	
 			$file_type=end(explode('.',$val->basename));
 			if ($key=='Other' || $key=='Image') {
 						$li ='<li class="theme_editor_filename unwriteable" ref="'.$type.'"><span class="'.$file_img[$file_type].'">'.$val->basename.'<br /><span class="file_ne">(Not Editable)</span></span></li>';
 			}
 			else {
 				$file_type=end(explode('.',$val->basename));
-			if (is_writable($dir.'/'.$val->basename)) {
-			$li='<li class="theme_editor_filename '.($file == $val->basename ? 'active_file' : '').''.($new == $val->basename ? ' new_file' : '').'" ref="'.$type.'">'.l($val->basename.($new == $val->basename ? ' <span class="new_sup">New</span>' : ''),'admin/build/themes/editor/'.$theme->name.'/'.$val->basename, array('html'=>TRUE)).'</li>';
+			if (is_writable($val->filename)) {
+			$file2 = substr($val->filename, strlen($dir.$showname)+1);
+			$li='<li class="theme_editor_filename '.($file == $val->basename ? 'active_file' : '').''.($new == $val->basename ? ' new_file' : '').'" ref="'.$type.'">'.l($val->basename.($new == $val->basename ? ' <span class="new_sup">New</span>' : ''),'admin/build/themes/editor/'.$theme->name.'/'.$file2, array('html'=>TRUE)).'</li>';
 			/*
 			Took out the hrdcoded link: '<a href="'.base_path().'admin/build/themes/editor/'.$theme->name.'/'.$val->basename.'" class="'.$file_img[$file_type].'">'.$val->basename.''.($new == $val->basename ? ' <span class="new_sup">New</span>' : '').'</a>
 			*/
 		}
 		else {
-			$li='<li class="theme_editor_filename unwriteable" ref="'.$type.'"><span class="'.$file_img[$file_type].'">'.$val->basename.'<br /><span class="file_ne">(Not Editable)</span></span></li>';
+			$li='<li class="theme_editor_filename unwriteable" ref="'.$type.'"><span class="'.$file_img[$file_type].'">'.$val->basename.'<br /><span class="file_ne">(Not Editable dir)</span></span></li>';
 		}
 	}
 	$form[$key]['ul'][$val->basename]=array(
@@ -712,3 +724,12 @@
 		return array($out,$file);
 }
 
+function theme_editor_get_filename() {
+  $i = 5; // start at the theme directory
+  $filename = arg($i);
+  while( arg($i+1) ) {
+    $i += 1;
+    $filename .= '/'. arg($i);
+  }
+  return $filename;
+}
