custom + generic skins:

- added a generic skin which is filled with actual color assignment using a servlet
- enabled css servlets
- added a generic color scheme in configuration file
- added configuration input in Customization/Appearance servlet
- added a jquery color picker widget
- placed color picked widget to input field of generic colour definition input fields

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7235 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 14 years ago
parent 41bf8ef9f9
commit 45b1ab3d07

@ -941,3 +941,18 @@ about.body =
heuristic.site = false heuristic.site = false
heuristic.scroogle = false heuristic.scroogle = false
# colours for generic design
color_background = #FFFFFF
color_text = #18294A
color_legend = #65AC2A
color_tableheader = #5090D0
color_tableitem = #DEE6F3
color_tableitem2 = #ECF1F8
color_tablebottom = #FFCCCC
color_borderline = #888888
color_signbad = #990000
color_signgood = #009900
color_signother = #000099
color_searchheadline = #2200CC
color_searchurl = #008000
color_searchurlhover = #008000

@ -2,11 +2,31 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<title>YaCy '#[clientname]#': Appearance and Integration</title> <title>YaCy '#[clientname]#': Appearance and Integration</title>
<link rel="stylesheet" media="screen" type="text/css" href="/yacy/ui/css/colorpicker.css" />
#%env/templates/metas.template%# #%env/templates/metas.template%#
</head> </head>
<body id="ConfigSkins"> <body id="ConfigSkins">
#%env/templates/header.template%# #%env/templates/header.template%#
#%env/templates/submenuCustomization.template%# #%env/templates/submenuCustomization.template%#
<script type="text/javascript" src="/yacy/ui/js/jquery.colorpicker.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#color_background, #color_text, #color_legend, #color_tableheader, #color_tableitem, #color_tableitem2, #color_tablebottom, #color_borderline, #color_signbad, #color_signgood, #color_signother, #color_searchheadline, #color_searchurl, #color_searchurlhover').ColorPicker({
onSubmit: function(hsb, hex, rgb, el) {
$(el).val(hex);
$(el).ColorPickerHide();
},
onBeforeShow: function () {
$(this).ColorPickerSetColor(this.value);
}
})
.bind('keyup', function(){
$(this).ColorPickerSetColor(this.value);
});
});
</script>
<h2>Appearance and Integration</h2> <h2>Appearance and Integration</h2>
<p> <p>
You can change the appearance of the YaCy interface with skins. You can change the appearance of the YaCy interface with skins.
@ -15,11 +35,10 @@
change the appearance of the search page here. change the appearance of the search page here.
</p> </p>
<h3>Skin Selection</h3> <form action="ConfigAppearance_p.html">
<p>
Select one of the default skins, download new skins, or create your own skin.
</p><form action="ConfigAppearance_p.html">
<fieldset> <fieldset>
<legend>Skin Selection</legend>
<p>Select one of the default skins, download new skins, or create your own skin.</p>
<dl> <dl>
<dt><label for="cur_skin">Current skin</label>:</dt> <dt><label for="cur_skin">Current skin</label>:</dt>
<dd id="cur_skin">#[currentskin]#&nbsp;</dd> <dd id="cur_skin">#[currentskin]#&nbsp;</dd>
@ -30,6 +49,7 @@
<option value="#[file]#">#[name]#</option>#{/skinlist}# <option value="#[file]#">#[name]#</option>#{/skinlist}#
</select> </select>
</dd> </dd>
<dt></dt>
<dd> <dd>
<input type="submit" name="use_button" value="Use" /> <input type="submit" name="use_button" value="Use" />
<input type="submit" name="delete_button" value="Delete" /> <input type="submit" name="delete_button" value="Delete" />
@ -40,12 +60,48 @@
<form action="ConfigAppearance_p.html"> <form action="ConfigAppearance_p.html">
<fieldset> <fieldset>
<legend>Skin Color Definition</legend>
<p>The generic skin 'generic_pd' can be configured here with custom colors:</p>
<table border="0"><tr><td width="420" valign="top">
<dl>
<dt>Background</dt><dd><input type="text" maxlength="6" size="6" id="color_background" name="color_background" value="#[color_background]#" /></dd>
<dt>Text</dt><dd><input type="text" maxlength="6" size="6" id="color_text" name="color_text" value="#[color_text]#" /></dd>
<dt>Legend</dt><dd><input type="text" maxlength="6" size="6" id="color_legend" name="color_legend" value="#[color_legend]#" /></dd>
<dt>Table&nbsp;Header</dt><dd><input type="text" maxlength="6" size="6" id="color_tableheader" name="color_tableheader" value="#[color_tableheader]#" /></dd>
<dt>Table&nbsp;Item</dt><dd><input type="text" maxlength="6" size="6" id="color_tableitem" name="color_tableitem" value="#[color_tableitem]#" /></dd>
<dt>Table&nbsp;Item&nbsp;2</dt><dd><input type="text" maxlength="6" size="6" id="color_tableitem2" name="color_tableitem2" value="#[color_tableitem2]#" /></dd>
<dt>Table&nbsp;Bottom</dt><dd><input type="text" maxlength="6" size="6" id="color_tablebottom" name="color_tablebottom" value="#[color_tablebottom]#" /></dd>
<dt></dt>
<dd>
<input type="hidden" name="skin" value="generic_pd.css" />
<input type="submit" name="set_colors" value="Set Colors" />
</dd>
</dl>
</td><td width="420" valign="top">
<dl>
<dt>Border&nbsp;Line</dt><dd><input type="text" maxlength="6" size="6" id="color_borderline" name="color_borderline" value="#[color_borderline]#" /></dd>
<dt>Sign&nbsp;'bad'</dt><dd><input type="text" maxlength="6" size="6" id="color_signbad" name="color_signbad" value="#[color_signbad]#" /></dd>
<dt>Sign&nbsp;'good'</dt><dd><input type="text" maxlength="6" size="6" id="color_signgood" name="color_signgood" value="#[color_signgood]#" /></dd>
<dt>Sign&nbsp;'other'</dt><dd><input type="text" maxlength="6" size="6" id="color_signother" name="color_signother" value="#[color_signother]#" /></dd>
<dt>Search&nbsp;Headline</dt><dd><input type="text" maxlength="6" size="6" id="color_searchheadline" name="color_searchheadline" value="#[color_searchheadline]#" /></dd>
<dt>Search&nbsp;URL</dt><dd><input type="text" maxlength="6" size="6" id="color_searchurl" name="color_searchurl" value="#[color_searchurl]#" /></dd>
<dt>Search&nbsp;URL&nbsp;+&nbsp;hover</dt><dd><input type="text" maxlength="6" size="6" id="color_searchurlhover" name="color_searchurlhover" value="#[color_searchurlhover]#" /></dd>
</dl>
</td></tr></table>
</fieldset>
</form>
<form action="ConfigAppearance_p.html">
<fieldset>
<legend>Skin Download</legend>
<p>Skins can be installed from download locations:</p>
<dl> <dl>
<dt><label for="url">Install new skin from URL</label>:</dt> <dt><label for="url">Install new skin from URL</label>:</dt>
<dd><input type="text" name="url" id="url" size="30" /></dd> <dd><input type="text" name="url" id="url" size="30" /></dd>
<dt><label for="use_url">Use this skin</label></dt> <dt><label for="use_url">Use this skin</label></dt>
<dd><input type="checkbox" name="use_skin" id="use_url" value="on" checked="checked" /></dd> <dd><input type="checkbox" name="use_skin" id="use_url" value="on" checked="checked" /></dd>
<dt></dt>
<dd><input type="submit" name="install_button" value="Install" /></dd> <dd><input type="submit" name="install_button" value="Install" /></dd>
</dl> </dl>
<p>Make sure that you only download data from trustworthy sources. The new Skin file <p>Make sure that you only download data from trustworthy sources. The new Skin file
@ -53,6 +109,7 @@
</fieldset> </fieldset>
</form> </form>
#(status)# #(status)#
::<p><strong>Unable to get URL: #[url]#</strong></p> ::<p><strong>Unable to get URL: #[url]#</strong></p>
::<p><strong>Error saving the skin.</strong></p> ::<p><strong>Error saving the skin.</strong></p>

@ -36,6 +36,7 @@ import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import net.yacy.cora.document.MultiProtocolURI; import net.yacy.cora.document.MultiProtocolURI;
import net.yacy.cora.protocol.RequestHeader; import net.yacy.cora.protocol.RequestHeader;
@ -89,8 +90,8 @@ public class ConfigAppearance_p {
final File skinfile = new File(skinPath, selectedSkin); final File skinfile = new File(skinPath, selectedSkin);
FileUtils.deletedelete(skinfile); FileUtils.deletedelete(skinfile);
} }
} }
if (post.containsKey("install_button")) { if (post.containsKey("install_button")) {
// load skin from URL // load skin from URL
final String url = post.get("url"); final String url = post.get("url");
@ -120,7 +121,15 @@ public class ConfigAppearance_p {
changeSkin(sb, skinPath, url.substring(url.lastIndexOf('/'), url.length())); changeSkin(sb, skinPath, url.substring(url.lastIndexOf('/'), url.length()));
} }
} }
if (post.containsKey("set_colors")) {
if (skinFiles.contains(selectedSkin)) {
changeSkin(sb, skinPath, selectedSkin);
}
for (Map.Entry<String, String> entry: post.entrySet()) {
if (entry.getKey().startsWith("color_")) env.setConfig(entry.getKey(), "#" + entry.getValue());
}
}
} }
// reread skins // reread skins
@ -136,6 +145,14 @@ public class ConfigAppearance_p {
} }
prop.put("skinlist", count); prop.put("skinlist", count);
prop.putHTML("currentskin", env.getConfig("currentSkin", "default")); prop.putHTML("currentskin", env.getConfig("currentSkin", "default"));
// write colors from generic skin
Iterator<String> i = env.configKeys();
String key;
while (i.hasNext()) {
key = i.next();
if (key.startsWith("color_")) prop.put(key, env.getConfig(key, "#000000").substring(1));
}
return prop; return prop;
} }

@ -0,0 +1,42 @@
// style.java
// -----------------------
// (C) 2010 by Michael Peter Christen; mc@yacy.net
// first published 10.10.2010 in Frankfurt, Germany on http://yacy.net
//
// 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
import java.util.Iterator;
import net.yacy.cora.protocol.RequestHeader;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
public class style {
public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
final serverObjects prop = new serverObjects();
Iterator<String> i = env.configKeys();
String key;
while (i.hasNext()) {
key = i.next();
if (key.startsWith("color_")) prop.put(key, env.getConfig(key, "#000000"));
}
// return rewrite properties
return prop;
}
}

@ -29,13 +29,12 @@
<div id="yacylivesearch"> <div id="yacylivesearch">
<form id="ysearch" method="get" accept-charset="UTF-8" action="yacysearch.html"><p> <form id="ysearch" method="get" accept-charset="UTF-8" action="yacysearch.html"><p>
<input name="query" id="yquery" class="fancy" type="text" size="20" maxlength="80" value=""/> <input name="query" id="yquery" class="fancy" type="text" size="20" maxlength="80" value=""/>
<input type="hidden" name="verify" value="ifexist" /> <input type="hidden" name="verify" value="cacheonly" />
<input type="hidden" name="maximumRecords" value="10" /> <input type="hidden" name="maximumRecords" value="10" />
<input type="hidden" name="resource" value="local" /> <input type="hidden" name="resource" value="local" />
<input type="hidden" name="urlmaskfilter" value=".*" /> <input type="hidden" name="urlmaskfilter" value=".*" />
<input type="hidden" name="prefermaskfilter" value="" /> <input type="hidden" name="prefermaskfilter" value="" />
<input type="hidden" name="former" value="" /> <input type="hidden" name="former" value="" />
<input type="hidden" name="display" value="2" />
<input type="hidden" name="nav" value="all" /></p> <input type="hidden" name="nav" value="all" /></p>
</form> </form>
</div> </div>

@ -12,7 +12,7 @@ function search(query) {
else if (window.ActiveXObject) { // IE else if (window.ActiveXObject) { // IE
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} }
self.xmlHttpReq.open('GET', "yacysearch.json?verify=false&resource=local&maximumRecords=30&nav=none&query=" + query, true); self.xmlHttpReq.open('GET', "yacysearch.json?verify=false&resource=local&maximumRecords=100&nav=none&query=" + query, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() { self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) { if (self.xmlHttpReq.readyState == 4) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

@ -0,0 +1,161 @@
.colorpicker {
width: 356px;
height: 176px;
overflow: hidden;
position: absolute;
background: url(../colorpicker_images/colorpicker_background.png);
font-family: Arial, Helvetica, sans-serif;
display: none;
}
.colorpicker_color {
width: 150px;
height: 150px;
left: 14px;
top: 13px;
position: absolute;
background: #f00;
overflow: hidden;
cursor: crosshair;
}
.colorpicker_color div {
position: absolute;
top: 0;
left: 0;
width: 150px;
height: 150px;
background: url(../colorpicker_images/colorpicker_overlay.png);
}
.colorpicker_color div div {
position: absolute;
top: 0;
left: 0;
width: 11px;
height: 11px;
overflow: hidden;
background: url(../colorpicker_images/colorpicker_select.gif);
margin: -5px 0 0 -5px;
}
.colorpicker_hue {
position: absolute;
top: 13px;
left: 171px;
width: 35px;
height: 150px;
cursor: n-resize;
}
.colorpicker_hue div {
position: absolute;
width: 35px;
height: 9px;
overflow: hidden;
background: url(../colorpicker_images/colorpicker_indic.gif) left top;
margin: -4px 0 0 0;
left: 0px;
}
.colorpicker_new_color {
position: absolute;
width: 60px;
height: 30px;
left: 213px;
top: 13px;
background: #f00;
}
.colorpicker_current_color {
position: absolute;
width: 60px;
height: 30px;
left: 283px;
top: 13px;
background: #f00;
}
.colorpicker input {
background-color: transparent;
border: 1px solid transparent;
position: absolute;
font-size: 10px;
font-family: Arial, Helvetica, sans-serif;
color: #898989;
top: 4px;
right: 11px;
text-align: right;
margin: 0;
padding: 0;
height: 11px;
}
.colorpicker_hex {
position: absolute;
width: 72px;
height: 22px;
background: url(../colorpicker_images/colorpicker_hex.png) top;
left: 212px;
top: 142px;
}
.colorpicker_hex input {
right: 6px;
}
.colorpicker_field {
height: 22px;
width: 62px;
background-position: top;
position: absolute;
}
.colorpicker_field span {
position: absolute;
width: 12px;
height: 22px;
overflow: hidden;
top: 0;
right: 0;
cursor: n-resize;
}
.colorpicker_rgb_r {
background-image: url(../colorpicker_images/colorpicker_rgb_r.png);
top: 52px;
left: 212px;
}
.colorpicker_rgb_g {
background-image: url(../colorpicker_images/colorpicker_rgb_g.png);
top: 82px;
left: 212px;
}
.colorpicker_rgb_b {
background-image: url(../colorpicker_images/colorpicker_rgb_b.png);
top: 112px;
left: 212px;
}
.colorpicker_hsb_h {
background-image: url(../colorpicker_images/colorpicker_hsb_h.png);
top: 52px;
left: 282px;
}
.colorpicker_hsb_s {
background-image: url(../colorpicker_images/colorpicker_hsb_s.png);
top: 82px;
left: 282px;
}
.colorpicker_hsb_b {
background-image: url(../colorpicker_images/colorpicker_hsb_b.png);
top: 112px;
left: 282px;
}
.colorpicker_submit {
position: absolute;
width: 22px;
height: 22px;
background: url(../colorpicker_images/colorpicker_submit.png) top;
left: 322px;
top: 142px;
overflow: hidden;
}
.colorpicker_focus {
background-position: center;
}
.colorpicker_hex.colorpicker_focus {
background-position: bottom;
}
.colorpicker_submit.colorpicker_focus {
background-position: bottom;
}
.colorpicker_slider {
background-position: bottom;
}

@ -0,0 +1,484 @@
/**
*
* Color picker
* Author: Stefan Petre www.eyecon.ro
*
* Dual licensed under the MIT and GPL licenses
*
*/
(function ($) {
var ColorPicker = function () {
var
ids = {},
inAction,
charMin = 65,
visible,
tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
defaults = {
eventName: 'click',
onShow: function () {},
onBeforeShow: function(){},
onHide: function () {},
onChange: function () {},
onSubmit: function () {},
color: 'ff0000',
livePreview: true,
flat: false
},
fillRGBFields = function (hsb, cal) {
var rgb = HSBToRGB(hsb);
$(cal).data('colorpicker').fields
.eq(1).val(rgb.r).end()
.eq(2).val(rgb.g).end()
.eq(3).val(rgb.b).end();
},
fillHSBFields = function (hsb, cal) {
$(cal).data('colorpicker').fields
.eq(4).val(hsb.h).end()
.eq(5).val(hsb.s).end()
.eq(6).val(hsb.b).end();
},
fillHexFields = function (hsb, cal) {
$(cal).data('colorpicker').fields
.eq(0).val(HSBToHex(hsb)).end();
},
setSelector = function (hsb, cal) {
$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
$(cal).data('colorpicker').selectorIndic.css({
left: parseInt(150 * hsb.s/100, 10),
top: parseInt(150 * (100-hsb.b)/100, 10)
});
},
setHue = function (hsb, cal) {
$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
},
setCurrentColor = function (hsb, cal) {
$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
},
setNewColor = function (hsb, cal) {
$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
},
keyDown = function (ev) {
var pressedKey = ev.charCode || ev.keyCode || -1;
if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
return false;
}
var cal = $(this).parent().parent();
if (cal.data('colorpicker').livePreview === true) {
change.apply(this);
}
},
change = function (ev) {
var cal = $(this).parent().parent(), col;
if (this.parentNode.className.indexOf('_hex') > 0) {
cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
} else if (this.parentNode.className.indexOf('_hsb') > 0) {
cal.data('colorpicker').color = col = fixHSB({
h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
});
} else {
cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
}));
}
if (ev) {
fillRGBFields(col, cal.get(0));
fillHexFields(col, cal.get(0));
fillHSBFields(col, cal.get(0));
}
setSelector(col, cal.get(0));
setHue(col, cal.get(0));
setNewColor(col, cal.get(0));
cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
},
blur = function (ev) {
var cal = $(this).parent().parent();
cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
},
focus = function () {
charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
$(this).parent().addClass('colorpicker_focus');
},
downIncrement = function (ev) {
var field = $(this).parent().find('input').focus();
var current = {
el: $(this).parent().addClass('colorpicker_slider'),
max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
y: ev.pageY,
field: field,
val: parseInt(field.val(), 10),
preview: $(this).parent().parent().data('colorpicker').livePreview
};
$(document).bind('mouseup', current, upIncrement);
$(document).bind('mousemove', current, moveIncrement);
},
moveIncrement = function (ev) {
ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
if (ev.data.preview) {
change.apply(ev.data.field.get(0), [true]);
}
return false;
},
upIncrement = function (ev) {
change.apply(ev.data.field.get(0), [true]);
ev.data.el.removeClass('colorpicker_slider').find('input').focus();
$(document).unbind('mouseup', upIncrement);
$(document).unbind('mousemove', moveIncrement);
return false;
},
downHue = function (ev) {
var current = {
cal: $(this).parent(),
y: $(this).offset().top
};
current.preview = current.cal.data('colorpicker').livePreview;
$(document).bind('mouseup', current, upHue);
$(document).bind('mousemove', current, moveHue);
},
moveHue = function (ev) {
change.apply(
ev.data.cal.data('colorpicker')
.fields
.eq(4)
.val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
.get(0),
[ev.data.preview]
);
return false;
},
upHue = function (ev) {
fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
$(document).unbind('mouseup', upHue);
$(document).unbind('mousemove', moveHue);
return false;
},
downSelector = function (ev) {
var current = {
cal: $(this).parent(),
pos: $(this).offset()
};
current.preview = current.cal.data('colorpicker').livePreview;
$(document).bind('mouseup', current, upSelector);
$(document).bind('mousemove', current, moveSelector);
},
moveSelector = function (ev) {
change.apply(
ev.data.cal.data('colorpicker')
.fields
.eq(6)
.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
.end()
.eq(5)
.val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
.get(0),
[ev.data.preview]
);
return false;
},
upSelector = function (ev) {
fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
$(document).unbind('mouseup', upSelector);
$(document).unbind('mousemove', moveSelector);
return false;
},
enterSubmit = function (ev) {
$(this).addClass('colorpicker_focus');
},
leaveSubmit = function (ev) {
$(this).removeClass('colorpicker_focus');
},
clickSubmit = function (ev) {
var cal = $(this).parent();
var col = cal.data('colorpicker').color;
cal.data('colorpicker').origColor = col;
setCurrentColor(col, cal.get(0));
cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
},
show = function (ev) {
var cal = $('#' + $(this).data('colorpickerId'));
cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
var pos = $(this).offset();
var viewPort = getViewport();
var top = pos.top + this.offsetHeight;
var left = pos.left;
if (top + 176 > viewPort.t + viewPort.h) {
top -= this.offsetHeight + 176;
}
if (left + 356 > viewPort.l + viewPort.w) {
left -= 356;
}
cal.css({left: left + 'px', top: top + 'px'});
if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
cal.show();
}
$(document).bind('mousedown', {cal: cal}, hide);
return false;
},
hide = function (ev) {
if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
ev.data.cal.hide();
}
$(document).unbind('mousedown', hide);
}
},
isChildOf = function(parentEl, el, container) {
if (parentEl == el) {
return true;
}
if (parentEl.contains) {
return parentEl.contains(el);
}
if ( parentEl.compareDocumentPosition ) {
return !!(parentEl.compareDocumentPosition(el) & 16);
}
var prEl = el.parentNode;
while(prEl && prEl != container) {
if (prEl == parentEl)
return true;
prEl = prEl.parentNode;
}
return false;
},
getViewport = function () {
var m = document.compatMode == 'CSS1Compat';
return {
l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
};
},
fixHSB = function (hsb) {
return {
h: Math.min(360, Math.max(0, hsb.h)),
s: Math.min(100, Math.max(0, hsb.s)),
b: Math.min(100, Math.max(0, hsb.b))
};
},
fixRGB = function (rgb) {
return {
r: Math.min(255, Math.max(0, rgb.r)),
g: Math.min(255, Math.max(0, rgb.g)),
b: Math.min(255, Math.max(0, rgb.b))
};
},
fixHex = function (hex) {
var len = 6 - hex.length;
if (len > 0) {
var o = [];
for (var i=0; i<len; i++) {
o.push('0');
}
o.push(hex);
hex = o.join('');
}
return hex;
},
HexToRGB = function (hex) {
var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
},
HexToHSB = function (hex) {
return RGBToHSB(HexToRGB(hex));
},
RGBToHSB = function (rgb) {
var hsb = {
h: 0,
s: 0,
b: 0
};
var min = Math.min(rgb.r, rgb.g, rgb.b);
var max = Math.max(rgb.r, rgb.g, rgb.b);
var delta = max - min;
hsb.b = max;
if (max != 0) {
}
hsb.s = max != 0 ? 255 * delta / max : 0;
if (hsb.s != 0) {
if (rgb.r == max) {
hsb.h = (rgb.g - rgb.b) / delta;
} else if (rgb.g == max) {
hsb.h = 2 + (rgb.b - rgb.r) / delta;
} else {
hsb.h = 4 + (rgb.r - rgb.g) / delta;
}
} else {
hsb.h = -1;
}
hsb.h *= 60;
if (hsb.h < 0) {
hsb.h += 360;
}
hsb.s *= 100/255;
hsb.b *= 100/255;
return hsb;
},
HSBToRGB = function (hsb) {
var rgb = {};
var h = Math.round(hsb.h);
var s = Math.round(hsb.s*255/100);
var v = Math.round(hsb.b*255/100);
if(s == 0) {
rgb.r = rgb.g = rgb.b = v;
} else {
var t1 = v;
var t2 = (255-s)*v/255;
var t3 = (t1-t2)*(h%60)/60;
if(h==360) h = 0;
if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
else {rgb.r=0; rgb.g=0; rgb.b=0}
}
return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
},
RGBToHex = function (rgb) {
var hex = [
rgb.r.toString(16),
rgb.g.toString(16),
rgb.b.toString(16)
];
$.each(hex, function (nr, val) {
if (val.length == 1) {
hex[nr] = '0' + val;
}
});
return hex.join('');
},
HSBToHex = function (hsb) {
return RGBToHex(HSBToRGB(hsb));
},
restoreOriginal = function () {
var cal = $(this).parent();
var col = cal.data('colorpicker').origColor;
cal.data('colorpicker').color = col;
fillRGBFields(col, cal.get(0));
fillHexFields(col, cal.get(0));
fillHSBFields(col, cal.get(0));
setSelector(col, cal.get(0));
setHue(col, cal.get(0));
setNewColor(col, cal.get(0));
};
return {
init: function (opt) {
opt = $.extend({}, defaults, opt||{});
if (typeof opt.color == 'string') {
opt.color = HexToHSB(opt.color);
} else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
opt.color = RGBToHSB(opt.color);
} else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
opt.color = fixHSB(opt.color);
} else {
return this;
}
return this.each(function () {
if (!$(this).data('colorpickerId')) {
var options = $.extend({}, opt);
options.origColor = opt.color;
var id = 'collorpicker_' + parseInt(Math.random() * 1000);
$(this).data('colorpickerId', id);
var cal = $(tpl).attr('id', id);
if (options.flat) {
cal.appendTo(this).show();
} else {
cal.appendTo(document.body);
}
options.fields = cal
.find('input')
.bind('keyup', keyDown)
.bind('change', change)
.bind('blur', blur)
.bind('focus', focus);
cal
.find('span').bind('mousedown', downIncrement).end()
.find('>div.colorpicker_current_color').bind('click', restoreOriginal);
options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
options.selectorIndic = options.selector.find('div div');
options.el = this;
options.hue = cal.find('div.colorpicker_hue div');
cal.find('div.colorpicker_hue').bind('mousedown', downHue);
options.newColor = cal.find('div.colorpicker_new_color');
options.currentColor = cal.find('div.colorpicker_current_color');
cal.data('colorpicker', options);
cal.find('div.colorpicker_submit')
.bind('mouseenter', enterSubmit)
.bind('mouseleave', leaveSubmit)
.bind('click', clickSubmit);
fillRGBFields(options.color, cal.get(0));
fillHSBFields(options.color, cal.get(0));
fillHexFields(options.color, cal.get(0));
setHue(options.color, cal.get(0));
setSelector(options.color, cal.get(0));
setCurrentColor(options.color, cal.get(0));
setNewColor(options.color, cal.get(0));
if (options.flat) {
cal.css({
position: 'relative',
display: 'block'
});
} else {
$(this).bind(options.eventName, show);
}
}
});
},
showPicker: function() {
return this.each( function () {
if ($(this).data('colorpickerId')) {
show.apply(this);
}
});
},
hidePicker: function() {
return this.each( function () {
if ($(this).data('colorpickerId')) {
$('#' + $(this).data('colorpickerId')).hide();
}
});
},
setColor: function(col) {
if (typeof col == 'string') {
col = HexToHSB(col);
} else if (col.r != undefined && col.g != undefined && col.b != undefined) {
col = RGBToHSB(col);
} else if (col.h != undefined && col.s != undefined && col.b != undefined) {
col = fixHSB(col);
} else {
return this;
}
return this.each(function(){
if ($(this).data('colorpickerId')) {
var cal = $('#' + $(this).data('colorpickerId'));
cal.data('colorpicker').color = col;
cal.data('colorpicker').origColor = col;
fillRGBFields(col, cal.get(0));
fillHSBFields(col, cal.get(0));
fillHexFields(col, cal.get(0));
setHue(col, cal.get(0));
setSelector(col, cal.get(0));
setCurrentColor(col, cal.get(0));
setNewColor(col, cal.get(0));
}
});
}
};
}();
$.fn.extend({
ColorPicker: ColorPicker.init,
ColorPickerHide: ColorPicker.hidePicker,
ColorPickerShow: ColorPicker.showPicker,
ColorPickerSetColor: ColorPicker.setColor
});
})(jQuery)

@ -99,7 +99,7 @@ public class yacysearch {
// get query // get query
String originalquerystring = (post == null) ? "" : post.get("query", post.get("search", "")).trim(); String originalquerystring = (post == null) ? "" : post.get("query", post.get("search", "")).trim();
String querystring = originalquerystring.replace('+', ' '); String querystring = originalquerystring.replace('+', ' ');
CrawlProfile.CacheStrategy snippetFetchStrategy = (post != null && post.get("verify", "false").equals("true")) ? CrawlProfile.CacheStrategy.IFFRESH : CrawlProfile.CacheStrategy.parse(post.get("verify", "cacheonly")); CrawlProfile.CacheStrategy snippetFetchStrategy = (post == null) ? null : CrawlProfile.CacheStrategy.parse(post.get("verify", "cacheonly"));
final serverObjects prop = new serverObjects(); final serverObjects prop = new serverObjects();
// get segment // get segment

@ -0,0 +1,323 @@
/* generic skin */
/*
The following colours must be defined:
#[color_background]#
#[color_text]#
#[color_legend]#
#[color_tableheader]#
#[color_tableitem]#
#[color_tableitem2]#
#[color_tablebottom]#
#[color_borderline]#
#[color_signbad]#
#[color_signgood]#
#[color_signother]#
#[color_searchheadline]#
#[color_searchurl]#
#[color_searchurlhover]#
*/
body {
background-color:#[color_background]#;
color:#[color_text]#;
}
a:link {
color:#[color_text]#;
background-color:transparent;
}
a:link:hover {
color: #[color_legend]#;
background-color:transparent;
}
/* Menu */
.menugroup h3 {
-webkit-border-top-left-radius: 5px;
-webkit-border-top-right-radius: 5px;
-khtml-border-top-left-radius: 5px;
-khtml-border-top-right-radius: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background-color: #[color_tableheader]#;
color:white;
}
.SubMenugroup h3, .SubMenu h3 {
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
background-color:#[color_tableheader]#;
color:white;
}
a.MenuItemLink, ul.SubMenu em {
background-color:#[color_tableitem]#;
color:#[color_text]#;
}
a:hover.MenuItemLink {
background-color:transparent;
color:#[color_text]#;
}
/* Head */
div.head h1 {
background-color:transparent;
text-align:left;
padding-left:70px;
color:#[color_text]#;
}
/* Tables */
table {
}
.TableHeader {
background-color: #[color_legend]#;
color:white;
}
.TableCellDark {
background-color: #[color_tableitem]#;
}
.TableCellLight {
background-color: #[color_tableitem2]#;
}
.TableCellSummary {
background-color: #[color_tablebottom]#;
border:1px solid #[color_borderline]#;
}
.TableCellActive {
background-color: #[color_tablebottom]#;
}
/* Blog and Wiki*/
.Post {
background-color:#[color_background]#;
}
.PostSubject {
background-color:#[color_background]#;
}
.PostSubject a {
color:#[color_text]#;
}
.PostInfo {
background-color:#[color_background]#;
}
/* Wiki */
.WikiTOCBox {
border: 1px solid #[color_borderline]#;
background-color: #[color_background]#;
}
a.unknown {
color:#[color_signbad]#;
}
a.known {
color:#[color_signgood]#;
}
a.extern {
color:#[color_signother]#;
}
/* in Bookmarks */
.bookmark {
border-bottom:1px #[color_borderline]# dashed;
}
a.bookmarkTitle {
color: #[color_tableheader]#;
}
a:hover.bookmarkTitle {
color: #[color_tableheader]#;
}
a.bookmarkTags {
color: #[color_searchheadline]#;
}
a:hover.bookmarkTags {
color: #[color_tableheader]#;
}
a.bookmarkAction {
color: #[color_borderline]#;
}
.Tags {
border-left: 2px solid #[color_text]#;
}
.diff { background-color: #[color_background]#; }
.diff .unchanged { color: #[color_signother]#; }
.diff .added { color: #[color_signgood]#; background-color: #[color_background]#; }
.diff .deleted { color: #[color_signbad]#; background-color: #[color_background]#; }
/* in Status.html */
.ProgressBar {
border: #[color_background]# solid 1px;
}
div.ProgressBarFill {
background-color:#[color_tableitem]#;
}
/* Copyright info */
.info {
border-top:1px solid gray;
}
div#api {
position:absolute;
top:3px;
right:20px;
z-index: 100;
}
div#yacylivesearch {
float:right;
margin-right: 90px;
margin-top: -24px;
}
/* Searchresults */
fieldset.maininput, fieldset.yacys {
background-color:#[color_tableitem]#;
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
form.search.small h2 {
border-bottom:1px solid #[color_borderline]#;
}
.searchresults {
/*border-top:1px #[color_borderline]# dashed;*/
}
.searchresults h4 a {
font-size:1.2em;
font-weight:normal;
text-decoration:underline;
color:#[color_searchheadline]#;
}
.searchresults h4 a:link:hover {
color:#[color_searchheadline]#;
}
.snippetLoaded strong {
color:black;
}
.searchresults .url a {
color:#[color_searchurl]#;
}
.searchresults .url a:link:hover {
color:#[color_searchurlhover]#;
}
/* other */
.settingsValue {
color:#[color_signother]#;
}
.Headline {
background-color: #[color_tableheader]#;
color: white;
}
.Heading {
background-color: #[color_tableheader]#;
}
.error, .warning {
color:red;
}
.success {
color:green;
}
.Message {
background-color: #[color_background]#;
}
.example {
background-color:#[color_signother]#;
}
.hides:hover .hoverShow { background-color: #[color_background]#; }
/* Log */
body#ViewLog pre {
background-color:white;
}
/* Forms */
fieldset {
background-color:#[color_tableitem]#;
color:#[color_text]#;
border:0px solid #[color_tableitem]#;
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
/* input, select, textarea, button {
color: black;
background-color: white;
} */
legend {
background-color:#[color_legend]#;
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
text-align:left;
color:white;
}
form dt, dl.pairs dt {
background-color:#[color_tableitem]#;
font-weight:bold;
}
form dd, dl.pairs dd {
background-color:#[color_tableitem]#;
}

@ -322,7 +322,7 @@ public class CrawlProfile extends ConcurrentHashMap<String, String> implements M
if (name.equals("ifexist")) return IFEXIST; if (name.equals("ifexist")) return IFEXIST;
if (name.equals("cacheonly")) return CACHEONLY; if (name.equals("cacheonly")) return CACHEONLY;
if (name.equals("true")) return IFFRESH; if (name.equals("true")) return IFFRESH;
if (name.equals("false")) return null; if (name.equals("false")) return null; // if this cache strategy is assigned as query attribute, null means "do not create a snippet"
return null; return null;
} }
public String toName() { public String toName() {

@ -750,6 +750,7 @@ public final class HTTPDFileHandler {
path.endsWith("vcf") || path.endsWith("vcf") ||
path.endsWith("kml") || path.endsWith("kml") ||
path.endsWith("gpx") || path.endsWith("gpx") ||
path.endsWith("css") ||
path.endsWith("/") || path.endsWith("/") ||
path.equals("/robots.txt")) { path.equals("/robots.txt")) {

Loading…
Cancel
Save