Page History
...
2. Cocoon-based method. You could use cocoon to check the url right after the generation step, and then add in your own static DRI page. This method requires that all your static pages be expressed as DRI and then transformed into HTML by your standard theme templates. This method is useful if you will have lots of static pages that need to be managed, but requires modifying the cocoon sitemap.xmap.
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
[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>
|
we add:
Code Block |
---|
<map:transformer name="AboutPage" src="org.dspace.app.xmlui.aspect.artifactbrowser.AboutPage" />
|
and under the tags:
Code Block |
---|
<map:pipelines>
<map:pipeline>
|
We add:
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.xconf
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 . . . ]
|
Now one must create a link calling for this page, eg. on the side menus under <xsl:template match="dri:options">
Code Block |
---|
<div id="ds-search-option" class="ds-option-set">
<a>
<xsl:attribute name="href">
<!-- isso pegara o context, neste caso http://143.107.73.153:8080/xmlui/ -->
<xsl:value-of select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='contextPath'][not(@qualifier)]"/>
<!-- e entao concatenando teremos context/contact -->
<xsl:text>/about</xsl:text>
</xsl:attribute>
<!-- e aqui o label descritivo -->
<i18n:text>xmlui.dri2xhtml.structural.static.about</i18n:text>
</a><br/>
|
3. Tomcat/apache-based method. Outside of Manakin or DSpace you could reroute urls to static pages using Tomcat's web.xml or the Apache configuration. This method while easy doesn't allow you to have any of the dynamic content (such as who's loged in) available on the page.
...
A very simple gocha that is bound to get any developer working with XML at least once is the single restriction XML places on its comments. In XML (and therefore XSL) syntax, comments as designated by the pair <!- - comments - ->. The character sequence – (dash dash) cannot appear inside the XML comment section and its inclusion will throw an error. Some processors do not explicitly report the exact line where the offending character sequence occurs, instead pointing the developer to the beginning or the end of the entire comment block. In general, if you are getting a malformed XML error somewhere in the comment block, a simple string search for a double dash should fix the problem.
...