From 474e29ce4a831550d06a4fd3d6354fd41e32f121 Mon Sep 17 00:00:00 2001 From: orbiter Date: Thu, 3 Jul 2008 23:37:04 +0000 Subject: [PATCH] added options to configure the 'corporate identity'-icons, the home page link and the greeting line from the skin menue. Additionally an example is given there how to integrate a search page with an iframe. Please see the skin menu. git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4967 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- defaults/yacy.init | 6 +- htroot/ConfigSkins_p.html | 53 ++++- htroot/ConfigSkins_p.java | 222 +++++++++--------- htroot/env/base.css | 3 +- htroot/index.html | 4 +- htroot/index.java | 8 +- htroot/yacysearch.html | 2 +- htroot/yacysearch.java | 7 +- source/de/anomic/crawler/Balancer.java | 5 +- source/de/anomic/crawler/IndexingStack.java | 1 + .../de/anomic/kelondro/kelondroMicroDate.java | 4 + .../de/anomic/kelondro/kelondroRelations.java | 26 ++ 12 files changed, 207 insertions(+), 134 deletions(-) diff --git a/defaults/yacy.init b/defaults/yacy.init index 2d6709495..e51846232 100644 --- a/defaults/yacy.init +++ b/defaults/yacy.init @@ -243,9 +243,13 @@ parseableExt=html,htm,txt,php,shtml,asp,aspx,jsp # These strings appear in the Web Mask of the YACY search client # Set these Strings to cusomize your peer and give any message to # other peer users -promoteSearchPageGreeting = +promoteSearchPageGreeting = P2P Web Search # if the following property is set to true, the network name is used as greeting promoteSearchPageGreeting.useNetworkName = false +# the following attributes can be used to define a custom image and home page on the search page +promoteSearchPageGreeting.homepage = http://yacy.net +promoteSearchPageGreeting.largeImage = /env/grafics/YaCyLogo_120ppi.png +promoteSearchPageGreeting.smallImage = /env/grafics/YaCyLogo_60ppi.png # the path to the PLASMA database of the web spider dbPath=DATA/PLASMADB diff --git a/htroot/ConfigSkins_p.html b/htroot/ConfigSkins_p.html index 47521b4e0..4448f8c7d 100644 --- a/htroot/ConfigSkins_p.html +++ b/htroot/ConfigSkins_p.html @@ -26,7 +26,7 @@
- +
@@ -40,14 +40,63 @@
-
+
+ #(status)# ::

Unable to get URL: #[url]#

::

Error saving the skin.

#(/status)# + +

+ The search page may be customized. You can change the 'corporate identity'-images, the greeting line + and a link to a home page that is reached when the 'corporate identity'-images are clicked. +

+
+
+
+
Greeting Line
+
+ +
URL of Home Page
+
+ +
URL of a Small Corporate Image
+
+ +
URL of a Large Corporate Image
+
+ +
+
+
+
+ +

+ The search page can be integrated in your own web pages with an iframe. Simply use the following code: +

+

+      <iframe name="target"
+       src="http://#[myaddress]#/index.html?display=2&resource=local"
+       width="100%"
+       height="560"
+       frameborder="0"
+       scrolling="auto"
+       id="target"> 
+      </iframe>  
+    
+ This would look like: + + #%env/templates/footer.template%# diff --git a/htroot/ConfigSkins_p.java b/htroot/ConfigSkins_p.java index 14b870286..cd9d1f73d 100644 --- a/htroot/ConfigSkins_p.java +++ b/htroot/ConfigSkins_p.java @@ -7,7 +7,10 @@ // // This File is contributed by Alexander Schier // last change: 29.12.2004 +// extended by Michael Christen, 4.7.2008 // +// LICENSE +// // 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 @@ -21,29 +24,6 @@ // 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 -// -// Using this software in any meaning (reading, learning, copying, compiling, -// running) means that you agree that the Author(s) is (are) not responsible -// for cost, loss of data or any harm that may be caused directly or indirectly -// by usage of this softare or this documentation. The usage of this software -// is on your own risk. The installation and usage (starting/running) of this -// software may allow other people or application to access your computer and -// any attached devices and is highly dependent on the configuration of the -// software which must be done by the user of the software; the author(s) is -// (are) also not responsible for proper configuration and usage of the -// software, even if provoked by documentation provided together with -// the software. -// -// Any changes to this file according to the GPL as documented in the file -// gpl.txt aside this file in the shipment you received can be done to the -// lines that follows this copyright notice here, but changes must not be -// done inside the copyright notive above. A re-distribution must contain -// the intact and unchanged copyright notice. -// Contributions and changes to the program code must be marked as such. - -// You must compile this file with -// javac -classpath .:../Classes Blacklist_p.java -// if the shell's current path is HTROOT import java.io.BufferedWriter; import java.io.File; @@ -65,106 +45,116 @@ import de.anomic.yacy.yacyURL; public class ConfigSkins_p { - private static boolean copyFile(File from, File to){ - if(from == null || to == null){ - return false; - } - try{ - serverFileUtils.copy(from, to); - return true; - }catch(IOException e){ - return false; - } - } + public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { + serverObjects prop = new serverObjects(); + plasmaSwitchboard sb = (plasmaSwitchboard) env; + String skinPath = new File(env.getRootPath(), env.getConfig("skinPath", "DATA/SKINS")).toString(); - private static boolean changeSkin(plasmaSwitchboard sb, String skinPath, String skin){ - File htdocsDir = new File(sb.getConfigPath("htDocsPath", "DATA/HTDOCS"), "env"); - File styleFile = new File(htdocsDir, "style.css"); - File skinFile = new File(skinPath, skin); + // Fallback + prop.put("currentskin", ""); + prop.put("status", "0"); // nothing - styleFile.getParentFile().mkdirs(); - if(copyFile(skinFile, styleFile)){ - sb.setConfig("currentSkin", skin.substring(0,skin.length()-4)); - return true; - } - return false; - } + String[] skinFiles = listManager.getDirListing(skinPath); + if (skinFiles == null) { + return prop; + } - public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { - serverObjects prop = new serverObjects(); - plasmaSwitchboard switchboard = (plasmaSwitchboard) env; - String skinPath = new File(env.getRootPath(), env.getConfig("skinPath", "DATA/SKINS")).toString(); + // if there are no skins, use the current style as default + // normally only invoked at first start of YaCy + if (skinFiles.length == 0) { + try { + serverFileUtils.copy(new File(env.getRootPath(), "htroot/env/style.css"), new File(skinPath, "default.css")); + env.setConfig("currentSkin", "default"); + } catch (IOException e) { + e.printStackTrace(); + } + } - //Fallback - prop.put("currentskin", ""); - prop.put("status", "0"); //nothing - - String[] skinFiles = listManager.getDirListing(skinPath); - if(skinFiles == null){ - return prop; - } - - //if there are no skins, use the current style as default - //normally only invoked at first start of YaCy - if(skinFiles.length == 0){ - copyFile(new File(env.getRootPath(), "htroot/env/style.css"), new File(skinPath, "default.css")); - env.setConfig("currentSkin", "default"); - } - - if (post != null){ - //change skin - if(post.containsKey("use_button") && post.get("skin") != null){ - changeSkin(switchboard, skinPath, post.get("skin")); - - //delete skin - }else if(post.containsKey("delete")){ - File skinfile= new File(skinPath, post.get("skin")); - skinfile.delete(); + if (post != null) { + if (post.containsKey("use_button") && post.get("skin") != null) { + // change skin + changeSkin(sb, skinPath, post.get("skin")); - //load skin from URL - } else if (post.containsKey("url")){ - String url = post.get("url"); - ArrayList skinVector; - try { - yacyURL u = new yacyURL(url, null); - skinVector = nxTools.strings(HttpClient.wget(u.toString()), "UTF-8"); - } catch(IOException e) { - prop.put("status", "1");//unable to get URL - prop.put("status_url", url); - return prop; - } - try { - Iterator it = skinVector.iterator(); - File skinFile = new File(skinPath, url.substring(url.lastIndexOf("/"), url.length())); - BufferedWriter bw = new BufferedWriter(new PrintWriter(new FileWriter(skinFile))); + } + if (post.containsKey("delete_button")) { + // delete skin + File skinfile = new File(skinPath, post.get("skin")); + skinfile.delete(); - while(it.hasNext()){ - bw.write(it.next() + "\n"); - } - bw.close(); - } catch(IOException e){ - prop.put("status", "2");//error saving the skin - return prop; - } - if (post.containsKey("use_skin") && (post.get("use_skin")).equals("on")){ - changeSkin(switchboard, skinPath, url.substring(url.lastIndexOf("/"), url.length())); - } - } - } + } + if (post.containsKey("install_button")) { + // load skin from URL + String url = post.get("url"); + ArrayList skinVector; + try { + yacyURL u = new yacyURL(url, null); + skinVector = nxTools.strings(HttpClient.wget(u.toString()), "UTF-8"); + } catch (IOException e) { + prop.put("status", "1");// unable to get URL + prop.put("status_url", url); + return prop; + } + try { + Iterator it = skinVector.iterator(); + File skinFile = new File(skinPath, url.substring(url.lastIndexOf("/"), url.length())); + BufferedWriter bw = new BufferedWriter(new PrintWriter(new FileWriter(skinFile))); - - //reread skins - skinFiles = listManager.getDirListing(skinPath); - int i; - for(i=0;i<= skinFiles.length-1;i++){ - if(skinFiles[i].endsWith(".css")){ - prop.put("skinlist_"+i+"_file", skinFiles[i]); - prop.put("skinlist_"+i+"_name", skinFiles[i].substring(0, skinFiles[i].length() -4)); - } - } - prop.put("skinlist", i); + while (it.hasNext()) { + bw.write(it.next() + "\n"); + } + bw.close(); + } catch (IOException e) { + prop.put("status", "2");// error saving the skin + return prop; + } + if (post.containsKey("use_skin") && (post.get("use_skin", "")).equals("on")) { + changeSkin(sb, skinPath, url.substring(url.lastIndexOf("/"), url.length())); + } + } + if (post.containsKey("searchpage_button")) { + sb.setConfig("promoteSearchPageGreeting", post.get("promoteSearchPageGreeting", "")); + sb.setConfig("promoteSearchPageGreeting.homepage", post.get("promoteSearchPageGreeting.homepage", "")); + sb.setConfig("promoteSearchPageGreeting.largeImage", post.get("promoteSearchPageGreeting.largeImage", "")); + sb.setConfig("promoteSearchPageGreeting.smallImage", post.get("promoteSearchPageGreeting.smallImage", "")); + } + + } - prop.put("currentskin", env.getConfig("currentSkin", "default")); - return prop; + // reread skins + skinFiles = listManager.getDirListing(skinPath); + int i; + for (i = 0; i <= skinFiles.length - 1; i++) { + if (skinFiles[i].endsWith(".css")) { + prop.put("skinlist_" + i + "_file", skinFiles[i]); + prop.put("skinlist_" + i + "_name", skinFiles[i].substring(0, skinFiles[i].length() - 4)); + } + } + prop.put("skinlist", i); + + prop.put("currentskin", env.getConfig("currentSkin", "default")); + + prop.put("promoteSearchPageGreeting", sb.getConfig("promoteSearchPageGreeting", "")); + prop.put("promoteSearchPageGreeting.homepage", sb.getConfig("promoteSearchPageGreeting.homepage", "")); + prop.put("promoteSearchPageGreeting.largeImage", sb.getConfig("promoteSearchPageGreeting.largeImage", "")); + prop.put("promoteSearchPageGreeting.smallImage", sb.getConfig("promoteSearchPageGreeting.smallImage", "")); + String myaddress = sb.webIndex.seedDB.mySeed().getPublicAddress(); + if (myaddress == null) myaddress = "localhost:" + sb.getConfig("port", "8080"); + prop.put("myaddress", myaddress); + return prop; + } + + private static boolean changeSkin(plasmaSwitchboard sb, String skinPath, String skin) { + File htdocsDir = new File(sb.getConfigPath("htDocsPath", "DATA/HTDOCS"), "env"); + File styleFile = new File(htdocsDir, "style.css"); + File skinFile = new File(skinPath, skin); + + styleFile.getParentFile().mkdirs(); + try { + serverFileUtils.copy(skinFile, styleFile); + sb.setConfig("currentSkin", skin.substring(0, skin.length() - 4)); + return true; + } catch (IOException e) { + return false; + } } } diff --git a/htroot/env/base.css b/htroot/env/base.css index 79fc4ab40..a3c28a2f1 100644 --- a/htroot/env/base.css +++ b/htroot/env/base.css @@ -385,10 +385,9 @@ div.head h1 { h2.yacy { /* The heading in index.html */ margin:10px auto; text-align:center; - padding-top:130px; + padding-top:20px; width:256px; min-width:256px; /*min-width does not exist in IE 5.5, 6 and Safari */ - background:url(/env/grafics/YaCyLogo_120ppi.png) top center no-repeat; } div.welcome { /* The heading in Status.html */ diff --git a/htroot/index.html b/htroot/index.html index f0c48053d..8c024e7fb 100644 --- a/htroot/index.html +++ b/htroot/index.html @@ -7,7 +7,7 @@ - + #(display)# #%env/templates/simpleheader.template%# :: @@ -17,6 +17,7 @@ #(/display)#

+

#[promoteSearchPageGreeting]#

@@ -103,7 +104,6 @@ #(/searchoptions)# -

This peer holds #[links]# URLs

#(searchoptions)#:: ::