%META:TOPICINFO{author="ProjectContributor" date="1765530761" format="1.1" version="1"}%
%META:TOPICPARENT{name="Plugins"}%
---+!! Interwiki Plugin
%FORMFIELD{"Description"}%

The <nop>%TOPIC% links ==ExternalSite:Page== text to external sites based on
aliases defined in the %SYSTEMWEB%.InterWikis topic. This plugin is inspired by
<nop>UseMod Wiki's inter-wiki links,
http://www.usemod.com/cgi-bin/wiki.pl?InterWiki.

%TOC%

---++ Link Syntax Rules

   * Enter ==ExternalSite:Page== to create a link that points to the ==Page== on the ==ExternalSite== server.
      * If ==Page== contains spaces, it can be enclosed in single or double quotes. Example: ==MySite:'My Photo.jpg'==.  Special characters contained within the quotes are URL encoded.
   * Enter ==[<nop>[ExternalSite:Page][any label]]== to specify a custom label.
   * All ==ExternalSite== aliases are defined in the %SYSTEMWEB%.InterWikis topic or as specified by the =INTERWIKIPLUGIN_RULESTOPIC= topic list.

---++ Definition Syntax Rules

Add and edit aliases in %SYSTEMWEB%.InterWikis.%STARTSECTION{"aliasformat"}%
   * Each entry must be three or four columns, using the following format: <br /> ==| External site alias | URL | Tooltip help text | Optional INTERLINKFORMAT override |==.
   * The Alias must start with an upper case letter and may contain alphanumeric characters.
   * The URL and Tooltip Text may contain optional ==$page== formatting tokens; the token gets expanded to the page name.
   * The URL may contain Foswiki macros.  They are expanded when the URL is rendered.
   * The Tooltip Text must __not__ contain:
      * any HTML tags (including ==&lt;nop&gt;== escape code)
      * any internal %SYSTEMWEB%.WikiWord links
      * any external links
      * Hint: Escape =='WikiWords'== and =='$page'==.
      * If the link format override is provided, it overrides the =INTERWIKIPLUGIN_INTERLINKFORMAT= for just that entry.

<div class="foswikiHelp">%H% Note that Interwiki links do not properly resolve when part of an INCLUDEd page name.  e.g. =%<nop>INCLUDE{"Interwiki:link"}%= </div>

<div class="foswikiHelp">%H% For Foswiki and TWiki sites, both the *web* and the *topic* have to be specified: ==<nop>Foswiki:Webname/<nop>SomePage==
Foswiki:Extensions/InterwikiPlugin or Foswiki:Extensions.InterwikiPlugin
</div>

<div class="foswikiHelp">
%H% For links with parentheses you will need to write as ==[<nop>[Wikipedia:Fork_(software_development)]]==, or quoted, as ==<nop>Wikipedia:'Fork_(software_development)'==
as the plugin will not include the closing parenthesis as part of the link. 
</div>
%ENDSECTION{"aliasformat"}%

---++ <nop>%TOPIC% Settings

You can override the default settings using [[%SYSTEMWEB%.PreferenceSettings][preferences]]. These preferences can be set in your %LOCALSITEPREFS%, or in any <nop>%WEBPREFSTOPIC%, or in individual topics.

| *Preference* | *Use to* | *Default* |
| =INTERWIKIPLUGIN_RULESTOPIC= | The topic(s) containing the inter-wiki rules. Can be a comma separated list. See %SYSTEMWEB%.InterWikis#AddingYourOwn for more details | %SYSTEMWEB%.InterWikis |
| =INTERWIKIPLUGIN_INTERLINKFORMAT= | Set the interlink format | =&lt;a class="interwikiLink" href="$url" title="$tooltip" class="interwikiLink"&gt;&lt;noautolink&gt;$label&lt;/noautolink&gt;&lt;/a&gt;= |
The =INTERWIKIPLUGIN_INTERLINKFORMAT= supports a number of formatting tokens:%STARTSECTION{"formattokens"}%
     | *Token* | *Meaning* |
     | $site | Site alias |
     | $page | Page (part after colon) |
     | $url | Site URL (might contain $page) |
     | $label | Equal to $site:$page |
     | $tooltip | Tooltip message |
%ENDSECTION{"formattokens"}%

---++ Installation Instructions

You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server.

Open configure, and open the "Extensions" section. "Extensions Operation and Maintenance" Tab -&gt; "Install, Update or Remove extensions" Tab.  Click the "Search for Extensions" button.  
Enter part of the extension name or description and press search.   Select the desired extension(s) and click install. If an extension is already installed, it will *not* show up in the
search results.

You can also install from the shell by running the extension installer as the web server user: (Be sure to run as the webserver user, not as root!)
<verbatim>
cd /path/to/foswiki
perl tools/extension_installer <NameOfExtension> install
</verbatim>

If you have any problems, or if the extension isn't available in =configure=, then you can still install manually from the command-line. See https://foswiki.org/Support/ManuallyInstallingExtensions for more help.


   * *Test:* If the Plugin is correctly installed, this Wiki:InterWiki link should point to http://c2.com/cgi/wiki?InterWiki topic - try it out.

---++ Change History
%TABLE{columnwidths="7em" tablewidth="100%"}%
|   12 Dec 2025: (1.28) | Foswikitask:Item15584: interwiki shortcuts mostly outdated |
|   06 Aug 2023: (1.27) | Foswikitask:Item15151: add warnings and strictness |
|   3 May 2018: (1.26)  | Foswikitask:Item14688: Correct tyops and poor grammar in documentation. |
|   8 Dec 2017: (1.25)  | Foswikitask:Item14395: Failure to check result from readTopic causes error. |
|   8 Feb 2071: (1.24)  | Foswikitask:Item14321: Fix some stale default Interwiki links. |
|   8 Apr 2016: (1.23)  | Foswikitask:Item14022: Change foswiki.org links to https. |
|  14 Jun 2014: (1.22)  | Foswikitask:Item13287: Foswikitask:Item13387: Regular expression enhancements, better UTF-8 support. |
|  03 Oct 2014: (1.21)  | Foswikitask:Item13045: Add per-link override of INTERLINKFORMAT |
|  24 May 2014: (1.20)  | Foswikitask:Item12819: Expand variables defined in !InterWiki links%BR% \
                          Foswikitask:Item11587: Replace call to deprecated =Foswiki::Func::readTopicText()= |
|  23 Oct 2013: (1.1.7) | Foswikitask:Item12555: Documentation updates |
|  12 Nov 1012: (1.1.6) | update CPAN link to goto metacpan and remove some ancient links that have been broken for years. Convert to perl version strings |
|  05 Dec 2011: (1.1.2) | Release with Foswiki 1.1.4 - Minor code and documentation cleanup |
|  30 Oct 2011: | Foswiki:Main.GeorgeClark - Add support for quoted page references from TimotheLitt (Foswikitask:Item10872) |
|  10 Apr 2011: | Foswiki:Main.AndrewJones - Links can now be formatted (Foswikitask:Item10619) |
|  13 Dec 2010: | Foswiki:Main.AndrewJones - Fix inter-wiki's with parentheses (Foswikitask:Item10151). Note, you will need to write as ==[<nop>[Wikipedia:Fork_(software_development)]]==, as we assume the closing parenthesis is not part of the link. |
|  10 Dec 2010: | Foswiki:Main.AndrewJones - Allow the =INTERWIKIPLUGIN_RULESTOPIC= to be a comma separated list. Implements Foswiki:Development/InheritWikiLinksTopics |
|  12 Jul 2010: | Foswiki:Main.AndrewJones - Check access controls on !InterWikis topic |
|  10 Jul 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 |
|  16 Dec 2008: | Foswiki:Main.KennethLavrsen - Foswiki version - no features changed |
|  03 Aug 2008: | TWiki 4.2.1 release version |
|  22 Jan 2008: | TWiki 4.2.0 release version |
|  25 Nov 2007: | 15752 - TWikibug:Item5006 - Renamed Bugs rule to TWikibug rule (PTh) |
|  13 Aug 2007: | 14545 - TWikibug:Item4451 - Added Bugs: rule (Foswiki:Main.CrawfordCurrie) |
|  11 Aug 2007: | 14538 - Fixed broken ISBN link (TWiki:Main.PeterThoeny) |
|  08 Nov 2006: | 11935 - Added css =class="interwikiLink"= (TWiki:Main.PeterThoeny) |
|  07 Nov 2006: | 11924 - Added INTERLINKFORMAT; removed redundant SUPPRESSTOOLTIP; allow @ signs in page part of interwiki link; support single digit page part (TWiki:Main.PeterThoeny) |
|  26 Feb 2005: | 1.008 Foswiki:Main.CrawfordCurrie cleaned up code and made Dakar-ready |
|  25 Aug 2004: | 1.005 TWiki:Main.PeterThoeny updated InterWikis link rules (no code change) |
|  09 Mar 2004: | Internal changes: Use only official TWiki::Func Plugin API; for increased speed, moved Interwiki link handling from outsidePREHandler to startRenderingHandler |
|  16 Feb 2004: | Support =[<nop>[Site:Page][label]]= Interwiki links (PTh); use TWiki::Func interface for <nop>I18N regular expressions (Walter Mundt) |
|  18 Jan 2003: | Allow number sign =#= in Page name (PTh) |
|  31 Aug 2002: | Allow percent sign =%= in page name (PTh) |
|  27 Jul 2001: | Allow numbers =0-9= in site name |
|  26 Jul 2001: | Fixed alternating missed link bug due to greedy $postfixPattern (fix by Richard Donkin) |
|  14 Jul 2001: | Changed to plug & play |
|  16 Jun 2001: | Made tooltips optional; prevent ==Module::Sub== type of link |
|  12 Jun 2001: | Added optional tool tips (IE only); added the link rules topic name variable; added flexible link patterns; optional ==$page== in URL |
|  10 Jun 2001: | Changed rules topic to table-based syntax |
|  20 Feb 2001: | TWiki:Main.AndreaSterbini, TWiki:Main.PeterThoeny - Initial version |

%META:FORM{name="PackageForm"}%
%META:FIELD{name="Author" title="Author" value="Foswiki:%25USERSWEB%25.AndreaSterbini, TWiki:Main.PeterThoeny"}%
%META:FIELD{name="Copyright" title="Copyright" value="&copy; 2001-2007, Andrea Sterbini, Peter Thoeny ([[http://www.twiki.net/][TWIKI.NET]]), 2007-2025 Foswiki:%25SYSTEMWEB%25.ProjectContributor"}%
%META:FIELD{name="Description" title="Description" value="Link !ExternalSite:Page text to external sites based on aliases defined in a rules topic"}%
%META:FIELD{name="Home" title="Home" value="http://foswiki.org/Extensions/InterwikiPlugin"}%
%META:FIELD{name="License" title="License" value="GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]])"}%
%META:FIELD{name="Release" title="Release" value="15 Mar 2026"}%
%META:FIELD{name="Repository" title="Repository" value="https://github.com/foswiki/distro"}%
%META:FIELD{name="Support" title="Support" value="http://foswiki.org/Support/InterwikiPlugin"}%
%META:FIELD{name="Version" title="Version" value="1.28"}%
