From ed6ada0da571ac88b039a162601ac172c3680710 Mon Sep 17 00:00:00 2001 From: rabuzarus <> Date: Fri, 15 Apr 2016 02:25:58 +0200 Subject: [PATCH] rework autocomplete: use minified version + delete old fk.autocomplete.js --- js/fk.autocomplete.js | 203 ---------------------- util/minifyjs.sh | 1 - view/templates/head.tpl | 2 +- view/theme/frost-mobile/templates/end.tpl | 2 +- view/theme/frost/templates/end.tpl | 2 +- 5 files changed, 3 insertions(+), 207 deletions(-) delete mode 100644 js/fk.autocomplete.js diff --git a/js/fk.autocomplete.js b/js/fk.autocomplete.js deleted file mode 100644 index d7c81276bb..0000000000 --- a/js/fk.autocomplete.js +++ /dev/null @@ -1,203 +0,0 @@ -/** - * Friendica people autocomplete - * - * require jQuery, jquery.textareas - */ - - - -function ACPopup(elm,backend_url){ - this.idsel=-1; - this.element = elm; - this.searchText=""; - this.ready=true; - this.kp_timer = false; - this.url = backend_url; - - this.conversation_id = null; - var conv_id = this.element.id.match(/\d+$/); - if (conv_id) this.conversation_id = conv_id[0]; - console.log("ACPopup elm id",this.element.id,"conversation",this.conversation_id); - - var w = 530; - var h = 130; - - - if(tinyMCE.activeEditor == null) { - style = $(elm).offset(); - w = $(elm).width(); - h = $(elm).height(); - } - else { - // I can't find an "official" way to get the element who get all - // this fraking thing that is tinyMCE. - // This code will broke again at some point... - var container = $(tinyMCE.activeEditor.getContainer()).find("table"); - style = $(container).offset(); - w = $(container).width(); - h = $(container).height(); - } - - style.top=style.top+h; - style.width = w; - style.position = 'absolute'; - /* style['max-height'] = '150px'; - style.border = '1px solid red'; - style.background = '#cccccc'; - - style.overflow = 'auto'; - style['z-index'] = '100000'; - */ - style.display = 'none'; - - this.cont = $("
"); - this.cont.css(style); - - $("body").append(this.cont); -} -ACPopup.prototype.close = function(){ - $(this.cont).remove(); - this.ready=false; -} -ACPopup.prototype.search = function(text){ - var that = this; - this.searchText=text; - if (this.kp_timer) clearTimeout(this.kp_timer); - this.kp_timer = setTimeout( function(){that._search();}, 500); -} -ACPopup.prototype._search = function(){ - console.log("_search"); - var that = this; - var postdata = { - start:0, - count:100, - search:this.searchText, - type:'c', - conversation: this.conversation_id, - } - - $.ajax({ - type:'POST', - url: this.url, - data: postdata, - dataType: 'json', - success:function(data){ - that.cont.html(""); - if (data.tot>0){ - that.cont.show(); - $(data.items).each(function(){ - var html = " {1} ({2})".format(this.photo, this.name, this.addr); - var nick = this.nick.replace(' ',''); - if (this.id!=='') nick += '+' + this.id; - that.add(html, nick + ' - ' + this.link); - }); - } else { - that.cont.hide(); - } - } - }); - -} -ACPopup.prototype.add = function(label, value){ - var that=this; - var elm = $("
"+label+"
"); - elm.click(function(e){ - t = $(this).attr('title').replace(new RegExp(' \- .*'),''); - if(typeof(that.element.container) === "undefined") { - el=$(that.element); - sel = el.getSelection(); - sel.start = sel.start- that.searchText.length; - el.setSelection(sel.start,sel.end).replaceSelectedText(t+' ').collapseSelection(false); - that.close(); - } - else { - txt = tinyMCE.activeEditor.getContent(); - // alert(that.searchText + ':' + t); - newtxt = txt.replace('@' + that.searchText,'@' + t +' '); - tinyMCE.activeEditor.setContent(newtxt); - tinyMCE.activeEditor.focus(); - that.close(); - } - }); - $(this.cont).append(elm); -} -ACPopup.prototype.onkey = function(event){ - if (event.keyCode == '13') { - if(this.idsel>-1) { - this.cont.children()[this.idsel].click(); - event.preventDefault(); - } - else - this.close(); - } - if (event.keyCode == '38') { //cursor up - cmax = this.cont.children().size()-1; - this.idsel--; - if (this.idsel<0) this.idsel=cmax; - event.preventDefault(); - } - if (event.keyCode == '40' || event.keyCode == '9') { //cursor down - cmax = this.cont.children().size()-1; - this.idsel++; - if (this.idsel>cmax) this.idsel=0; - event.preventDefault(); - } - - if (event.keyCode == '38' || event.keyCode == '40' || event.keyCode == '9') { - this.cont.children().removeClass('selected'); - $(this.cont.children()[this.idsel]).addClass('selected'); - } - - if (event.keyCode == '27') { //ESC - this.close(); - } -} - -function ContactAutocomplete(element,backend_url){ - this.pattern=/@([^ \n]+)$/; - this.popup=null; - var that = this; - - $(element).unbind('keydown'); - $(element).unbind('keyup'); - - $(element).keydown(function(event){ - if (that.popup!==null) that.popup.onkey(event); - }); - - $(element).keyup(function(event){ - cpos = $(this).getSelection(); - if (cpos.start==cpos.end){ - match = $(this).val().substring(0,cpos.start).match(that.pattern); - if (match!==null){ - if (that.popup===null){ - that.popup = new ACPopup(this, backend_url); - } - if (that.popup.ready && match[1]!==that.popup.searchText) that.popup.search(match[1]); - if (!that.popup.ready) that.popup=null; - - } else { - if (that.popup!==null) {that.popup.close(); that.popup=null;} - } - - - } - }); - -} - - -/** - * jQuery plugin 'contact_autocomplete' - */ -(function( $ ){ - $.fn.contact_autocomplete = function(backend_url) { - this.each(function(){ - new ContactAutocomplete(this, backend_url); - }); - }; -})( jQuery ); - - - - diff --git a/util/minifyjs.sh b/util/minifyjs.sh index 63d312f74a..b7ed2d8c86 100755 --- a/util/minifyjs.sh +++ b/util/minifyjs.sh @@ -8,7 +8,6 @@ JSFILES=( "js/acl.js" "js/ajaxupload.js" "js/country.js" - "js/fk.autocomplete.js" "js/jquery.htmlstream.js" "js/main.js" "js/webtoolkit.base64.js" diff --git a/view/templates/head.tpl b/view/templates/head.tpl index 31555aae2b..412323f329 100644 --- a/view/templates/head.tpl +++ b/view/templates/head.tpl @@ -33,7 +33,7 @@ - + diff --git a/view/theme/frost-mobile/templates/end.tpl b/view/theme/frost-mobile/templates/end.tpl index c1acbfb2a6..04416ad00e 100644 --- a/view/theme/frost-mobile/templates/end.tpl +++ b/view/theme/frost-mobile/templates/end.tpl @@ -7,7 +7,7 @@ - + diff --git a/view/theme/frost/templates/end.tpl b/view/theme/frost/templates/end.tpl index e864a9498d..991ae7564b 100644 --- a/view/theme/frost/templates/end.tpl +++ b/view/theme/frost/templates/end.tpl @@ -19,7 +19,7 @@ - +