- added /yacy/ui/ywidget.html

- it can be used with all yacy search parameters?search=yacy;contentdom=text;count=40;offset=0

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4814 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
apfelmaennchen 17 years ago
parent 3aa69dab94
commit 1019fd91c0

@ -0,0 +1,162 @@
/**
* jQuery.query - Query String Modification and Creation for jQuery
* Written in 2007 by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
* Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
* Date: 2008/02/08
*
* @author Blair Mitchelmore
* @version 1.2.3
*
**/
new function(settings) {
// Various Settings
var $separator = settings.separator || '&';
var $spaces = settings.spaces === false ? false : true;
var $suffix = settings.suffix === false ? '' : '[]';
var $hash = settings.hash === true ? true : false;
var $prefix = settings.prefix === false ? false : true;
jQuery.query = new function() {
var queryObject = function(a) {
var self = this;
self.keys = {};
if (a.queryObject) {
jQuery.each(a.keys, function(key, val) {
self.destructiveSet(key, val);
});
} else {
jQuery.each(arguments, function() {
var q = "" + this;
q = q.replace(/^[?#]/,''); // remove any leading ? || #
q = q.replace(/[;&]$/,''); // remove any trailing & || ;
if ($spaces) q = q.replace(/[+]/g,' '); // replace +'s with spaces
jQuery.each(q.split(/[&;]/), function(){
var key = this.split('=')[0];
var val = this.split('=')[1];
var temp, hashKey = null, type = null;
if (!key) return;
if (/^-?[0-9]+\.[0-9]+$/.test(val)) // simple float regex
val = parseFloat(val);
else if (/^-?[0-9]+$/.test(val)) // simple int regex
val = parseInt(val, 10);
if (/\[([^\] ]+)\]$/.test(key)) // hash syntax
type = Object, hashkey = key.replace(/^.+\[([^\] ]+)\]$/,"$1"), key = key.replace(/\[([^\] ]+)\]$/,"");
else if (/\[\]$/.test(key)) // array syntax
type = Array, key = key.replace(/\[\]$/,"");
val = (!val && val !== 0) ? true : val;
if (!type && self.has(key))
type = Array, self.destructiveSet(key, self.has(key, Array) ? self.keys[key] : [self.keys[key]]);
if (val !== false && val !== true)
val = decodeURIComponent(val);
if (!type)
self.destructiveSet(key, val);
else
if (type == Object)
temp = self.keys[key] || {}, temp[hashkey] = val, self.destructiveSet(key, temp);
else if (type == Array)
temp = self.keys[key] || [], temp.push(val), self.destructiveSet(key, temp);
});
});
}
return self;
};
queryObject.prototype = {
queryObject: true,
has: function(key, type) {
var keys = this.keys;
return !!type ? keys[key] != undefined && keys[key] !== null && keys[key].constructor == type : keys[key] != undefined && keys[key] !== null;
},
get: function(key) {
var value = (key == undefined) ? this.keys : this.keys[key];
if (!value)
return '';
else if (value.constructor == Array)
return value.slice(0);
else if (value.constructor == Object)
return jQuery.extend({}, value);
else
return value;
},
destructiveSet: function(key, val) {
if (val == undefined || val === null)
this.destructiveRemove(key);
else
this.keys[key] = val;
return this;
},
set: function(key, val) {
return this.copy().destructiveSet(key, val);
},
destructiveRemove: function(key) {
if (typeof this.keys[key] != 'undefined')
delete this.keys[key];
return this;
},
remove: function(key) {
return this.copy().destructiveRemove(key);
},
destructiveEmpty: function() {
var self = this;
jQuery.each(self.keys, function(key, value) {
delete self.keys[key];
});
return self;
},
empty: function(destructive) {
return this.copy().destructiveEmpty();
},
copy: function() {
return new queryObject(this);
},
toString: function() {
var i = 0, queryString = [], self = this, addFields = function(o, key, value) {
o.push(key);
if (value !== true) {
o.push("=");
o.push(encodeURIComponent(value));
}
};
jQuery.each(this.keys, function(key, value) {
var o = [];
if (value !== false) {
if (i++ == 0)
o.push($prefix ? $hash ? "#" : "?" : "");
if (self.has(key, Object)) {
var _o = []
jQuery.each(value, function(_key, _value) {
var __o = [];
addFields(__o, key + "[" + _key + "]", _value);
_o.push(__o.join(""));
});
o.push(_o.join($separator));
} else if (self.has(key, Array)) {
var _o = []
jQuery.each(value, function(_key, _value) {
var __o = [];
addFields(__o, key + $suffix, _value);
_o.push(__o.join(""));
});
o.push(_o.join($separator));
} else {
addFields(o,key,value);
}
}
queryString.push(o.join(""));
});
return queryString.join($separator);
}
};
return new queryObject(location.search, location.hash);
};
}(jQuery.query || {}); // Pass in jQuery.query as settings object

@ -0,0 +1,11 @@
/**
* jQuery.ScrollTo - Easy element scrolling using jQuery.
* Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 2/19/2008
* @author Ariel Flesler
* @version 1.3.3
*
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
*/
;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

@ -0,0 +1,11 @@
/**
* jQuery[a] - Animated scrolling of series
* Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 3/20/2008
* @author Ariel Flesler
* @version 1.2.1
*
* http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
*/
;(function($){var a='serialScroll',b='.'+a,c='bind',C=$[a]=function(b){$.scrollTo.window()[a](b)};C.defaults={duration:1e3,axis:'x',event:'click',start:0,step:1,lock:1,cycle:1,constant:1};$.fn[a]=function(y){y=$.extend({},C.defaults,y);var z=y.event,A=y.step,B=y.lazy;return this.each(function(){var j=y.target?this:document,k=$(y.target||this,j),l=k[0],m=y.items,o=y.start,p=y.interval,q=y.navigation,r;if(!B)m=w();if(y.force)t({},o);$(y.prev||[],j)[c](z,-A,s);$(y.next||[],j)[c](z,A,s);if(!l.ssbound)k[c]('prev'+b,-A,s)[c]('next'+b,A,s)[c]('goto'+b,t);if(p)k[c]('start'+b,function(e){if(!p){v();p=1;u()}})[c]('stop'+b,function(){v();p=0});k[c]('notify'+b,function(e,a){var i=x(a);if(i>-1)o=i});l.ssbound=1;if(y.jump)(B?k:w())[c](z,function(e){t(e,x(e.target))});if(q)q=$(q,j)[c](z,function(e){e.data=Math.round(w().length/q.length)*q.index(this);t(e,this)});function s(e){e.data+=o;t(e,this)};function t(e,a){if(!isNaN(a)){e.data=a;a=l}var c=e.data,n,d=e.type,f=y.exclude?w().slice(0,-y.exclude):w(),g=f.length,h=f[c],i=y.duration;if(d)e.preventDefault();if(p){v();r=setTimeout(u,y.interval)}if(!h){n=c<0?0:n=g-1;if(o!=n)c=n;else if(!y.cycle)return;else c=g-n-1;h=f[c]}if(!h||d&&o==c||y.lock&&k.is(':animated')||d&&y.onBefore&&y.onBefore.call(a,e,h,k,w(),c)===!1)return;if(y.stop)k.queue('fx',[]).stop();if(y.constant)i=Math.abs(i/A*(o-c));k.scrollTo(h,i,y).trigger('notify'+b,[c])};function u(){k.trigger('next'+b)};function v(){clearTimeout(r)};function w(){return $(m,l)};function x(a){if(!isNaN(a))return a;var b=w(),i;while((i=b.index(a))==-1&&a!=l)a=a.parentNode;return i}})}})(jQuery);

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link media="screen" type="text/css" href="css/base.css" rel="stylesheet" />
<title>YaCy Widget</title>
<style type="text/css">
.ywidget {
font-family: Helvetica,Arial,sans-serif;
width: 250px;
}
.ywidget div {
background-color: white;
margin-bottom : 10px;
border: none;
margin: 0px;
padding: 10px;
border: 1px solid black;
text-decoration: none;
font-size: 11px;
height: 200px;
overflow:hidden;
}
.ywidget h3 {
display:block;
padding:5px 15px;
margin-top: 0;
margin-bottom: 0px;
background: url(img/box250.png) no-repeat;
border-top: 1px solid #FFFFFF;
border-bottom: 1px solid #999;
}
.ywidget h3 a {
cursor:pointer;
text-decoration: none;
font-weight: bold;
font-size: 14px;
color: black;
height: 50px;
overflow:hidden;
}
.ywidget p.desc {
font-style:italic;
font-size: 0.9em;
color: #808080;
line-height: 1.0em;
margin-bottom:-0.5em;
}
.ywidget h4 {
margin:2px;
margin-bottom: -0.6em;
font-size: 1.0em;
line-height: 0.5em
text-decoration: none;
}
.ywidget h4 a {
color:#239AFF;
text-decoration: none;
}
.ywidget p.date {
font-size: 0.9em;
line-height: 1.0em;
margin-bottom:0.8em;
color:#20A020;
}
</style>
<script src="js/jquery-1.2.3.min.js" type="text/javascript"></script>
<script src="js/jquery.jfeed.js" type="text/javascript""></script>
<script src="js/jquery.scrollTo-min.js" type="text/javascript""></script>
<script src="js/jquery.serialScroll-min.js" type="text/javascript""></script>
<script src="js/jquery.query-1.2.3.js" type="text/javascript""></script>
<script type="text/javascript">
jQuery(function() {
jQuery.getFeed({
url: '/yacysearch.rss' + $.query.toString(),
success: function(feed) {
jQuery('#result').prepend('<h3>'
+ '<a href="'
+ feed.link
+ '">'
+ feed.title
+ '</a>'
+ '</h3>');
var html = '';
for(var i = 0; i < feed.items.length && i < 5; i++) {
var item = feed.items[i];
html += '<h4>'
+ '<a href="'
+ item.link
+ '">'
+ item.title
+ '</a>'
+ '</h4>';
html += '<p class="desc">'
+ item.description
html += '</p><p class="date">'
+ item.updated
+ '</p>';
}
jQuery('#items').append(html);
}
});
$('#items').serialScroll({
items:'h4',
duration:700,
force:true,
axis:'y',
lazy:true,
interval:5000,
step:1
});
});
</script>
</head>
<body>
<div id="result" class="ywidget">
<div id="items"></div>
</div>
</body>
</html>
Loading…
Cancel
Save