[tomboy] [ExportToHtml] Fix bug #586682, export linked notes correctly on Windows.



commit bf9e10414d94f8309c94d5fade8785c194d0678c
Author: Benjamin Podszun <benjamin podszun topimagesystems com>
Date:   Mon Aug 16 14:30:49 2010 +0200

    [ExportToHtml] Fix bug #586682, export linked notes correctly on Windows.
    
    Solution is blatantly taken from the bug above and was created by
    John M. Anderson mostly. I only adjusted the changes to comply with
    the code style (braces, whitespace, naming) and expanded it according
    to the hint of Stefan Schweizer to avoid endless export loops.

 Tomboy.mdp                                         |    1 -
 Tomboy/Addins/ExportToHtml/ExportToHtml.csproj     |    1 -
 Tomboy/Addins/ExportToHtml/ExportToHtml.xsl        |    5 +-
 .../Addins/ExportToHtml/ExportToHtmlNoteAddin.cs   |   31 ++++++-
 Tomboy/Addins/ExportToHtml/Makefile.am             |    3 +-
 Tomboy/Addins/ExportToHtml/NoteNameResolver.cs     |   85 --------------------
 6 files changed, 32 insertions(+), 94 deletions(-)
---
diff --git a/Tomboy.mdp b/Tomboy.mdp
index c753659..b6e01ea 100644
--- a/Tomboy.mdp
+++ b/Tomboy.mdp
@@ -84,7 +84,6 @@
     <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/Bugzilla/BugzillaPreferences.cs" />
     <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/Bugzilla/BugzillaPreferencesFactory.cs" />
     <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs" />
-    <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/ExportToHtml/NoteNameResolver.cs" />
     <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/ExportToHtml/ExportToHtmlDialog.cs" />
     <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/FixedWidth/FixedWidthNoteAddin.cs" />
     <File subtype="Code" buildaction="Compile" name="Tomboy/Addins/FixedWidth/FixedWidthTag.cs" />
diff --git a/Tomboy/Addins/ExportToHtml/ExportToHtml.csproj b/Tomboy/Addins/ExportToHtml/ExportToHtml.csproj
index 90d2938..7f9c0f7 100644
--- a/Tomboy/Addins/ExportToHtml/ExportToHtml.csproj
+++ b/Tomboy/Addins/ExportToHtml/ExportToHtml.csproj
@@ -73,7 +73,6 @@
   <ItemGroup>
     <Compile Include="ExportToHtmlDialog.cs" />
     <Compile Include="ExportToHtmlNoteAddin.cs" />
-    <Compile Include="NoteNameResolver.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Makefile.am" />
diff --git a/Tomboy/Addins/ExportToHtml/ExportToHtml.xsl b/Tomboy/Addins/ExportToHtml/ExportToHtml.xsl
index 9122c27..eeabc22 100644
--- a/Tomboy/Addins/ExportToHtml/ExportToHtml.xsl
+++ b/Tomboy/Addins/ExportToHtml/ExportToHtml.xsl
@@ -79,7 +79,10 @@
 	<xsl:if test="$export-linked and ((not($export-linked-all) and /tomboy:note/tomboy:title/text() = $root-note) or $export-linked-all)">
 		<xsl:for-each select=".//link:internal/text()">
 			<!-- Load in the linked note's XML for processing. -->
-			<xsl:apply-templates select="document(.)/node()"/>
+			<xsl:variable name="note_path" select="tomboy:GetPath(.)" />
+			<xsl:if test="string-length($note_path) &gt; 0">
+				<xsl:apply-templates select="document($note_path)/node()"/>
+			</xsl:if>
 		</xsl:for-each>
 	</xsl:if>
 </xsl:template>
diff --git a/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs b/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs
index 84d36cf..3dd0c44 100644
--- a/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs
+++ b/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs
@@ -1,5 +1,6 @@
 
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Reflection;
 using System.Xml;
@@ -184,7 +185,7 @@ namespace Tomboy.ExportToHtml
 			args.AddParam ("export-linked-all", "", export_linked_all);
 			args.AddParam ("root-note", "", note.Title);
 			args.AddExtensionObject ("http://beatniksoftware.com/tomboy";,
-				new TransformExtension ());
+				new TransformExtension (note.Manager, note));
 
 			if ((bool) Preferences.Get (Preferences.ENABLE_CUSTOM_FONT)) {
 				string font_face = (string) Preferences.Get (Preferences.CUSTOM_FONT_FACE);
@@ -195,20 +196,42 @@ namespace Tomboy.ExportToHtml
 				args.AddParam ("font", "", font);
 			}
 
-			NoteNameResolver resolver = new NoteNameResolver (note.Manager, note);
-			NoteXsl.Transform (doc, args, writer, resolver);
+			NoteXsl.Transform (doc, args, writer);
 		}
 	}
 
 	/// <summary>
 	/// Makes <see cref="System.String.ToLower"/> available in the
-	/// XSL stylesheet.
+	/// XSL stylesheet and manages access to the file path of notes,
+	/// making sure that each note is only exported once.
 	/// </summary>
 	public class TransformExtension
 	{
+		NoteManager manager;
+		List<string> resolved_notes;
+
+		public TransformExtension (NoteManager manager, Note root_note)
+		{
+			this.manager = manager;
+			this.resolved_notes = new List<string> ();
+			this.resolved_notes.Add (root_note.Title.ToLower());
+		}
+
 		public String ToLower (string s)	
 		{
 			return s.ToLower ();
 		}
+
+		public string GetPath (string title)
+		{
+			if (string.IsNullOrEmpty (title))
+				return string.Empty;
+
+			if (resolved_notes.Contains (title.ToLower()))
+				return string.Empty;
+
+			resolved_notes.Add (title.ToLower());
+			return manager.Find (title).FilePath;
+		}
 	}
 }
diff --git a/Tomboy/Addins/ExportToHtml/Makefile.am b/Tomboy/Addins/ExportToHtml/Makefile.am
index bba56b6..4d65027 100644
--- a/Tomboy/Addins/ExportToHtml/Makefile.am
+++ b/Tomboy/Addins/ExportToHtml/Makefile.am
@@ -15,8 +15,7 @@ ADDIN_NAME = ExportToHtml
 TARGET = $(top_builddir)/bin/addins/$(ADDIN_NAME).dll
 CSFILES = \
 	$(srcdir)/ExportToHtmlDialog.cs		\
-	$(srcdir)/ExportToHtmlNoteAddin.cs		\
-	$(srcdir)/NoteNameResolver.cs
+	$(srcdir)/ExportToHtmlNoteAddin.cs
 RESOURCES = \
 	-resource:$(srcdir)/$(ADDIN_NAME).addin.xml \
 	-resource:$(srcdir)/ExportToHtml.xsl



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]