Index: tests/com/ecyrd/jspwiki/htmltowiki/HtmlStringToWikiTranslatorTest.java =================================================================== --- tests/com/ecyrd/jspwiki/htmltowiki/HtmlStringToWikiTranslatorTest.java (revision 761869) +++ tests/com/ecyrd/jspwiki/htmltowiki/HtmlStringToWikiTranslatorTest.java (working copy) @@ -54,6 +54,11 @@ assertEquals( "[AugumentedWikiLinks|AugumentedWikiLinks|title='my \"custom\" title' target='_blank']", html2wiki .translate( "AugumentedWikiLinks" ) ); + + // footnote links + assertEquals( "[23]", html2wiki.translate( "[23]" ) ); + assertEquals( "[something|23]", html2wiki.translate( "[something]" ) ); + } public void testTable() throws Exception Index: src/com/ecyrd/jspwiki/htmltowiki/XHtmlElementToWikiTranslator.java =================================================================== --- src/com/ecyrd/jspwiki/htmltowiki/XHtmlElementToWikiTranslator.java (revision 761869) +++ src/com/ecyrd/jspwiki/htmltowiki/XHtmlElementToWikiTranslator.java (working copy) @@ -390,9 +390,20 @@ ref = trimLink( ref ); if( ref != null ) { - if( ref.startsWith( "#" ) ) + if( ref.startsWith( "#" ) ) // This is a link to a footnote. { - print( e ); + // convert "#ref-PageName-1" to just "1" + String href = ref.replaceFirst( "#ref-.+-(\\d+)", "$1" ); + + // remove the brackets around "[1]" + String textValue = e.getValue().substring( 1, (e.getValue().length() - 1) ); + + if( href.equals( textValue ) ){ // handles the simplest case. Example: [1] + print( e ); + } + else{ // handles the case where the link text is different from the href. Example: [something|1] + m_out.print( "[" + textValue + "|" + href + "]" ); + } } else {