-
-/**
- * Friendica people autocomplete legacy code
- *
- * 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];
- }
-
- var w = $(elm).width();
- var h = $(elm).height();
-
- var style = $(elm).offset();
- style.top = style.top + h;
- style.width = w;
- style.position = 'absolute';
- style.display = 'none';
-
- this.cont = $('<div class="acpopup-mce"></div>');
- 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 = "<img src='{0}' height='16px' width='16px'>{1} ({2})".format(this.photo, this.name, this.nick);
- 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 = $('<div class="acpopupitem" title="' + value + '">' + label + '</div>');
- elm.click(function(e){
- t = $(this).attr('title').replace(new RegExp(' \- .*'), '');
- 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();
- });
- $(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
- var 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
- var 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();
- }
-}
-