diff --git a/htroot/ConfigPortal.html b/htroot/ConfigPortal.html
index 7fab4068e..3cb3756f1 100644
--- a/htroot/ConfigPortal.html
+++ b/htroot/ConfigPortal.html
@@ -57,6 +57,11 @@
Applications
+
Show additional interaction features in footer
+
+ User-Logon
+
+
Snippet Fetch Strategy & Link Verification
Speed up search results with this option! (use CACHEONLY or FALSE to switch off verification)
diff --git a/htroot/ConfigPortal.java b/htroot/ConfigPortal.java
index 5429644bc..8555889dd 100644
--- a/htroot/ConfigPortal.java
+++ b/htroot/ConfigPortal.java
@@ -80,6 +80,8 @@ public class ConfigPortal {
sb.setConfig("publicTopmenu", post.getBoolean("publicTopmenu", true));
sb.setConfig("publicSearchpage", post.getBoolean("publicSearchpage", true));
sb.setConfig("search.options", post.getBoolean("search.options", false));
+
+ sb.setConfig("interaction.userlogon.enabled", post.getBoolean("interaction.userlogon", false));
sb.setConfig("search.text", post.getBoolean("search.text", false));
sb.setConfig("search.image", post.getBoolean("search.image", false));
@@ -129,6 +131,7 @@ public class ConfigPortal {
sb.setConfig("publicSearchpage", true);
sb.setConfig("search.navigation", "hosts,authors,namespace,topics");
sb.setConfig("search.options", true);
+ sb.setConfig("interaction.userlogon.enabled", false);
sb.setConfig("search.text", true);
sb.setConfig("search.image", true);
sb.setConfig("search.audio", false);
@@ -160,6 +163,8 @@ public class ConfigPortal {
prop.put("publicSearchpage", sb.getConfigBool("publicSearchpage", false) ? 1 : 0);
prop.put("search.options", sb.getConfigBool("search.options", false) ? 1 : 0);
+ prop.put("interaction.userlogon", sb.getConfigBool("interaction.userlogon.enabled", false) ? 1 : 0);
+
prop.put("search.text", sb.getConfigBool("search.text", false) ? 1 : 0);
prop.put("search.image", sb.getConfigBool("search.image", false) ? 1 : 0);
prop.put("search.audio", sb.getConfigBool("search.audio", false) ? 1 : 0);
diff --git a/htroot/env/templates/embeddedfooter.template b/htroot/env/templates/embeddedfooter.template
index 04f5b8449..c8a7fb0b9 100644
--- a/htroot/env/templates/embeddedfooter.template
+++ b/htroot/env/templates/embeddedfooter.template
@@ -1 +1,2 @@
+
\ No newline at end of file
diff --git a/htroot/env/templates/footer.template b/htroot/env/templates/footer.template
index 7f5eaa32e..c8a7fb0b9 100644
--- a/htroot/env/templates/footer.template
+++ b/htroot/env/templates/footer.template
@@ -1 +1,2 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/htroot/env/templates/simplefooter.template b/htroot/env/templates/simplefooter.template
index 04f5b8449..c8a7fb0b9 100644
--- a/htroot/env/templates/simplefooter.template
+++ b/htroot/env/templates/simplefooter.template
@@ -1 +1,2 @@
+
\ No newline at end of file
diff --git a/htroot/interaction_elements/Footer.html b/htroot/interaction_elements/Footer.html
new file mode 100644
index 000000000..77c8a3ecd
--- /dev/null
+++ b/htroot/interaction_elements/Footer.html
@@ -0,0 +1,88 @@
+#(enabled)#::
+
+
+
+
+
+
+
+#(/enabled)#
\ No newline at end of file
diff --git a/htroot/interaction_elements/Footer.java b/htroot/interaction_elements/Footer.java
new file mode 100644
index 000000000..6c3e66c9e
--- /dev/null
+++ b/htroot/interaction_elements/Footer.java
@@ -0,0 +1,35 @@
+package interaction_elements;
+
+
+import net.yacy.cora.protocol.RequestHeader;
+import net.yacy.search.Switchboard;
+import de.anomic.server.serverObjects;
+import de.anomic.server.serverSwitch;
+
+public class Footer {
+
+ public static serverObjects respond(final RequestHeader requestHeader, final serverObjects post, final serverSwitch env) {
+
+ final Switchboard sb = (Switchboard) env;
+
+ final serverObjects prop = new serverObjects();
+
+ prop.put("enabled_color", env.getConfig("color_tableheader", ""));
+
+ int count = 0;
+
+ prop.put("enabled_userlogonenabled", env.getConfigBool("interaction.userlogon.enabled", false) ? "1" : "0");
+ if (env.getConfigBool("interaction.userlogon.enabled", false)) count++;
+
+ if (count > 0) {
+ prop.put("enabled", "1");
+ prop.put("enabled_userlogonenabled_ratio", Math.round(100/count)-1);
+
+ } else {
+ prop.put("enabled", "0");
+ }
+
+
+ return prop;
+ }
+}
diff --git a/htroot/interaction_elements/Loginstatus_part.html b/htroot/interaction_elements/Loginstatus_part.html
new file mode 100644
index 000000000..2f01d93c9
--- /dev/null
+++ b/htroot/interaction_elements/Loginstatus_part.html
@@ -0,0 +1,10 @@
+#(enabled)#::
+
+#(logged-in)#
+
+::
+
+::
+
+#(/logged-in)#
+#(/enabled)#
\ No newline at end of file
diff --git a/htroot/interaction_elements/Loginstatus_part.java b/htroot/interaction_elements/Loginstatus_part.java
new file mode 100644
index 000000000..bc5290384
--- /dev/null
+++ b/htroot/interaction_elements/Loginstatus_part.java
@@ -0,0 +1,114 @@
+package interaction_elements;
+
+//ViewLog_p.java
+//-----------------------
+//part of the AnomicHTTPD caching proxy
+//(C) by Michael Peter Christen; mc@yacy.net
+//first published on http://www.anomic.de
+//Frankfurt, Germany, 2004
+//
+//This File is contributed by Alexander Schier
+//last major change: 14.12.2004
+//
+//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
+
+
+//You must compile this file with
+//javac -classpath .:../classes ViewLog_p.java
+//if the shell's current path is HTROOT
+
+import net.yacy.cora.protocol.HeaderFramework;
+import net.yacy.cora.protocol.RequestHeader;
+import net.yacy.search.Switchboard;
+import de.anomic.data.UserDB;
+import de.anomic.server.serverObjects;
+import de.anomic.server.serverSwitch;
+import de.anomic.server.servletProperties;
+
+public class Loginstatus_part {
+
+ public static serverObjects respond(final RequestHeader requestHeader, final serverObjects post, final serverSwitch env) {
+
+ final Switchboard sb = (Switchboard) env;
+
+ final servletProperties prop = new servletProperties();
+
+ prop.put("enabled", env.getConfigBool("interaction.userlogon.enabled", false) ? "1" : "0");
+
+ prop.put("enabled_color", env.getConfig("color_tableheader", ""));
+
+ prop.put("enabled_logged-in_registrationenabled", env.getConfigBool("interaction.userselfregistration.enabled", false) ? "1" : "0");
+
+//
+// final String address = sb.peers.mySeed().getPublicAddress();
+
+ prop.put("enabled_peer", sb.peers.myName());
+
+ prop.put("enabled_logged-in_returnto", "/index.html");
+
+
+ UserDB.Entry entry=null;
+
+ //default values
+ prop.put("enabled_logged_in", "0");
+ prop.put("enabled_logged-in_limit", "0");
+ prop.put("enabled_logged-in_username", "anonymous");
+ prop.put("enabled_status", "0");
+ //identified via HTTPPassword
+ entry=sb.userDB.proxyAuth((requestHeader.get(RequestHeader.AUTHORIZATION, "xxxxxx")));
+ if(entry != null){
+ prop.put("enabled_logged-in_identified-by", "1");
+ //try via cookie
+ }else{
+ entry=sb.userDB.cookieAuth(requestHeader.getHeaderCookies());
+ prop.put("enabled_logged-in_identified-by", "2");
+ //try via ip
+ if(entry == null){
+ entry=sb.userDB.ipAuth((requestHeader.get(HeaderFramework.CONNECTION_PROP_CLIENTIP, "xxxxxx")));
+ if(entry != null){
+ prop.put("enabled_logged-in_identified-by", "0");
+ }
+ }
+ }
+
+ //identified via userDB
+ if(entry != null){
+ prop.put("enabled_logged-in", "1");
+ prop.put("enabled_logged-in_username", entry.getUserName());
+ if(entry.getTimeLimit() > 0){
+ prop.put("enabled_logged-in_limit", "1");
+ final long limit=entry.getTimeLimit();
+ final long used=entry.getTimeUsed();
+ prop.put("enabled_logged-in_limit_timelimit", limit);
+ prop.put("enabled_logged-in_limit_timeused", used);
+ int percent=0;
+ if(limit!=0 && used != 0)
+ percent=(int)((float)used/(float)limit*100);
+ prop.put("enabled_logged-in_limit_percent", percent/3);
+ prop.put("enabled_logged-in_limit_percent2", (100-percent)/3);
+ }
+ //logged in via static Password
+ }else if(sb.verifyAuthentication(requestHeader)){
+ prop.put("enabled_logged-in", "2");
+ prop.put("enabled_logged-in_username", "staticadmin");
+ //identified via form-login
+ //TODO: this does not work for a static admin, yet.
+ }
+
+ // return rewrite properties
+ return prop;
+
+ }
+}
diff --git a/htroot/interaction_elements/OverlayInteraction.html b/htroot/interaction_elements/OverlayInteraction.html
index 602c9b32b..22605cc94 100644
--- a/htroot/interaction_elements/OverlayInteraction.html
+++ b/htroot/interaction_elements/OverlayInteraction.html
@@ -9,7 +9,7 @@ font-size: 10px;
position: fixed;
right: 0;
background: #ffffff;
-border:1px solid #5a346e;
+border:1px solid #[color]#;
width: 210px;
height: auto;
@@ -17,7 +17,7 @@ padding: 30px 110px 30px 30px;
z-index:99998;
-color: #5a346e;
+color: #[color]#;
}
.sci_right {
@@ -36,31 +36,11 @@ padding: 5px 5px 5px 5px;
z-index:99998;
-color: #5a346e;
+color: #[color]#;
}
-.sci_hide {
-
-font: arial,helvetica,sans-serif;
-font-size: 10px;
-position: fixed;
-right: 0px;
-top: 0;
-background: #ffffff;
-border:0px;
-
-width: 100px;
-height: 20px;
-padding: 5px 5px 5px 5px;
-
-z-index:99998;
-
-color: #5a346e;
-
-}
-
.sci_left {
font: arial,helvetica,sans-serif;
@@ -136,7 +116,7 @@ height: 2px;
background: #ffffff;
border:0px;
-background: #5a346e;
+background: #[color]#;
padding: 0px 0px 0px 0px;
diff --git a/htroot/interaction_elements/OverlayInteraction.java b/htroot/interaction_elements/OverlayInteraction.java
index 21af427df..1a1bcc2a6 100644
--- a/htroot/interaction_elements/OverlayInteraction.java
+++ b/htroot/interaction_elements/OverlayInteraction.java
@@ -17,6 +17,8 @@ public class OverlayInteraction {
prop.put("enabled_urlhash", post.get("urlhash", ""));
prop.put("enabled_action", post.get("action", ""));
+
+ prop.put("enabled_color", env.getConfig("color_tableheader", ""));
return prop;
}
diff --git a/htroot/interaction_elements/login_admin.png b/htroot/interaction_elements/login_admin.png
new file mode 100644
index 000000000..f54109ae9
Binary files /dev/null and b/htroot/interaction_elements/login_admin.png differ
diff --git a/htroot/interaction_elements/login_empty.png b/htroot/interaction_elements/login_empty.png
new file mode 100644
index 000000000..bcaaeb4f3
Binary files /dev/null and b/htroot/interaction_elements/login_empty.png differ
diff --git a/htroot/interaction_elements/login_user.png b/htroot/interaction_elements/login_user.png
new file mode 100644
index 000000000..770e29c4e
Binary files /dev/null and b/htroot/interaction_elements/login_user.png differ
diff --git a/htroot/yacysearch.html b/htroot/yacysearch.html
index ff1bd2532..24a7db77a 100644
--- a/htroot/yacysearch.html
+++ b/htroot/yacysearch.html
@@ -252,5 +252,7 @@ window.setTimeout('latestinfo();',8000);
window.setTimeout('latestinfo();',10000);
+
+