diff --git a/.classpath b/.classpath index f8b070d7b..4c40bdd14 100644 --- a/.classpath +++ b/.classpath @@ -1,9 +1,10 @@ - + + diff --git a/htroot/env/page.html b/htroot/env/page.html new file mode 100644 index 000000000..6292a3945 --- /dev/null +++ b/htroot/env/page.html @@ -0,0 +1,3 @@ +#[test1]# +#[page]# +#(test2)#zero::one::two#(/test2)# \ No newline at end of file diff --git a/htroot/env/page.java b/htroot/env/page.java new file mode 100644 index 000000000..f7ad0f8a8 --- /dev/null +++ b/htroot/env/page.java @@ -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; + } + +} \ No newline at end of file diff --git a/source/de/anomic/http/httpdFileHandler.java b/source/de/anomic/http/httpdFileHandler.java index ce9300bea..39fb94568 100644 --- a/source/de/anomic/http/httpdFileHandler.java +++ b/source/de/anomic/http/httpdFileHandler.java @@ -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) { diff --git a/yacy.init b/yacy.init index 62a9cb250..0255ddfb7 100644 --- a/yacy.init +++ b/yacy.init @@ -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