Page History
...
This method also allows your page to have a defined Title and breadcrumbs added via DRI, which one doesn't get by simply adding information to the xsl template (but there probably are ways of doing it directly via xsl).
Create the java file which will add the DRI
\ Wiki Markup
[dspace-src\]/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/AboutPage.java
Code Block |
---|
/** * AboutPage.java * * Basead on the code by Peter Dietz: * https://gist.github.com/842301#file_dspace_add_about.diff (acessed 11-05-23) * * Modified to work with internationalization (i18n locales) and breadcrumbs * by Andre Nito Assada e Josi Perez Alvarez on 11-05-23 */ package org.dspace.app.xmlui.aspect.artifactbrowser; import org.apache.log4j.Logger; import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer; import org.dspace.app.xmlui.wing.WingException; import org.dspace.app.xmlui.wing.element.Body; import org.dspace.app.xmlui.wing.element.Division; import org.dspace.app.xmlui.wing.element.PageMeta; import org.xml.sax.SAXException; import java.io.IOException; import java.io.Serializable; import java.sql.SQLException; import org.apache.cocoon.caching.CacheableProcessingComponent; import org.apache.excalibur.source.SourceValidity; import org.apache.excalibur.source.impl.validity.NOPValidity; import org.dspace.app.xmlui.utils.UIException; import org.dspace.app.xmlui.wing.Message; import org.dspace.authorize.AuthorizeException; /** * Display about us page. * * @author Peter Dietz */ public class AboutPage extends AbstractDSpaceTransformer { /** * Internationalization * 110523 */ public static final Message T_dspace_home = message("xmlui.general.dspace_home"); public static final Message T_title = message("xmlui.ArtifactBrowser.AboutPage.title"); public static final Message T_trail = message("xmlui.ArtifactBrowser.AboutPage.trail"); public static final Message T_head = message("xmlui.ArtifactBrowser.AboutPage.head"); public static final Message T_para = message("xmlui.ArtifactBrowser.AboutPage.para"); private static Logger log = Logger.getLogger(AboutPage.class); /** * Add a page title and trail links. */ public void addPageMeta(PageMeta pageMeta) throws SAXException, WingException { // Set the page title // pageMeta.addMetadata("title").addContent("About Us"); // 110523 modified page title with internationalization and added breadcrumbs pageMeta.addMetadata("title").addContent(T_title); // add trail pageMeta.addTrailLink(contextPath + "/",T_dspace_home); pageMeta.addTrail().addContent(T_trail); } /** * Add some basic contents */ public void addBody(Body body) throws SAXException, WingException { //Division division = body.addDivision("about-page", "primary"); //Division.setHead("About Us - Institutional Repository"); //Division.addPara("We are an institutional repository that specializes in storing your digital artifacts."); //110523 modified with internationalization Division division = body.addDivision("about-page", "primary"); division.setHead(T_head); division.addPara(T_para); } } |
...
Then map it on
\
[dspace-src\]/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/BrowseArtifacts/sitemap.xmap
under the tags:
Code Block |
---|
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <map:components> <map:transformers> |
...
Code Block |
---|
<map:match pattern="about"> <map:transform type="AboutPage"/> <map:serialize type="xml" /> </map:match> |
_note:_ On Manakin 1.7, this mapping should be done on BrowseArtifacts sitemap, and *not* on ArtifactBrowser sitemap, as it's deprecated in this version. On older versions, one should check which aspect is valid (and therefore which sitemap should be eddited) on the \ [dspace-src\]/config/xmlui.xconfunmigrated-wiki-markup Wiki Markup
Now we override the <dri:body> of our theme to fit the calls for this aspect. On the Mirage theme one should edit \ [dspace-src\]/dspace-xmlui/dspace-xmlui-webapp/src/main/webapp/themes/Mirage/Mirage.xsl
and on the standard theme, one should edit the dri2xhtml.xsl
Code Block |
---|
<xsl:template match="dri:body"> <xsl:variable name="meta" select="/dri:document/dri:meta/dri:pageMeta/dri:metadata"/> <xsl:variable name="pageName" select="$meta[@element='request'][@qualifier='URI']"/> <xsl:variable name="doc" select="document(concat('pages/', $pageName, '.xhtml'))"/> <div id="ds-body"> <!-- when conditional to handle the call for {dspace-webhost}/about --> <xsl:choose> <xsl:when test="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='request'][@qualifier='URI']='about'"> <div> <h1>This is a simple ABOUT page</h1> <xsl:apply-templates /> </div> </xsl:when> [ e t c . . . ] |
...
<xsl:template match="dri:list">
unmigrated-wiki-markup- {{
<xsl:template
match="dri:list
\[1
\]"
priority="2">
}} {{Wiki Markup <xsl:template
match="dri:list
\[count(child:.*)=0
\]"
priority="3">
}}
and so on to any level of complexity. Furthermore, this relationship is not necessarily symmetrical; in the example above a template that matches only empty lists will only trigger for empty lists, but a template that matches all lists can match all empty lists as well. This creates an ambiguity that must be resolved by the XSL processor. To that end templates are prioritized as follows:
...