com.xpn.xwiki.plugin.skinx
Class LinkExtensionPlugin

java.lang.Object
  extended by com.xpn.xwiki.plugin.XWikiDefaultPlugin
      extended by com.xpn.xwiki.plugin.skinx.AbstractSkinExtensionPlugin
          extended by com.xpn.xwiki.plugin.skinx.LinkExtensionPlugin
All Implemented Interfaces:
com.xpn.xwiki.plugin.XWikiPluginInterface

public class LinkExtensionPlugin
extends AbstractSkinExtensionPlugin

Skin eXtension that allows inserting generic links in the <head> section of the resulting XHTML. Unlike JavaScript or StyleSheet extensions, Link extensions don't pull XDocuments as scripting or styling resources for the current document, but register additional related resources. Examples include:

Since:
1.5
Version:
$Id: b1d8a8a15f531cec8fb4c52eebe24ea17e84cc06 $

Field Summary
 
Fields inherited from class com.xpn.xwiki.plugin.skinx.AbstractSkinExtensionPlugin
contextKey, parametersContextKey
 
Constructor Summary
LinkExtensionPlugin(String name, String className, com.xpn.xwiki.XWikiContext context)
          XWiki plugin constructor.
 
Method Summary
 String endParsing(String content, com.xpn.xwiki.XWikiContext context)
          
 Set<String> getAlwaysUsedExtensions(com.xpn.xwiki.XWikiContext context)
          Returns the list of always used extensions of this type.
 String getLink(String link, com.xpn.xwiki.XWikiContext context)
          Abstract method for obtaining a link that points to the actual pulled resource.
 boolean hasPageExtensions(com.xpn.xwiki.XWikiContext context)
          Determines if the requested document contains on page skin extension objects of this type.
 
Methods inherited from class com.xpn.xwiki.plugin.skinx.AbstractSkinExtensionPlugin
getImportString, getParameter, getParametersForResource, getParametersMap, getPluginApi, getPulledResources, initializeRequestListIfNeeded, parametersAsQueryString, sanitize, use, use
 
Methods inherited from class com.xpn.xwiki.plugin.XWikiDefaultPlugin
beginParsing, beginRendering, commonTagsHandler, downloadAttachment, endRendering, endRenderingHandler, flushCache, flushCache, getClassName, getName, init, insidePREHandler, outsidePREHandler, setClassName, setName, startRenderingHandler, virtualInit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LinkExtensionPlugin

public LinkExtensionPlugin(String name,
                           String className,
                           com.xpn.xwiki.XWikiContext context)
XWiki plugin constructor.

Parameters:
name - The name of the plugin, which can be used for retrieving the plugin API from velocity. Unused.
className - The canonical classname of the plugin. Unused.
context - The current request context.
See Also:
XWikiDefaultPlugin.XWikiDefaultPlugin(String,String,com.xpn.xwiki.XWikiContext)
Method Detail

getLink

public String getLink(String link,
                      com.xpn.xwiki.XWikiContext context)
Description copied from class: AbstractSkinExtensionPlugin
Abstract method for obtaining a link that points to the actual pulled resource. Each type of resource has its own format for the link, for example Javascript uses <script src="/path/to/Document">, while CSS uses <link rel="stylesheet" href="/path/to/Document"> (the actual syntax is longer, this is just a simplified example).

Specified by:
getLink in class AbstractSkinExtensionPlugin
Parameters:
link - the name of the wiki document holding the resource.
context - the current request context, needed to access the URLFactory.
Returns:
A String representation of the linking element that should be printed in the generated HTML.

getAlwaysUsedExtensions

public Set<String> getAlwaysUsedExtensions(com.xpn.xwiki.XWikiContext context)
Returns the list of always used extensions of this type. Which resources are always used depends on the type of resource, for example document based StyleSheet extensions have a property in the object, use, which can have the value always to declare that an extension should always be used.

There is no support for always used link extensions yet.

Specified by:
getAlwaysUsedExtensions in class AbstractSkinExtensionPlugin
Parameters:
context - The current request context.
Returns:
A set of resource names that should be pulled in the current response. Note that this method is called for each request, as the list might change in time, and it can be different for each wiki in a farm.
See Also:
AbstractSkinExtensionPlugin.getAlwaysUsedExtensions(XWikiContext)

hasPageExtensions

public boolean hasPageExtensions(com.xpn.xwiki.XWikiContext context)
Determines if the requested document contains on page skin extension objects of this type. True if at least one of the extension objects has the currentPage value for the use property.

Not supported for link extensions.

Specified by:
hasPageExtensions in class AbstractSkinExtensionPlugin
Parameters:
context - the current request context
Returns:
a boolean specifying if the current document contains on page skin extensions
See Also:
AbstractSkinExtensionPlugin.hasPageExtensions(com.xpn.xwiki.XWikiContext)

endParsing

public String endParsing(String content,
                         com.xpn.xwiki.XWikiContext context)

At the end of the request, insert the links to the pulled resources in the response, in the place marked by an XML comment of the format <!-- canonical.plugin.classname -->.

We must override this method since the plugin manager only calls it for classes that provide their own implementation, and not an inherited one.

Specified by:
endParsing in interface com.xpn.xwiki.plugin.XWikiPluginInterface
Overrides:
endParsing in class AbstractSkinExtensionPlugin
See Also:
AbstractSkinExtensionPlugin.endParsing(String, XWikiContext)


Copyright © 2004-2012 XWiki. All Rights Reserved.