Support for a supertemplate, which can do all thing, a normal template can do.

Its a layer under the servlets, this means, #[page]# will be replaced by serverletcode, the rest can be set by you.
(TODO: if we use this for layout, we need to read "TITLE" from the servlet's tp, to set it outside of the servlet.)

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2302 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
allo 19 years ago
parent 4bd626572b
commit 7b0e2521bb

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="source"/>
<classpathentry excluding="env/|htdocsdefault/|locale/|proxymsg/|yacy/" output="htroot" kind="src" path="htroot"/>
<classpathentry excluding="htdocsdefault/|locale/|proxymsg/|yacy/|env/|env/" output="htroot" kind="src" path="htroot"/>
<classpathentry kind="src" path="htroot/htdocsdefault"/>
<classpathentry kind="src" path="htroot/yacy"/>
<classpathentry kind="src" path="htroot/env"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/commons-collections.jar"/>
<classpathentry kind="lib" path="lib/commons-pool-1.2.jar"/>

@ -0,0 +1,3 @@
#[test1]#
#[page]#
#(test2)#zero::one::two#(/test2)#

@ -0,0 +1,41 @@
//page.java - super template, to allow a scripted layout.
//----------------------------------------------------------
//part of YaCy
//
// (C) 2006 by Alexander Schier
//
// last change: $LastChangedDate: $ by $LastChangedBy: $
// $LastChangedRevision: $
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//note: this isn't useful, yet.
//this is only a basic demonstration, what can be done with the supertemplates.
import de.anomic.http.httpHeader;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
public class page {
public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) {
//plasmaSwitchboard switchboard = (plasmaSwitchboard) env;
serverObjects prop = new serverObjects();
prop.put("test1", "testit!");
prop.put("test2", 1);
return prop;
}
}

@ -691,7 +691,26 @@ public final class httpdFileHandler extends httpdAbstractHandler implements http
} else {
fis = new BufferedInputStream(new FileInputStream(targetFile));
}
//use the page template
if(sb.getConfig("usePageTemplate", "false").equals("true")){
o = new serverByteBuffer();
File pageFile=getOverlayedFile("/env/page.html");
File pageClass=getOverlayedClass("/env/page.html");
if(pageFile != null && pageFile.exists()){
//warning: o,tp and fis are reused
httpTemplate.writeTemplate(fis, o, tp, "-UNRESOLVED_PATTERN-".getBytes());
if(pageClass != null && pageClass.exists())
tp = (serverObjects) rewriteMethod(pageClass).invoke(null, new Object[] {requestHeader, args, switchboard});
else
tp = new serverObjects();
tp.put("page", o.toString());
fis=new BufferedInputStream(new FileInputStream(pageFile));
}
}
o = new serverByteBuffer();
if (zipContent) zippedOut = new GZIPOutputStream(o);
httpTemplate.writeTemplate(fis, (zipContent) ? (OutputStream)zippedOut: (OutputStream)o, tp, "-UNRESOLVED_PATTERN-".getBytes());
@ -701,6 +720,7 @@ public final class httpdFileHandler extends httpdAbstractHandler implements http
zippedOut.close();
zippedOut = null;
}
result = o.toByteArray();
if (this.md5Digest != null) {

@ -696,6 +696,12 @@ CRDist1Target = kaskelix.de:8080,yacy.dyndns.org:8000,suma-lab.de:8080
# Hash of the peer, you would like to store to the data your installation collected.
storagePeerHash =
#use /env/page.html (and if it exists page.class) as super template,
# which includes the generated page in #[page]#.
#This option is for developers only, because it may be integrated by default, or not,
#but its not useful to mix configurations with and without this supertemplate.
usePageTemplate = false
# Search sequence settings
# collection:
# time = time to get a RWI out of RAM cache, assortments and WORDS files

Loading…
Cancel
Save