public class CmsDefaultLinkSubstitutionHandler extends java.lang.Object implements I_CmsLinkSubstitutionHandler
for the method where this handler is used.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ATTR_IS_IMAGE_LINK
Request context attribute name to make the link substitution handler treat the link like an image link.
|
static java.lang.String |
DONT_USE_CURRENT_SITE_FOR_WORKPLACE_REQUESTS
Key for a request context attribute to control whether the getRootPath method uses the current site root for workplace requests.
|
static java.lang.String |
OVERRIDE_SITEROOT_PREFIX
Prefix used for request context attributes to control whether a different site root should be used in appendServerPrefix.
|
Constructor and Description |
---|
CmsDefaultLinkSubstitutionHandler() |
Modifier and Type | Method and Description |
---|---|
protected CmsPair<java.lang.String,java.lang.String> |
addVfsPrefix(CmsObject cms,
java.lang.String vfsName,
CmsSite targetSite,
java.lang.String parameters)
Adds the VFS prefix to the VFS name and potentially adjusts request parameters
This method is required as a hook used in
CmsLocalePrefixLinkSubstitutionHandler . |
protected java.lang.String |
generateCacheKey(CmsObject cms,
java.lang.String targetSiteRoot,
java.lang.String detailPagePart,
java.lang.String absoluteLink)
Generates the cache key for Online links.
|
java.lang.String |
getLink(CmsObject cms,
java.lang.String link,
java.lang.String siteRoot,
boolean forceSecure)
Returns the resource root path in the OpenCms VFS for the given link, or
null in
case the link points to an external site. |
java.lang.String |
getLink(CmsObject cms,
java.lang.String link,
java.lang.String siteRoot,
java.lang.String targetDetailPage,
boolean forceSecure)
Returns a link from the URI stored in the provided OpenCms user context
to the VFS resource indicated by the given
link and siteRoot ,
for use on web pages. |
java.lang.String |
getRootPath(CmsObject cms,
java.lang.String targetUri,
java.lang.String basePath)
Returns the resource root path in the OpenCms VFS for the given target URI link, or
null in
case the link points to an external site. |
protected java.lang.String |
getRootPathForSite(CmsObject cms,
java.lang.String path,
java.lang.String siteRoot,
boolean isRootPath)
Returns the root path for given site.
|
protected java.lang.String |
getSimpleRootPath(CmsObject cms,
java.lang.String targetUri,
java.lang.String basePath)
Gets the root path without taking into account detail page links.
|
protected boolean |
isDetailPageLinkSecure(CmsObject cms,
java.lang.String detailPage,
CmsResource detailContent,
CmsSite targetSite,
boolean secureRequest)
Checks whether a link to a detail page should be secure.
|
protected boolean |
isSecureLink(CmsObject cms,
java.lang.String vfsName,
CmsSite targetSite,
boolean secureRequest)
Checks if the link target is a secure link.
|
protected java.lang.String |
prepareExportParameters(CmsObject cms,
java.lang.String vfsName,
java.lang.String parameters)
Prepares the request parameters for the given resource.
|
public static final java.lang.String ATTR_IS_IMAGE_LINK
public static final java.lang.String DONT_USE_CURRENT_SITE_FOR_WORKPLACE_REQUESTS
public static final java.lang.String OVERRIDE_SITEROOT_PREFIX
public CmsDefaultLinkSubstitutionHandler()
public java.lang.String getLink(CmsObject cms, java.lang.String link, java.lang.String siteRoot, boolean forceSecure)
null
in
case the link points to an external site.If the target URI contains no site information, but starts with the opencms context, the context is removed:
/opencms/opencms/system/further_path -> /system/further_pathIf the target URI contains no site information, the path will be prefixed with the current site from the provided OpenCms user context:
/folder/page.html -> /sites/mysite/folder/page.htmlIf the path of the target URI is relative, i.e. does not start with "/", the path will be prefixed with the current site and the given relative path, then normalized. If no relative path is given,
null
is returned.
If the normalized path is outsite a site, null is returned.page.html -> /sites/mysite/page.html ../page.html -> /sites/mysite/page.html ../../page.html -> nullIf the target URI contains a scheme/server name that denotes an opencms site, it is replaced by the appropriate site path:
http://www.mysite.de/folder/page.html -> /sites/mysite/folder/page.html
If the target URI contains a scheme/server name that does not match with any site,
or if the URI is opaque or invalid,
null
is returned:
http://www.elsewhere.com/page.html -> null mailto:[email protected] -> null
getLink
in interface I_CmsLinkSubstitutionHandler
cms
- the current OpenCms user contextlink
- the link to process which is assumed to point to a VFS resource, with optional parameterssiteRoot
- the site root of the link
forceSecure
- if true
generates always an absolute URL (with protocol and server name) for secure linkslink
and siteRoot
I_CmsLinkSubstitutionHandler.getLink(org.opencms.file.CmsObject, java.lang.String, java.lang.String, boolean)
public java.lang.String getLink(CmsObject cms, java.lang.String link, java.lang.String siteRoot, java.lang.String targetDetailPage, boolean forceSecure)
I_CmsLinkSubstitutionHandler
link
and siteRoot
,
for use on web pages.The result should be an absolute link that contains the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.
In case link
is a relative URI, the current URI contained in the provided
OpenCms user context cms
is normally used to make the relative link
absolute.
The provided siteRoot
is assumed to be the "home" of the link.
In case the current site of the given OpenCms user context cms
is different from the
provided siteRoot
, the full server prefix is appended to the result link.
A server prefix is also added if
CmsDefaultLinkSubstitutionHandler
, which can be fully customized using this handler interface.getLink
in interface I_CmsLinkSubstitutionHandler
cms
- the current OpenCms user contextlink
- the link to process which is assumed to point to a VFS resource, with optional parameterssiteRoot
- the site root of the link
targetDetailPage
- the target detail page, in case of linking to a specific detail pageforceSecure
- if true
generates always an absolute URL (with protocol and server name) for secure linkslink
and siteRoot
I_CmsLinkSubstitutionHandler.getLink(org.opencms.file.CmsObject, java.lang.String, java.lang.String, java.lang.String, boolean)
public java.lang.String getRootPath(CmsObject cms, java.lang.String targetUri, java.lang.String basePath)
I_CmsLinkSubstitutionHandler
null
in
case the link points to an external site.The default implementation applies the following transformations to the link:
/opencms/opencms
,
this prefix is removed from the result
basePath
as starting point.
http://www.mysite.de/
),
which points to a configured site in OpenCms, the server schema is replaced with
the root path of the site.
null
is returned.
CmsDefaultLinkSubstitutionHandler
, which can be fully customized using this handler interface.getRootPath
in interface I_CmsLinkSubstitutionHandler
cms
- the current users OpenCms contexttargetUri
- the target URI linkbasePath
- path to use as base in case the target URI is relative (can be null
)null
in
case the link points to an external siteI_CmsLinkSubstitutionHandler.getRootPath(org.opencms.file.CmsObject, java.lang.String, java.lang.String)
protected CmsPair<java.lang.String,java.lang.String> addVfsPrefix(CmsObject cms, java.lang.String vfsName, CmsSite targetSite, java.lang.String parameters)
This method is required as a hook used in CmsLocalePrefixLinkSubstitutionHandler
.
cms
- the cms contextvfsName
- the VFS nametargetSite
- the target siteparameters
- the request parametersprotected java.lang.String generateCacheKey(CmsObject cms, java.lang.String targetSiteRoot, java.lang.String detailPagePart, java.lang.String absoluteLink)
cms
- the current CmsObjecttargetSiteRoot
- the target site rootdetailPagePart
- the detail page partabsoluteLink
- the absolute (site-relative) link to the resourceprotected java.lang.String getRootPathForSite(CmsObject cms, java.lang.String path, java.lang.String siteRoot, boolean isRootPath)
This method is required as a hook used in CmsLocalePrefixLinkSubstitutionHandler
.
cms
- the cms contextpath
- the pathsiteRoot
- the site root, will be null in case of the root siteisRootPath
- in case the path is already a root pathprotected java.lang.String getSimpleRootPath(CmsObject cms, java.lang.String targetUri, java.lang.String basePath)
cms
- - see the getRootPath() methodtargetUri
- - see the getRootPath() methodbasePath
- - see the getRootPath() methodprotected boolean isDetailPageLinkSecure(CmsObject cms, java.lang.String detailPage, CmsResource detailContent, CmsSite targetSite, boolean secureRequest)
cms
- the current CMS contextdetailPage
- the detail page pathdetailContent
- the detail content resourcetargetSite
- the target site containing the detail pagesecureRequest
- true if the currently running request is secureprotected boolean isSecureLink(CmsObject cms, java.lang.String vfsName, CmsSite targetSite, boolean secureRequest)
cms
- the current CMS contextvfsName
- the path of the link targettargetSite
- the target site containing the detail pagesecureRequest
- true if the currently running request is secureprotected java.lang.String prepareExportParameters(CmsObject cms, java.lang.String vfsName, java.lang.String parameters)
This method is required as a hook used in CmsLocalePrefixLinkSubstitutionHandler
.
cms
- the cms contextvfsName
- the vfs nameparameters
- the parameters to prepare