[tomboy] [ExportToHtml] Fix bug #586682, export linked notes correctly on Windows.
- From: Benjamin Podszun <bpodszun src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tomboy] [ExportToHtml] Fix bug #586682, export linked notes correctly on Windows.
- Date: Mon, 16 Aug 2010 12:29:12 +0000 (UTC)
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) > 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]