Extension:ExtendAnchorTags
This extension stores its source code on a wiki page. Please be aware that this code may be unreviewed or maliciously altered. They may contain security holes, outdated interfaces that are no longer compatible etc. Note: No localisation updates are provided for this extension by translatewiki.net . |
This extension is currently not actively maintained! Although it may still work, any bug reports or feature requests will more than likely be ignored. |
![]() Release status: unmaintained |
|
---|---|
Implementation | Tag |
Description | Adds <xa></xa> tags and parses them to <a class(es) href=''></a> tags. |
Author(s) | jeffmcneill |
Latest version | 0.5 |
MediaWiki | 1.7.3, 1.9.3, 1.11 |
License | GNU General Public License 3.0 |
Download | #Code 0.5 added javascript: protocol support; 0.4 added itpc:// protocol option |
What can this extension do?Edit
The purpose is to allow added class values to be included in anchor tags, to support POSH and microformats. Builds on the AllowAnchorTags extension. Adds support for <xa></xa>
tags and parses them to <a class href=></a>
tags.
- Can support class, rel, and target
UsageEdit
The URL must be specified in the following format: <xa class='some class(es)' href='http://someurl.com' target='_blank'>Some Text</xa>
.
- Both class and target are optional, but including one or the other is sort of the point of this extension.
InstallationEdit
To install/test the extension kindly add it to the end of your LocalSettings.php
file in your MediaWiki installation folder.
ParametersEdit
Changes to LocalSettings.phpEdit
require_once("extensions/ExtendAnchorTags.php");
CodeEdit
/**
* ExtendAnchorTags.php
* v.0.5 adds javascript: protocol support
* v.0.4 adds itpc:// protocol support
* v.0.3 has return codes to support mw 1.11
* This extension creates the tag <xa></xa> allowing for class(es) and link attributes in anchor tags
* written by Jeff McNeill http://jeffmcneill.com/
* building on the work of AllowAnchorTags http://www.mediawiki.org/wiki/Extension:AllowAnchorTags
* To activate the functionality of this extension include the following in LocalSettings.php file:
* require_once('extensions/ExtendAnchorTags.php');
*/
#Defines the main function to be executed for this extension.
$wgExtensionFunctions[] = 'extendAnchorTag';
# Sets the hook to be executed once the parser has stripped HTML tags.
$wgHooks['ParserAfterStrip'][] = 'extendAnchorTag';
# This function initiates the hook for the parser to convert <xa></xa>
# tags to <a href=''></a> tags.
function extendAnchorTag() {
// Declaring the global parser..
global $wgParser;
// Setting the hook to parse <xa></xa> tags from the parser output..
$wgParser->setHook( 'xa', 'startExtendAnchor' );
return(true);
}
# This function extracts the parameters from the <xa></xa> tags and
# the text between the <xa> and </xa> tags and formats them as "<a href=''>"
# tags and writes them in the document.
function startExtendAnchor( $input, $argv ) {
// Matching to see if the URL matches the prefixes in $wgUrlProtocols.. plus some others
if (preg_match("/^(http:\/\/|https:\/\/|ftp:\/\/|irc:\/\/|gopher:\/\/|news:|mailto:|skype:|xmpp:|itunes:|#|itpc:\/\/|javascript:)/", $argv['href'])) {
// Fetching the 'href' parameter..
$href = $argv['href'];
} else {
$href = '';
}
// Fetching the 'target' parameter..
if(isset($argv['target'])) {
$target = $argv['target'];
} else {
$target = '';
}
if (strncasecmp($input,'<img ',5) == 0) {
$body = "<" . htmlspecialchars(preg_replace("/(^<)(.+)(>$)/","$2",$input)) . ">";
} else {
$body = htmlspecialchars($input);
}
// Fetching the 'class' parameter..
if(isset($argv['class'])) {
$class = $argv['class'];
} else {
$class = '';
}
// Fetching the 'rel' parameter..
if(isset($argv['rel'])) {
$rel = $argv['rel'];
} else {
$rel = '';
}
// Fetching the 'alt' parameter.. // note still need to incorporate this below
if(isset($argv['alt'])) {
$alt = $argv['alt'];
} else {
$alt = '';
}
if ($href != '' && $target != '' && $class != '' && $rel != '' ) {
// all four
return "<a" . " class=\"" . $class . "\"" . " rel=\"" . $rel . "\"" . " href=\"" . htmlspecialchars($href) . "\"" . " target=\"" . $target . "\">" . $body . "</a>";
} else if ($href != '' && $target != '' && $class != '' ) {
// target and class
return "<a" . " class=\"" . $class . "\"" . " href=\"" . htmlspecialchars($href) . "\"" . " target=\"" . $target . "\">" . $body . "</a>";
} else if ($href != '' && $target != '' && $rel != '' ) {
// target and rel
return "<a" . " rel=\"" . $rel . "\"" . " href=\"" . htmlspecialchars($href) . "\"" . " target=\"" . $target . "\">" . $body . "</a>";
} else if ($href != '' && $class != '' && $rel != '' ) {
// class and rel
return "<a" . " class=\"" . $class . "\"" . " rel=\"" . $rel . "\"" . " href=\"" . htmlspecialchars($href) . "\">" . $body . "</a>";
} else if ($href != '' && $class != '' ) {
// class
return "<a" . " class=\"" . $class . "\"" . " href=\"" . htmlspecialchars($href) . "\">" . $body . "</a>";
} else if ($href != '' && $target != '' ) {
// target
return "<a" . " href=\"" . htmlspecialchars($href) . "\"" . " target=\"" . $target . "\">" . $body . "</a>";
} else if ($href != '' && $rel != '' ) {
// rel
return "<a" . " rel=\"" . $rel . "\"" . " href=\"" . htmlspecialchars($href) . "\">" . $body . "</a>";
} else if ($href != '' ) {
// nothing
return "<a" . " href=\"" . htmlspecialchars($href) . "\">" . $body . "</a>";
} else {
return(false);
}
}
To-doEdit
- Support for alt=""
- Support to work within templates Support +1