diff --git a/InterwikiPlugin/data/System/InterwikiPlugin.txt b/InterwikiPlugin/data/System/InterwikiPlugin.txt index 5cac9eb..55b8a3b 100644 --- a/InterwikiPlugin/data/System/InterwikiPlugin.txt +++ b/InterwikiPlugin/data/System/InterwikiPlugin.txt @@ -37,6 +37,12 @@ The =INTERWIKIPLUGIN_INTERLINKFORMAT= supports a number of formatting tokens: | $tooltip | Tooltip message | +---+++ Adding/editing aliases + +You can write more rules for %TOPIC% creating a new Rules Topic defined by =INTERWIKIPLUGIN_RULESTOPIC= in the %USERSWEB% Web using the syntax: + +==| External site alias | URL | Tooltip help text |== + ---++ Plugin Installation Instructions %$INSTALL_INSTRUCTIONS% @@ -51,6 +57,7 @@ The =INTERWIKIPLUGIN_INTERLINKFORMAT= supports a number of formatting tokens: | Version: | %$VERSION% | | Release: | %$RELEASE% | | Change History: |   | +| 04 Jul 2010: | 9260 - Now is possible to write aliases in %USERSWEB% Web | | 10 Mar 2010: | =mod_perl= and =FastCGI= compatible | | 20 Sep 2009: | Version from 15 Apr now included with Foswiki 1.0.7. | | 15 Apr 2009: | Foswiki:Main.CrawfordCurrie - removed plugin preferences from this topic | diff --git a/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin.pm b/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin.pm index 25e836d..0acdd16 100644 --- a/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin.pm +++ b/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin.pm @@ -69,6 +69,10 @@ sub initPlugin { my $text = Foswiki::Func::readTopicText( $interWeb, $interTopic, undef, 1 ); + if (Foswiki::Func::topicExists($Foswiki::cfg{UsersWebName}, $interTopic)) { + $text .= Foswiki::Func::readTopicText( $Foswiki::cfg{UsersWebName}, $interTopic, undef, 1 ); + } + # '| alias | URL | ...' table and extract into 'alias', "URL" list $text =~ s/^\|\s*$sitePattern\s*\|\s*(.*?)\s*\|\s*(.*?)\s*\|.*$/_map($1,$2,$3)/mego; diff --git a/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin/MANIFEST b/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin/MANIFEST index 0bae077..fcb93b3 100644 --- a/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin/MANIFEST +++ b/InterwikiPlugin/lib/Foswiki/Plugins/InterwikiPlugin/MANIFEST @@ -1,3 +1,5 @@ lib/Foswiki/Plugins/InterwikiPlugin.pm 0444 data/System/InterwikiPlugin.txt 0644 data/System/InterWikis.txt 0644 +test/unit/InterwikiPlugin/InterwikiPluginSuite.pm 0444 +test/unit/InterwikiPlugin/InterwikiPluginTests.pm 0444 diff --git a/InterwikiPlugin/test/unit/InterwikiPlugin/InterwikiPluginSuite.pm b/InterwikiPlugin/test/unit/InterwikiPlugin/InterwikiPluginSuite.pm new file mode 100644 index 0000000..7e2e73a --- /dev/null +++ b/InterwikiPlugin/test/unit/InterwikiPlugin/InterwikiPluginSuite.pm @@ -0,0 +1,12 @@ +package InterwikiPluginSuite; + +use strict; + +use Unit::TestSuite; +our @ISA = 'Unit::TestSuite'; + +sub name { 'InterwikiPluginSuite' } + +sub include_tests { qw(InterwikiPluginTests) } + +1; diff --git a/InterwikiPlugin/test/unit/InterwikiPlugin/InterwikiPluginTests.pm b/InterwikiPlugin/test/unit/InterwikiPlugin/InterwikiPluginTests.pm new file mode 100644 index 0000000..54aa0d5 --- /dev/null +++ b/InterwikiPlugin/test/unit/InterwikiPlugin/InterwikiPluginTests.pm @@ -0,0 +1,69 @@ +package InterwikiPluginTests; +use strict; +use Foswiki; +use FoswikiFnTestCase; +use base qw(FoswikiFnTestCase); + +sub localrules_text { +< +| *Alias:* | *URL:* | *Tooltip Text:* | +| Localrule | http://rule.invalid.url?page= | Local rule | +| Wiki | http://c2.com/cgi/wiki? | Redefined global rule to wiki page | + +END +} + +# tests not works when I create by Foswiki::Func::saveTopic +sub create_localrules_topic { + my $patch = shift; + open LOCAL_RULES, '>', "$Foswiki::cfg{DataDir}/$Foswiki::cfg{UsersWebName}/InterWikis.txt"; + print LOCAL_RULES localrules_text; + close LOCAL_RULES; +} + +sub new { + my $self = shift()->SUPER::new(@_); + return $self; +} + +sub set_up { + my $this = shift; + $Foswiki::cfg{UsersWebName} = $this->{users_web}; + create_localrules_topic; + $this->SUPER::set_up(); +} + +sub tear_down { + my $this = shift; + $this->SUPER::tear_down(); +} + +############################################################ + +sub test_link_to_wikipedia_defined_in_global_rules { + my $this = shift; + $this->assert_html_equals( + 'Wikipedia:Perl', + Foswiki::Func::renderText("Wikipedia:Perl", $this->{test_topic}) + ); +} + +sub test_link_to_locarule_defined_in_users_web { + my $this = shift; + $this->assert_html_equals( + 'Localrule:Topage', + Foswiki::Func::renderText("Localrule:Topage", $this->{test_topic}) + ); +} + +sub test_can_redefine_global_rule { + my $this = shift; + $this->assert_html_equals( + 'Wiki:Topage', + Foswiki::Func::renderText("Wiki:Topage", $this->{test_topic}) + ); +} + +1;