diff --git a/defaults/yacy.init b/defaults/yacy.init index 7a1f7bbf4..9fbeddec3 100644 --- a/defaults/yacy.init +++ b/defaults/yacy.init @@ -941,3 +941,18 @@ about.body = heuristic.site = 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 \ No newline at end of file diff --git a/htroot/ConfigAppearance_p.html b/htroot/ConfigAppearance_p.html index abe1b4a29..af0b9b941 100644 --- a/htroot/ConfigAppearance_p.html +++ b/htroot/ConfigAppearance_p.html @@ -2,11 +2,31 @@ YaCy '#[clientname]#': Appearance and Integration + #%env/templates/metas.template%# #%env/templates/header.template%# #%env/templates/submenuCustomization.template%# + + + +

Appearance and Integration

You can change the appearance of the YaCy interface with skins. @@ -15,11 +35,10 @@ change the appearance of the search page here.

-

Skin Selection

-

- Select one of the default skins, download new skins, or create your own skin. -

+
+ Skin Selection +

Select one of the default skins, download new skins, or create your own skin.

:
#[currentskin]# 
@@ -30,6 +49,7 @@ #{/skinlist}# +
@@ -40,12 +60,48 @@
+ Skin Color Definition +

The generic skin 'generic_pd' can be configured here with custom colors:

+
+
+
Background
+
Text
+
Legend
+
Table Header
+
Table Item
+
Table Item 2
+
Table Bottom
+
+
+ + +
+
+
+
+
Border Line
+
Sign 'bad'
+
Sign 'good'
+
Sign 'other'
+
Search Headline
+
Search URL
+
Search URL + hover
+
+
+
+
+ +
+
+ Skin Download +

Skins can be installed from download locations:

:
+

Make sure that you only download data from trustworthy sources. The new Skin file @@ -53,6 +109,7 @@

+ #(status)# ::

Unable to get URL: #[url]#

::

Error saving the skin.

diff --git a/htroot/ConfigAppearance_p.java b/htroot/ConfigAppearance_p.java index 6793f9f3f..97e288f51 100644 --- a/htroot/ConfigAppearance_p.java +++ b/htroot/ConfigAppearance_p.java @@ -36,6 +36,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; +import java.util.Map; import net.yacy.cora.document.MultiProtocolURI; import net.yacy.cora.protocol.RequestHeader; @@ -89,8 +90,8 @@ public class ConfigAppearance_p { final File skinfile = new File(skinPath, selectedSkin); FileUtils.deletedelete(skinfile); } - } + if (post.containsKey("install_button")) { // load skin from URL final String url = post.get("url"); @@ -120,7 +121,15 @@ public class ConfigAppearance_p { 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 entry: post.entrySet()) { + if (entry.getKey().startsWith("color_")) env.setConfig(entry.getKey(), "#" + entry.getValue()); + } + } } // reread skins @@ -136,6 +145,14 @@ public class ConfigAppearance_p { } prop.put("skinlist", count); prop.putHTML("currentskin", env.getConfig("currentSkin", "default")); + + // write colors from generic skin + Iterator 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; } diff --git a/htroot/env/style.java b/htroot/env/style.java new file mode 100644 index 000000000..fa2129fad --- /dev/null +++ b/htroot/env/style.java @@ -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 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; + } + +} diff --git a/htroot/env/templates/header.template b/htroot/env/templates/header.template index cac55eaa6..aa554261c 100644 --- a/htroot/env/templates/header.template +++ b/htroot/env/templates/header.template @@ -29,13 +29,12 @@

- + -

diff --git a/htroot/js/yacyinteractive.js b/htroot/js/yacyinteractive.js index bc274fbd3..a7771a41f 100644 --- a/htroot/js/yacyinteractive.js +++ b/htroot/js/yacyinteractive.js @@ -12,7 +12,7 @@ function search(query) { else if (window.ActiveXObject) { // IE 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.onreadystatechange = function() { if (self.xmlHttpReq.readyState == 4) { diff --git a/htroot/yacy/ui/colorpicker_images/Thumbs.db b/htroot/yacy/ui/colorpicker_images/Thumbs.db new file mode 100755 index 000000000..d396c36dd Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/Thumbs.db differ diff --git a/htroot/yacy/ui/colorpicker_images/blank.gif b/htroot/yacy/ui/colorpicker_images/blank.gif new file mode 100755 index 000000000..75b945d25 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/blank.gif differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_background.png b/htroot/yacy/ui/colorpicker_images/colorpicker_background.png new file mode 100755 index 000000000..8401572f1 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_background.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_hex.png b/htroot/yacy/ui/colorpicker_images/colorpicker_hex.png new file mode 100755 index 000000000..4e532d7c6 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_hex.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_b.png b/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_b.png new file mode 100755 index 000000000..dfac595d0 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_b.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_h.png b/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_h.png new file mode 100755 index 000000000..3977ed9f2 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_h.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_s.png b/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_s.png new file mode 100755 index 000000000..a2a699736 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_hsb_s.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_indic.gif b/htroot/yacy/ui/colorpicker_images/colorpicker_indic.gif new file mode 100755 index 000000000..f9fa95e28 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_indic.gif differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_overlay.png b/htroot/yacy/ui/colorpicker_images/colorpicker_overlay.png new file mode 100755 index 000000000..561cdd9c5 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_overlay.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_b.png b/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_b.png new file mode 100755 index 000000000..dfac595d0 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_b.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_g.png b/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_g.png new file mode 100755 index 000000000..72b32760a Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_g.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_r.png b/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_r.png new file mode 100755 index 000000000..4855fe03f Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_rgb_r.png differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_select.gif b/htroot/yacy/ui/colorpicker_images/colorpicker_select.gif new file mode 100755 index 000000000..599f7f13a Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_select.gif differ diff --git a/htroot/yacy/ui/colorpicker_images/colorpicker_submit.png b/htroot/yacy/ui/colorpicker_images/colorpicker_submit.png new file mode 100755 index 000000000..7f4c0825f Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/colorpicker_submit.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_background.png b/htroot/yacy/ui/colorpicker_images/custom_background.png new file mode 100755 index 000000000..cf55ffdd6 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_background.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_hex.png b/htroot/yacy/ui/colorpicker_images/custom_hex.png new file mode 100755 index 000000000..888f44449 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_hex.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_hsb_b.png b/htroot/yacy/ui/colorpicker_images/custom_hsb_b.png new file mode 100755 index 000000000..2f99dae8e Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_hsb_b.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_hsb_h.png b/htroot/yacy/ui/colorpicker_images/custom_hsb_h.png new file mode 100755 index 000000000..a217e9218 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_hsb_h.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_hsb_s.png b/htroot/yacy/ui/colorpicker_images/custom_hsb_s.png new file mode 100755 index 000000000..7826b4150 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_hsb_s.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_indic.gif b/htroot/yacy/ui/colorpicker_images/custom_indic.gif new file mode 100755 index 000000000..222fb94cf Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_indic.gif differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_rgb_b.png b/htroot/yacy/ui/colorpicker_images/custom_rgb_b.png new file mode 100755 index 000000000..80764e5d6 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_rgb_b.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_rgb_g.png b/htroot/yacy/ui/colorpicker_images/custom_rgb_g.png new file mode 100755 index 000000000..fc9778be1 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_rgb_g.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_rgb_r.png b/htroot/yacy/ui/colorpicker_images/custom_rgb_r.png new file mode 100755 index 000000000..91b0cd4c5 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_rgb_r.png differ diff --git a/htroot/yacy/ui/colorpicker_images/custom_submit.png b/htroot/yacy/ui/colorpicker_images/custom_submit.png new file mode 100755 index 000000000..cd202cd93 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/custom_submit.png differ diff --git a/htroot/yacy/ui/colorpicker_images/select.png b/htroot/yacy/ui/colorpicker_images/select.png new file mode 100755 index 000000000..21213bfd5 Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/select.png differ diff --git a/htroot/yacy/ui/colorpicker_images/select2.png b/htroot/yacy/ui/colorpicker_images/select2.png new file mode 100755 index 000000000..2cd2cabeb Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/select2.png differ diff --git a/htroot/yacy/ui/colorpicker_images/slider.png b/htroot/yacy/ui/colorpicker_images/slider.png new file mode 100755 index 000000000..8b03da96e Binary files /dev/null and b/htroot/yacy/ui/colorpicker_images/slider.png differ diff --git a/htroot/yacy/ui/css/colorpicker.css b/htroot/yacy/ui/css/colorpicker.css new file mode 100755 index 000000000..07aac5376 --- /dev/null +++ b/htroot/yacy/ui/css/colorpicker.css @@ -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; +} diff --git a/htroot/yacy/ui/js/jquery.colorpicker.js b/htroot/yacy/ui/js/jquery.colorpicker.js new file mode 100644 index 000000000..0c86bddbd --- /dev/null +++ b/htroot/yacy/ui/js/jquery.colorpicker.js @@ -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 = '
', + 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 -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) diff --git a/htroot/yacysearch.java b/htroot/yacysearch.java index 5509dfe4e..e8d9cc26f 100644 --- a/htroot/yacysearch.java +++ b/htroot/yacysearch.java @@ -99,7 +99,7 @@ public class yacysearch { // get query String originalquerystring = (post == null) ? "" : post.get("query", post.get("search", "")).trim(); 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(); // get segment diff --git a/skins/generic_pd.css b/skins/generic_pd.css new file mode 100644 index 000000000..839c7aa00 --- /dev/null +++ b/skins/generic_pd.css @@ -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]#; +} diff --git a/source/de/anomic/crawler/CrawlProfile.java b/source/de/anomic/crawler/CrawlProfile.java index 28094c491..d54917559 100644 --- a/source/de/anomic/crawler/CrawlProfile.java +++ b/source/de/anomic/crawler/CrawlProfile.java @@ -322,7 +322,7 @@ public class CrawlProfile extends ConcurrentHashMap implements M if (name.equals("ifexist")) return IFEXIST; if (name.equals("cacheonly")) return CACHEONLY; 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; } public String toName() { diff --git a/source/de/anomic/http/server/HTTPDFileHandler.java b/source/de/anomic/http/server/HTTPDFileHandler.java index f149a1d17..a286233c2 100644 --- a/source/de/anomic/http/server/HTTPDFileHandler.java +++ b/source/de/anomic/http/server/HTTPDFileHandler.java @@ -750,6 +750,7 @@ public final class HTTPDFileHandler { path.endsWith("vcf") || path.endsWith("kml") || path.endsWith("gpx") || + path.endsWith("css") || path.endsWith("/") || path.equals("/robots.txt")) {