NOTE: If you are a developer, please use a private wiki based on foswiki/trunk on a daily base ...or use trunk.foswiki.org to view this page for some minimal testing.
Use Item9693 for docu changes for 1.2 and 2.0.

Item11526: The renderWikiWordHandler is called for things that are not WikiWord links

Priority: CurrentState: AppliesTo: Component: WaitingFor:
Normal Closed Engine pluginHandlers  
sub test_renderWikiWordHandler {
    my $this = shift;
    $this->makePlugin( 'renderWikiWordHandler', <<'HERE');
#($linkText, $hasExplicitLinkLabel, $web, $topic) -> $linkText
sub renderWikiWordHandler {
    my ($linkText, $hasExplicitLinkLabel, $web, $topic) = @_;
    $called->{renderWikiWordHandler}++;
    $called->{renderWikiWordHandlerLinks}->{$web.'___'.$topic} = $linkText.'___'.($hasExplicitLinkLabel||'undef');
    #die $topic if ($topic eq 'ALLOWTOPICVIEW');
}
HERE
    $this->checkCalls( 0, 'renderWikiWordHandler' );
    my $html = Foswiki::Func::renderText( <<'HERE', 'Sandbox', 'TestThisCarefully' );
    This is AWikiWord and some NoSuchWeb.NoTopic that we CANNOT
   * Set ALLOWTOPICCHANGE=guest
 %ATTACHURL%/Foswiki-1.1.4.tar.gz
 
 %ATTACHURL%/releases/Foswiki-1.0.4.tar.gz
 %ATTACHURL%/releases/other/file-3.0.4.tar.gz

 %SYSTEMWEB%.WebHome
 %SYSTEMWEB%.WikiWords
 
 %USERSWEB%.%SYSTEMWEB%Topic
 
 %ATTACHURL%/Foswiki-1.1.4.tar.gz
 
 %ATTACHURL%/releases/Foswiki-1.0.4.tar.gz
 [[%ATTACHURL%/releases/other/file-3.0.4.tar.gz]]

 [[%SYSTEMWEB%.WebHome]]
 [[%SYSTEMWEB%.WikiWords]]
 
 [[%USERSWEB%.%SYSTEMWEB%Topic]]

[[some test link]] [[text][link text]]
HERE
    $this->checkCalls( 10, 'renderWikiWordHandler' );
    #$Foswiki::Plugins::$this->{plugin_name}::called->{$name}
    my $hashRef = eval "\$Foswiki::Plugins::$this->{plugin_name}::called->{renderWikiWordHandlerLinks}";
use Data::Dumper;
print STDERR "------ ".Dumper($hashRef)."\n";
#TODO: this is not correct, its just what we have
    $this->assert_deep_equals({
          'ATTACHURL/releases/other/file-3/0/4/tar___gz' => '%ATTACHURL%/releases/other/file-3.0.4.tar.gz___undef',
          'SYSTEMWEB___WikiWords' => '%SYSTEMWEB%.WikiWords___undef',
          'Sandbox___Text' => 'link text___1',
          'SYSTEMWEB___WebHome' => '%SYSTEMWEB%.WebHome___undef',
          'NoSuchWeb___NoTopic' => 'NoTopic___undef',
          'Sandbox___ALLOWTOPICCHANGE' => 'ALLOWTOPICCHANGE___undef',
          'USERSWEB___SYSTEMWEBTopic' => '%USERSWEB%.%SYSTEMWEB%Topic___undef',
          'Sandbox___AWikiWord' => 'AWikiWord___undef',
          'Sandbox___SomeTestLink' => 'some test link___undef',
          'Sandbox___CANNOT' => 'CANNOT___undef'
        }, $hashRef);

    return;
}

I'm on trunk, but will commit and look at 1.1 too

-- SvenDowideit - 16 Feb 2012

ok, so ACRONYMS work this way - they are possible links for which the plugin can ammend the linktext.

remaining things to investigate:
  1. why are the %'s removed from the web and topic values - making it impossible for the plugin to know if its a var or literal text
  2. is there a problem with the ATTACHURL case (i suspect not putting http://foswiki.org/pub/Tasks/Item11526/releases/other/file-3.0.4.tar.gz causes foswiki to expect that there is a topic by that name.

-- SvenDowideit - 16 Feb 2012

ok, so fundamentally, I always forget that renderText must have all MACROS already expanded - it does not do it for you.

wrt ACRONYMS, Foswiki::Func::internalLink will return non-linked text, so taht can be used to detect that what is passed to the renderWikiWordHandler is not actually a link.

so, I've added a few more tests, and might have added just enough docco to help me in 4 years time when i hit it again.

-- SvenDowideit - 16 Feb 2012

merged over to 1.1 too, as its docco and tests.

-- SvenDowideit - 01 Mar 2012
 
Topic revision: r14 - 11 Apr 2012, GeorgeClark
 
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. see CopyrightStatement. Creative Commons LicenseGet Foswiki at sourceforge.net. Fast, secure and Free Open Source software downloads