summaryrefslogtreecommitdiff
path: root/lib/scripts/qsearch.js
diff options
context:
space:
mode:
authorGuy Brand <gb@unistra.fr>2013-03-06 14:08:08 +0100
committerGuy Brand <gb@unistra.fr>2013-03-06 14:08:08 +0100
commit23678e344b4ddcad14254c106ecb93af174fdaa0 (patch)
treea5c787e4d87313a7fb6f18cb4c78bf210d92d60c /lib/scripts/qsearch.js
parent847cef0a6bfd2ff9dc54e1fc140f5ba0ece0017a (diff)
parent5721a1547938df76003c6d91ea003dc1c70abd94 (diff)
downloadrpg-23678e344b4ddcad14254c106ecb93af174fdaa0.tar.gz
rpg-23678e344b4ddcad14254c106ecb93af174fdaa0.tar.bz2
Merge branch 'master' into stable
Diffstat (limited to 'lib/scripts/qsearch.js')
-rw-r--r--lib/scripts/qsearch.js42
1 files changed, 33 insertions, 9 deletions
diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js
index a309f9e29..e5cc73b49 100644
--- a/lib/scripts/qsearch.js
+++ b/lib/scripts/qsearch.js
@@ -12,6 +12,7 @@ var dw_qsearch = {
$inObj: null,
$outObj: null,
timer: null,
+ curRequest: null,
/**
* initialize the quick search
@@ -35,12 +36,16 @@ var dw_qsearch = {
// attach eventhandler to search field
do_qsearch = function () {
- dw_qsearch.clear_results();
+ // abort any previous request
+ if (dw_qsearch.curRequest != null) {
+ dw_qsearch.curRequest.abort();
+ }
var value = dw_qsearch.$inObj.val();
if (value === '') {
+ dw_qsearch.clear_results();
return;
}
- jQuery.post(
+ dw_qsearch.curRequest = jQuery.post(
DOKU_BASE + 'lib/exe/ajax.php',
{
call: 'qsearch',
@@ -57,7 +62,6 @@ var dw_qsearch = {
window.clearTimeout(dw_qsearch.timer);
dw_qsearch.timer = null;
}
- dw_qsearch.clear_results();
dw_qsearch.timer = window.setTimeout(do_qsearch, 500);
}
);
@@ -85,19 +89,30 @@ var dw_qsearch = {
onCompletion: function(data) {
var max, $links, too_big;
- if (data === '') { return; }
+ dw_qsearch.curRequest = null;
+
+ if (data === '') {
+ dw_qsearch.clear_results();
+ return;
+ }
dw_qsearch.$outObj
.html(data)
.show()
.css('white-space', 'nowrap');
- // shorten namespaces if too long
- max = dw_qsearch.$outObj[0].clientWidth;
+ // disable overflow during shortening
+ dw_qsearch.$outObj.find('li').css('overflow', 'visible');
+
$links = dw_qsearch.$outObj.find('a');
- too_big = (document.documentElement.dir === 'rtl')
- ? function (l) { return l.offsetLeft < 0; }
- : function (l) { return l.offsetWidth + l.offsetLeft > max; };
+ max = dw_qsearch.$outObj[0].clientWidth; // maximum width allowed (but take away paddings below)
+ if(document.documentElement.dir === 'rtl'){
+ max -= parseInt(dw_qsearch.$outObj.css('padding-left'));
+ too_big = function (l) { return l.offsetLeft < 0; };
+ }else{
+ max -= parseInt(dw_qsearch.$outObj.css('padding-right'));
+ too_big = function (l) { return l.offsetWidth + l.offsetLeft > max; };
+ }
$links.each(function () {
var start, length, replace, nsL, nsR, eli, runaway;
@@ -106,6 +121,12 @@ var dw_qsearch = {
return;
}
+ // make IE's innerText available to W3C conform browsers
+ if(this.textContent){
+ this.__defineGetter__('innerText', function(){ return this.textContent });
+ this.__defineSetter__('innerText', function(val){ this.textContent = val });
+ }
+
nsL = this.innerText.indexOf('(');
nsR = this.innerText.indexOf(')');
eli = 0;
@@ -138,6 +159,9 @@ var dw_qsearch = {
nsR = this.innerText.indexOf(')');
}
});
+
+ // reenable overflow
+ dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow','ellipsis');
}
};