1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-27 17:24:12 +00:00
Pablo Hoffman 729499910e moved dev.scrapy.org/htdocs to static.scrapy.org
--HG--
rename : sites/dev.scrapy.org/htdocs/asc.png => sites/static.scrapy.org/asc.png
rename : sites/dev.scrapy.org/htdocs/attachment.png => sites/static.scrapy.org/attachment.png
rename : sites/dev.scrapy.org/htdocs/changeset.png => sites/static.scrapy.org/changeset.png
rename : sites/dev.scrapy.org/htdocs/closedticket.png => sites/static.scrapy.org/closedticket.png
rename : sites/dev.scrapy.org/htdocs/collapsed.png => sites/static.scrapy.org/collapsed.png
rename : sites/dev.scrapy.org/htdocs/css/about.css => sites/static.scrapy.org/css/about.css
rename : sites/dev.scrapy.org/htdocs/css/admin.css => sites/static.scrapy.org/css/admin.css
rename : sites/dev.scrapy.org/htdocs/css/browser.css => sites/static.scrapy.org/css/browser.css
rename : sites/dev.scrapy.org/htdocs/css/changeset.css => sites/static.scrapy.org/css/changeset.css
rename : sites/dev.scrapy.org/htdocs/css/code.css => sites/static.scrapy.org/css/code.css
rename : sites/dev.scrapy.org/htdocs/css/diff.css => sites/static.scrapy.org/css/diff.css
rename : sites/dev.scrapy.org/htdocs/css/prefs.css => sites/static.scrapy.org/css/prefs.css
rename : sites/dev.scrapy.org/htdocs/css/report.css => sites/static.scrapy.org/css/report.css
rename : sites/dev.scrapy.org/htdocs/css/roadmap.css => sites/static.scrapy.org/css/roadmap.css
rename : sites/dev.scrapy.org/htdocs/css/search.css => sites/static.scrapy.org/css/search.css
rename : sites/dev.scrapy.org/htdocs/css/ticket.css => sites/static.scrapy.org/css/ticket.css
rename : sites/dev.scrapy.org/htdocs/css/timeline.css => sites/static.scrapy.org/css/timeline.css
rename : sites/dev.scrapy.org/htdocs/css/trac-0.11rc2.css.diff => sites/static.scrapy.org/css/trac-0.11rc2.css.diff
rename : sites/dev.scrapy.org/htdocs/css/trac.css => sites/static.scrapy.org/css/trac.css
rename : sites/dev.scrapy.org/htdocs/css/wiki.css => sites/static.scrapy.org/css/wiki.css
rename : sites/dev.scrapy.org/htdocs/desc.png => sites/static.scrapy.org/desc.png
rename : sites/dev.scrapy.org/htdocs/dots.gif => sites/static.scrapy.org/dots.gif
rename : sites/dev.scrapy.org/htdocs/draft.png => sites/static.scrapy.org/draft.png
rename : sites/dev.scrapy.org/htdocs/edit_toolbar.png => sites/static.scrapy.org/edit_toolbar.png
rename : sites/dev.scrapy.org/htdocs/editedticket.png => sites/static.scrapy.org/editedticket.png
rename : sites/dev.scrapy.org/htdocs/envelope.png => sites/static.scrapy.org/envelope.png
rename : sites/dev.scrapy.org/htdocs/expanded.png => sites/static.scrapy.org/expanded.png
rename : sites/dev.scrapy.org/htdocs/expander_normal.png => sites/static.scrapy.org/expander_normal.png
rename : sites/dev.scrapy.org/htdocs/expander_normal_hover.png => sites/static.scrapy.org/expander_normal_hover.png
rename : sites/dev.scrapy.org/htdocs/expander_open.png => sites/static.scrapy.org/expander_open.png
rename : sites/dev.scrapy.org/htdocs/expander_open_hover.png => sites/static.scrapy.org/expander_open_hover.png
rename : sites/dev.scrapy.org/htdocs/extlink.gif => sites/static.scrapy.org/extlink.gif
rename : sites/dev.scrapy.org/htdocs/feed.png => sites/static.scrapy.org/feed.png
rename : sites/dev.scrapy.org/htdocs/file.png => sites/static.scrapy.org/file.png
rename : sites/dev.scrapy.org/htdocs/folder.png => sites/static.scrapy.org/folder.png
rename : sites/dev.scrapy.org/htdocs/guide/basic-workflow.png => sites/static.scrapy.org/guide/basic-workflow.png
rename : sites/dev.scrapy.org/htdocs/guide/original-workflow.png => sites/static.scrapy.org/guide/original-workflow.png
rename : sites/dev.scrapy.org/htdocs/ics.png => sites/static.scrapy.org/ics.png
rename : sites/dev.scrapy.org/htdocs/imggrid.png => sites/static.scrapy.org/imggrid.png
rename : sites/dev.scrapy.org/htdocs/js/blame.js => sites/static.scrapy.org/js/blame.js
rename : sites/dev.scrapy.org/htdocs/js/diff.js => sites/static.scrapy.org/js/diff.js
rename : sites/dev.scrapy.org/htdocs/js/expand_dir.js => sites/static.scrapy.org/js/expand_dir.js
rename : sites/dev.scrapy.org/htdocs/js/folding.js => sites/static.scrapy.org/js/folding.js
rename : sites/dev.scrapy.org/htdocs/js/ie_pre7_hacks.js => sites/static.scrapy.org/js/ie_pre7_hacks.js
rename : sites/dev.scrapy.org/htdocs/js/jquery.js => sites/static.scrapy.org/js/jquery.js
rename : sites/dev.scrapy.org/htdocs/js/keyboard_nav.js => sites/static.scrapy.org/js/keyboard_nav.js
rename : sites/dev.scrapy.org/htdocs/js/noconflict.js => sites/static.scrapy.org/js/noconflict.js
rename : sites/dev.scrapy.org/htdocs/js/query.js => sites/static.scrapy.org/js/query.js
rename : sites/dev.scrapy.org/htdocs/js/search.js => sites/static.scrapy.org/js/search.js
rename : sites/dev.scrapy.org/htdocs/js/suggest.js => sites/static.scrapy.org/js/suggest.js
rename : sites/dev.scrapy.org/htdocs/js/trac.js => sites/static.scrapy.org/js/trac.js
rename : sites/dev.scrapy.org/htdocs/js/wikitoolbar.js => sites/static.scrapy.org/js/wikitoolbar.js
rename : sites/dev.scrapy.org/htdocs/loading.gif => sites/static.scrapy.org/loading.gif
rename : sites/dev.scrapy.org/htdocs/lock-locked.png => sites/static.scrapy.org/lock-locked.png
rename : sites/dev.scrapy.org/htdocs/logo.jpg => sites/static.scrapy.org/logo.jpg
rename : sites/dev.scrapy.org/htdocs/main-bg.jpg => sites/static.scrapy.org/main-bg.jpg
rename : sites/dev.scrapy.org/htdocs/milestone.png => sites/static.scrapy.org/milestone.png
rename : sites/dev.scrapy.org/htdocs/newticket.png => sites/static.scrapy.org/newticket.png
rename : sites/dev.scrapy.org/htdocs/parent.png => sites/static.scrapy.org/parent.png
rename : sites/dev.scrapy.org/htdocs/python.png => sites/static.scrapy.org/python.png
rename : sites/dev.scrapy.org/htdocs/topbar_gradient.png => sites/static.scrapy.org/topbar_gradient.png
rename : sites/dev.scrapy.org/htdocs/topbar_gradient2.png => sites/static.scrapy.org/topbar_gradient2.png
rename : sites/dev.scrapy.org/htdocs/trac.ico => sites/static.scrapy.org/trac.ico
rename : sites/dev.scrapy.org/htdocs/trac_banner.png => sites/static.scrapy.org/trac_banner.png
rename : sites/dev.scrapy.org/htdocs/trac_logo_mini.png => sites/static.scrapy.org/trac_logo_mini.png
rename : sites/dev.scrapy.org/htdocs/vgradient.png => sites/static.scrapy.org/vgradient.png
rename : sites/dev.scrapy.org/htdocs/wiki.png => sites/static.scrapy.org/wiki.png
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%4023
2008-06-28 22:56:32 +00:00

145 lines
4.1 KiB
JavaScript

(function($){
/*
Text field auto-completion plugin for jQuery.
Based on http://www.dyve.net/jquery/?autocomplete by Dylan Verheul.
*/
$.suggest = function(input, url, paramName, minChars, delay) {
var input = $(input).addClass("suggest").attr("autocomplete", "off");
var timeout = null;
var prev = "";
var selectedIndex = -1;
var results = null;
input.keydown(function(e) {
switch(e.keyCode) {
case 27: // escape
hide();
break;
case 38: // up
case 40: // down
e.preventDefault();
if (results) {
var items = $("li", results);
if (!items) return;
var index = selectedIndex + (e.keyCode == 38 ? -1 : 1);
if (index >= 0 && index < items.length) {
move(index);
}
} else {
show();
}
break;
case 9: // tab
case 13: // return
case 39: // right
if (results) {
var li = $("li.selected", results);
if (li.length) {
select(li);
e.preventDefault();
}
}
break;
default:
if (timeout) clearTimeout(timeout);
timeout = setTimeout(show, delay);
break;
}
});
input.blur(function() {
if (timeout) clearTimeout(timeout);
timeout = setTimeout(hide, 200);
});
function hide() {
if (timeout) clearTimeout(timeout);
input.removeClass("loading");
if (results) {
results.fadeOut("fast").remove();
results = null;
}
$("iframe.iefix").remove();
selectedIndex = -1;
}
function move(index) {
if (!results) return;
items = $("li", results);
items.removeClass("selected");
$(items[index]).addClass("selected");
selectedIndex = index;
}
function select(li) {
if (!li) li = $("<li>");
else li = $(li);
var val = $.trim(li.text());
prev = val;
input.val(val);
hide();
selectedIndex = -1;
}
function show() {
var val = input.val();
if (val == prev) return;
prev = val;
if (val.length < minChars) { hide(); return; }
input.addClass("loading");
var params = {};
params[paramName] = val;
$.get(url, params, function(data) {
if (!data) { hide(); return; }
if (!results) {
var offset = input.offset();
results = $("<div>").addClass("suggestions").css({
position: "absolute",
minWidth: input.get(0).offsetWidth + "px",
top: (offset.top + input.get(0).offsetHeight) + "px",
left: offset.left + "px",
zIndex: 2
}).appendTo("body");
if ($.browser.msie) {
var iframe = $("<iframe style='display:none;position:absolute;" +
"filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);'" +
" class='iefix' src='javascript:false;' frameborder='0'" +
" scrolling='no'></iframe>").insertAfter(results);
setTimeout(function() {
var offset = getOffset(results);
iframe.css({
top: offset.top + "px",
right: (offset.left + results.get(0).offsetWidth) + "px",
bottom: (offset.top + results.get(0).offsetHeight) + "px",
left: offset.left + "px",
zIndex: 1
});
iframe.show();
}, 10);
}
}
results.html(data).fadeTo("fast", 0.92);
items = $("li", results);
items
.hover(function() { move(items.index(this)) },
function() { $(this).removeClass("selected") })
.click(function() { select(this); input.get(0).focus() });
move(0);
});
}
}
$.fn.suggest = function(url, paramName, minChars, delay) {
url = url || window.location.pathname;
paramName = paramName || 'q';
minChars = minChars || 1;
delay = delay || 400;
return this.each(function() {
new $.suggest(this, url, paramName, minChars, delay);
});
}
})(jQuery);