From 7647d87743e49e1c775040271cf5c9f60cd25eb4 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 00:13:41 +0100 Subject: Made a jquery function of dw_qsearch --- lib/scripts/qsearch.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index e5cc73b49..fa8bc237d 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -6,10 +6,13 @@ * @author Adrian Lang * @author Michal Rezler */ +jQuery.fn.dw_qsearch = function(overrides) { -var dw_qsearch = { + var dw_qsearch = { - $inObj: null, + output_id: '#qsearch__out', + + $inObj: this, $outObj: null, timer: null, curRequest: null, @@ -19,14 +22,11 @@ var dw_qsearch = { * * Attaches the event handlers * - * @param input element (jQuery selector/DOM obj) - * @param output element (jQuery selector/DOM obj) */ - init: function (input, output) { + init: function () { var do_qsearch; - dw_qsearch.$inObj = jQuery(input); - dw_qsearch.$outObj = jQuery(output); + dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); // objects found? if (dw_qsearch.$inObj.length === 0 || @@ -163,8 +163,21 @@ var dw_qsearch = { // reenable overflow dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow','ellipsis'); } + + + }; + + jQuery.extend(dw_qsearch, overrides); + + if (!overrides.deferInit) { + dw_qsearch.init(); + } + + return dw_qsearch; }; jQuery(function () { - dw_qsearch.init('#qsearch__in','#qsearch__out'); + jQuery('#qsearch__in').dw_qsearch({ + output_id: '#qsearch__out' + }); }); -- cgit v1.2.3 From f9328d30809630f0fe49373facd9f8e1d47f38ba Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 00:15:23 +0100 Subject: Reformat qsearch.js --- lib/scripts/qsearch.js | 282 +++++++++++++++++++++++++------------------------ 1 file changed, 145 insertions(+), 137 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index fa8bc237d..a68d5f323 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -6,163 +6,171 @@ * @author Adrian Lang * @author Michal Rezler */ -jQuery.fn.dw_qsearch = function(overrides) { +jQuery.fn.dw_qsearch = function (overrides) { var dw_qsearch = { output_id: '#qsearch__out', - $inObj: this, - $outObj: null, - timer: null, - curRequest: null, - - /** - * initialize the quick search - * - * Attaches the event handlers - * - */ - init: function () { - var do_qsearch; - - dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); - - // objects found? - if (dw_qsearch.$inObj.length === 0 || - dw_qsearch.$outObj.length === 0) { - return; - } - - // attach eventhandler to search field - do_qsearch = function () { - // 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(); + $inObj: this, + $outObj: null, + timer: null, + curRequest: null, + + /** + * initialize the quick search + * + * Attaches the event handlers + * + */ + init: function () { + var do_qsearch; + + dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); + + // objects found? + if (dw_qsearch.$inObj.length === 0 || + dw_qsearch.$outObj.length === 0) { return; } - dw_qsearch.curRequest = jQuery.post( - DOKU_BASE + 'lib/exe/ajax.php', - { - call: 'qsearch', - q: encodeURI(value) - }, - dw_qsearch.onCompletion, - 'html' - ); - }; - dw_qsearch.$inObj.keyup( - function() { - if(dw_qsearch.timer){ - window.clearTimeout(dw_qsearch.timer); - dw_qsearch.timer = null; + // attach eventhandler to search field + do_qsearch = function () { + // abort any previous request + if (dw_qsearch.curRequest != null) { + dw_qsearch.curRequest.abort(); } - dw_qsearch.timer = window.setTimeout(do_qsearch, 500); - } - ); - - // attach eventhandler to output field - dw_qsearch.$outObj.click(dw_qsearch.clear_results); - }, - - /** - * Empty and hide the output div - */ - clear_results: function(){ - dw_qsearch.$outObj.hide(); - dw_qsearch.$outObj.text(''); - }, - - /** - * Callback. Reformat and display the results. - * - * Namespaces are shortened here to keep the results from overflowing - * or wrapping - * - * @param data The result HTML - */ - onCompletion: function(data) { - var max, $links, too_big; - - dw_qsearch.curRequest = null; - - if (data === '') { - dw_qsearch.clear_results(); - return; - } - - dw_qsearch.$outObj - .html(data) - .show() - .css('white-space', 'nowrap'); - - // disable overflow during shortening - dw_qsearch.$outObj.find('li').css('overflow', 'visible'); - - $links = dw_qsearch.$outObj.find('a'); - 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; + var value = dw_qsearch.$inObj.val(); + if (value === '') { + dw_qsearch.clear_results(); + return; + } + dw_qsearch.curRequest = jQuery.post( + DOKU_BASE + 'lib/exe/ajax.php', + { + call: 'qsearch', + q: encodeURI(value) + }, + dw_qsearch.onCompletion, + 'html' + ); + }; + + dw_qsearch.$inObj.keyup( + function () { + if (dw_qsearch.timer) { + window.clearTimeout(dw_qsearch.timer); + dw_qsearch.timer = null; + } + dw_qsearch.timer = window.setTimeout(do_qsearch, 500); + } + ); - if (!too_big(this)) { + // attach eventhandler to output field + dw_qsearch.$outObj.click(dw_qsearch.clear_results); + }, + + /** + * Empty and hide the output div + */ + clear_results: function () { + dw_qsearch.$outObj.hide(); + dw_qsearch.$outObj.text(''); + }, + + /** + * Callback. Reformat and display the results. + * + * Namespaces are shortened here to keep the results from overflowing + * or wrapping + * + * @param data The result HTML + */ + onCompletion: function (data) { + var max, $links, too_big; + + dw_qsearch.curRequest = null; + + if (data === '') { + dw_qsearch.clear_results(); 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 }); + dw_qsearch.$outObj + .html(data) + .show() + .css('white-space', 'nowrap'); + + // disable overflow during shortening + dw_qsearch.$outObj.find('li').css('overflow', 'visible'); + + $links = dw_qsearch.$outObj.find('a'); + 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; + }; } - nsL = this.innerText.indexOf('('); - nsR = this.innerText.indexOf(')'); - eli = 0; - runaway = 0; - - while((nsR - nsL > 3) && too_big(this) && runaway++ < 500) { - if(eli !== 0){ - // elipsis already inserted - if( (eli - nsL) > (nsR - eli) ){ - // cut left - start = eli - 2; - length = 2; - }else{ - // cut right - start = eli + 1; - length = 1; - } - replace = ''; - }else{ - // replace middle with ellipsis - start = Math.floor( nsL + ((nsR-nsL)/2) ); - length = 1; - replace = '…'; + $links.each(function () { + var start, length, replace, nsL, nsR, eli, runaway; + + if (!too_big(this)) { + 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 + }); } - this.innerText = substr_replace(this.innerText, - replace, start, length); - eli = this.innerText.indexOf('…'); nsL = this.innerText.indexOf('('); nsR = this.innerText.indexOf(')'); - } - }); + eli = 0; + runaway = 0; + + while ((nsR - nsL > 3) && too_big(this) && runaway++ < 500) { + if (eli !== 0) { + // elipsis already inserted + if ((eli - nsL) > (nsR - eli)) { + // cut left + start = eli - 2; + length = 2; + } else { + // cut right + start = eli + 1; + length = 1; + } + replace = ''; + } else { + // replace middle with ellipsis + start = Math.floor(nsL + ((nsR - nsL) / 2)); + length = 1; + replace = '…'; + } + this.innerText = substr_replace(this.innerText, + replace, start, length); - // reenable overflow - dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow','ellipsis'); - } + eli = this.innerText.indexOf('…'); + nsL = this.innerText.indexOf('('); + nsR = this.innerText.indexOf(')'); + } + }); + + // reenable overflow + dw_qsearch.$outObj.find('li').css('overflow', 'hidden').css('text-overflow', 'ellipsis'); + } }; -- cgit v1.2.3 From ceb99d9541015ec69a997e127a3cbb8b81798aa5 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 01:30:44 +0100 Subject: move getSearchterm to overrideable method --- lib/scripts/qsearch.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index a68d5f323..f783cfd01 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -40,7 +40,7 @@ jQuery.fn.dw_qsearch = function (overrides) { if (dw_qsearch.curRequest != null) { dw_qsearch.curRequest.abort(); } - var value = dw_qsearch.$inObj.val(); + var value = dw_qsearch.getSearchterm(); if (value === '') { dw_qsearch.clear_results(); return; @@ -70,6 +70,13 @@ jQuery.fn.dw_qsearch = function (overrides) { dw_qsearch.$outObj.click(dw_qsearch.clear_results); }, + /** + * Read search term from input + */ + getSearchterm: function() { + return dw_qsearch.$inObj.val(); + }, + /** * Empty and hide the output div */ -- cgit v1.2.3 From 5b82acf8318410c81848ddc7f6c0dc201a735626 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Fri, 17 Jan 2014 14:46:26 +0100 Subject: Use more general name for qsearch output --- lib/scripts/qsearch.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/qsearch.js b/lib/scripts/qsearch.js index f783cfd01..95c632e45 100644 --- a/lib/scripts/qsearch.js +++ b/lib/scripts/qsearch.js @@ -10,7 +10,7 @@ jQuery.fn.dw_qsearch = function (overrides) { var dw_qsearch = { - output_id: '#qsearch__out', + output: '#qsearch__out', $inObj: this, $outObj: null, @@ -26,7 +26,7 @@ jQuery.fn.dw_qsearch = function (overrides) { init: function () { var do_qsearch; - dw_qsearch.$outObj = jQuery(dw_qsearch.output_id); + dw_qsearch.$outObj = jQuery(dw_qsearch.output); // objects found? if (dw_qsearch.$inObj.length === 0 || @@ -193,6 +193,6 @@ jQuery.fn.dw_qsearch = function (overrides) { jQuery(function () { jQuery('#qsearch__in').dw_qsearch({ - output_id: '#qsearch__out' + output: '#qsearch__out' }); }); -- cgit v1.2.3 From 8af71b8cc80c9e5a62803443c04acd24ba725e42 Mon Sep 17 00:00:00 2001 From: Szymon Olewniczak Date: Fri, 7 Feb 2014 17:59:24 +0100 Subject: add preventDefault to toolbar buttons --- lib/scripts/edit.js | 11 +++++++---- lib/scripts/toolbar.js | 8 +++++--- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 56c185db7..2400103e1 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -134,7 +134,10 @@ function pickerInsert(text,edid){ */ function addBtnActionSignature($btn, props, edid) { if(typeof SIG != 'undefined' && SIG != ''){ - $btn.bind('click', bind(insertAtCarret,edid,SIG)); + $btn.bind('click', function (e) { + insertAtCarret(edid,SIG); + e.preventDefault(); + }); return edid; } return ''; @@ -148,7 +151,7 @@ function addBtnActionSignature($btn, props, edid) { function currentHeadlineLevel(textboxId){ var field = jQuery('#' + textboxId)[0], s = false, - opts = [field.value.substr(0,DWgetSelection(field).start)]; + opts = [field.value.substr(0,getSelection(field).start)]; if (field.form.prefix) { // we need to look in prefix context opts.push(field.form.prefix.value); @@ -217,10 +220,10 @@ jQuery(function () { } // set focus and place cursor at the start - var sel = DWgetSelection($edit_text[0]); + var sel = getSelection($edit_text[0]); sel.start = 0; sel.end = 0; - DWsetSelection(sel); + setSelection(sel); $edit_text.focus(); } diff --git a/lib/scripts/toolbar.js b/lib/scripts/toolbar.js index 09c374bc4..47f5c0df7 100644 --- a/lib/scripts/toolbar.js +++ b/lib/scripts/toolbar.js @@ -101,7 +101,7 @@ function tb_format(btn, props, edid) { function tb_formatln(btn, props, edid) { var sample = props.sample || props.title, opts, - selection = DWgetSelection(jQuery('#'+edid)[0]); + selection = getSelection(jQuery('#'+edid)[0]); sample = fixtxt(sample); props.open = fixtxt(props.open); @@ -199,8 +199,9 @@ function addBtnActionPicker($btn, props, edid) { jQuery(picker).attr('aria-hidden', 'true'); $btn.click( - function() { + function(e) { pickerToggle(pickerid,$btn); + e.preventDefault(); return ''; } ); @@ -219,9 +220,10 @@ function addBtnActionPicker($btn, props, edid) { */ function addBtnActionLinkwiz($btn, props, edid) { dw_linkwiz.init(jQuery('#'+edid)); - jQuery($btn).click(function(){ + jQuery($btn).click(function(e){ dw_linkwiz.val = props; dw_linkwiz.toggle(); + e.preventDefault(); return ''; }); return 'link__wiz'; -- cgit v1.2.3 From 79fb388be6474bbcc2c2306bf229aca6d97bcd2a Mon Sep 17 00:00:00 2001 From: Szymon Olewniczak Date: Fri, 7 Feb 2014 18:06:23 +0100 Subject: megre changes --- lib/scripts/edit.js | 6 +++--- lib/scripts/toolbar.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 2400103e1..76e6d124b 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -151,7 +151,7 @@ function addBtnActionSignature($btn, props, edid) { function currentHeadlineLevel(textboxId){ var field = jQuery('#' + textboxId)[0], s = false, - opts = [field.value.substr(0,getSelection(field).start)]; + opts = [field.value.substr(0,DWgetSelection(field).start)]; if (field.form.prefix) { // we need to look in prefix context opts.push(field.form.prefix.value); @@ -220,10 +220,10 @@ jQuery(function () { } // set focus and place cursor at the start - var sel = getSelection($edit_text[0]); + var sel = DWgetSelection($edit_text[0]); sel.start = 0; sel.end = 0; - setSelection(sel); + DWsetSelection(sel); $edit_text.focus(); } diff --git a/lib/scripts/toolbar.js b/lib/scripts/toolbar.js index 47f5c0df7..cb478fdb1 100644 --- a/lib/scripts/toolbar.js +++ b/lib/scripts/toolbar.js @@ -101,7 +101,7 @@ function tb_format(btn, props, edid) { function tb_formatln(btn, props, edid) { var sample = props.sample || props.title, opts, - selection = getSelection(jQuery('#'+edid)[0]); + selection = DWgetSelection(jQuery('#'+edid)[0]); sample = fixtxt(sample); props.open = fixtxt(props.open); -- cgit v1.2.3 From 0931b30cccfd534a64df4da966e67e0175948849 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 13 Feb 2014 20:21:34 +0100 Subject: adjusted IE detection for smblinks MSIE 11 tries hard to break any previous working browser detection even through feature checks. This resolves to browser sniffing (MSIE for old IE, Trident for IE11+) See https://forum.dokuwiki.org/thread/10824 --- lib/scripts/behaviour.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/scripts') diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js index 85ddf503e..6b46add07 100644 --- a/lib/scripts/behaviour.js +++ b/lib/scripts/behaviour.js @@ -109,7 +109,7 @@ var dw_behaviour = { * @author Michael Klier */ checkWindowsShares: function() { - if(!LANG.nosmblinks || typeof(document.all) !== 'undefined') { + if(!LANG.nosmblinks || navigator.userAgent.match(/(Trident|MSIE)/)) { // No warning requested or none necessary return; } -- cgit v1.2.3 From 133181ec79ac75661d1f79d5f4f256fed821f72d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 14 Feb 2014 10:34:55 +0100 Subject: fixed whitespace errors introduced in #535 --- lib/scripts/edit.js | 6 +++--- lib/scripts/toolbar.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 76e6d124b..c07b8f975 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -135,9 +135,9 @@ function pickerInsert(text,edid){ function addBtnActionSignature($btn, props, edid) { if(typeof SIG != 'undefined' && SIG != ''){ $btn.bind('click', function (e) { - insertAtCarret(edid,SIG); - e.preventDefault(); - }); + insertAtCarret(edid,SIG); + e.preventDefault(); + }); return edid; } return ''; diff --git a/lib/scripts/toolbar.js b/lib/scripts/toolbar.js index cb478fdb1..1bb02b406 100644 --- a/lib/scripts/toolbar.js +++ b/lib/scripts/toolbar.js @@ -201,7 +201,7 @@ function addBtnActionPicker($btn, props, edid) { $btn.click( function(e) { pickerToggle(pickerid,$btn); - e.preventDefault(); + e.preventDefault(); return ''; } ); @@ -223,7 +223,7 @@ function addBtnActionLinkwiz($btn, props, edid) { jQuery($btn).click(function(e){ dw_linkwiz.val = props; dw_linkwiz.toggle(); - e.preventDefault(); + e.preventDefault(); return ''; }); return 'link__wiz'; -- cgit v1.2.3