Index: /main/trunk/gli/classes/dictionary.properties
===================================================================
--- /main/trunk/gli/classes/dictionary.properties	(revision 34284)
+++ /main/trunk/gli/classes/dictionary.properties	(revision 34285)
@@ -536,4 +536,5 @@
 MetaToCSV.ExportAction:Export
 MetaToCSV.ConvertAction:Convert
+MetaToCSV.CSVFileExtensionType:CSV spreadsheet file (*.csv)
 MetaToCSV.ChooseMetaCSVFile:{0} metadata from GLI to a new CSV file or add to existing
 MetaToCSV.ConvertMetaXMLToCSV_Warning_Message:Warning, this will remove all metadata from GLI (metadata.xml files) after exporting to CSV.\nThis means you will no longer be able to edit this metadata from within GLI.\nProceed?
Index: /main/trunk/gli/src/org/greenstone/gatherer/gui/GUIManager.java
===================================================================
--- /main/trunk/gli/src/org/greenstone/gatherer/gui/GUIManager.java	(revision 34284)
+++ /main/trunk/gli/src/org/greenstone/gatherer/gui/GUIManager.java	(revision 34285)
@@ -224,12 +224,33 @@
 
 		// refresh coll view if meta.csv was created somewhere inside this coll's import folder
-		// And for remote case, also upload any new file that's inside
-		// the collection's import dir to the remote server
-		if(success && csvFile.exists() && csvFile.getAbsolutePath().startsWith(importDir)) {
+		// And for remote case, also upload any new meta csv file if created anywhere inside the collection dir
+		// (incl especially its import dir) to the remote server
+		if(success && csvFile.exists() && csvFile.getAbsolutePath().startsWith(collection_directory_path)) {
+		    // When the user *converts* metadata to CSV, it's set up to be easiest to create in the import folder
+		    // When the user *exports* meta to CSV, it's set up to create this easiest in the collection folder
+		    
+		    // Beware in export case: client-gli can create a metadata CSV file in the collection
+		    // folder and this will get successfully uploaded and store into the collect folder
+		    // on the remote server. However, when the collection is reopened in client-gli, the
+		    // collection that's downloaded will NOT contain such a metadata CSV file (even though it
+		    // still exists on the remote server in the collection folder) since the remote server
+		    // selectively sends files across when a collection is opened. 
+		    // Not just anything and everything that exists in the collection folder (or its etc
+		    // subfolder) is sent back to the client. There must be a reason why the GS3 server sends
+		    // across some files and not others, so I'm not going to change that to incorporate any
+		    // *.csv files found anywhere in the server's collection folder.
+		    // When someone is using client-GLI it may not anyway make sense for them to save a file
+		    // into their collection folder: the coll folder is hidden away in the gli user directory
+		    // and even if client-GLI got it transferred back from the server and shows the user that
+		    // their metadata.csv file exists locally, they still can't locate it that easily on
+		    // their filesystem. It's best for the user to create the exported metadata in an easily
+		    // located location on the client file system.
 		    if(Gatherer.isGsdlRemote) {
 			Gatherer.remoteGreenstoneServer.uploadFilesIntoCollection(currCollName, new File[] {csvFile}, csvFile.getParentFile());
 		    }
-		    Gatherer.g_man.refreshCollectionTree(DragTree.COLLECTION_CONTENTS_CHANGED);
-		}
+		    if(csvFile.getAbsolutePath().startsWith(importDir)) {
+			Gatherer.g_man.refreshCollectionTree(DragTree.COLLECTION_CONTENTS_CHANGED);
+		    }
+		}		
 	    }
 	    
Index: /main/trunk/gli/src/org/greenstone/gatherer/metadata/MetadataToCSV.java
===================================================================
--- /main/trunk/gli/src/org/greenstone/gatherer/metadata/MetadataToCSV.java	(revision 34284)
+++ /main/trunk/gli/src/org/greenstone/gatherer/metadata/MetadataToCSV.java	(revision 34285)
@@ -572,5 +572,5 @@
 	chooser.setDialogTitle(Dictionary.get("MetaToCSV.ChooseMetaCSVFile", actionName));
 	chooser.setApproveButtonText(Dictionary.get("MetaToCSV.Choose"));//actionName);
-	FileNameExtensionFilter filter = new FileNameExtensionFilter("CSV spreadsheet file", "csv");
+	FileNameExtensionFilter filter = new FileNameExtensionFilter(Dictionary.get("MetaToCSV.CSVFileExtensionType"), "csv");
 	chooser.setFileFilter(filter);//.addChoosableFileFilter(filter);
 	int returnVal = chooser.showOpenDialog(parent);
Index: /main/trunk/gli/src/org/greenstone/gatherer/remote/RemoteGreenstoneServer.java
===================================================================
--- /main/trunk/gli/src/org/greenstone/gatherer/remote/RemoteGreenstoneServer.java	(revision 34284)
+++ /main/trunk/gli/src/org/greenstone/gatherer/remote/RemoteGreenstoneServer.java	(revision 34285)
@@ -836,4 +836,10 @@
     {
 	String file_path = file.getAbsolutePath();
+
+	// Special case: if file path is longer by File separator,
+	// still dealing with practcally the same folder path, return relative path as "."
+	if(directory_path.equals(file_path + File.separator)) {
+	    return ".";
+	}
 	if (!file_path.startsWith(directory_path)) {
 	    System.err.println("ERROR: File path " + file_path + " is not a child of " + directory_path);
