hashtag autocomplete
This commit is contained in:
parent
a454aad124
commit
48b1042347
29
Zotlabs/Module/Hashtags.php
Normal file
29
Zotlabs/Module/Hashtags.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Zotlabs\Module;
|
||||||
|
|
||||||
|
|
||||||
|
class Hashtags extends \Zotlabs\Web\Controller {
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
$result = [];
|
||||||
|
|
||||||
|
logger(print_r($_REQUEST,true));
|
||||||
|
|
||||||
|
$t = escape_tags($_REQUEST['t']);
|
||||||
|
if(! $t)
|
||||||
|
json_return_and_die($result);
|
||||||
|
|
||||||
|
$r = q("select distinct(term) from term where term like '%s' and ttype = %d order by term",
|
||||||
|
dbesc($t . '%'),
|
||||||
|
intval(TERM_HASHTAG)
|
||||||
|
);
|
||||||
|
if($r) {
|
||||||
|
foreach($r as $rv) {
|
||||||
|
$result[] = [ 'text' => strtolower($rv['term']) ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger(print_r($result,true));
|
||||||
|
json_return_and_die($result);
|
||||||
|
}
|
||||||
|
}
|
@ -74,6 +74,10 @@ function bbco_format(item) {
|
|||||||
return "<div class='dropdown-item'>" + item + "</div>";
|
return "<div class='dropdown-item'>" + item + "</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function tag_format(item) {
|
||||||
|
return "<div class='dropdown-item'>" + '#' + item.text + "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
function editor_replace(item) {
|
function editor_replace(item) {
|
||||||
if(typeof item.replace !== 'undefined') {
|
if(typeof item.replace !== 'undefined') {
|
||||||
return '$1$2' + item.replace;
|
return '$1$2' + item.replace;
|
||||||
@ -202,6 +206,16 @@ function string2bb(element) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Autocomplete hashtags
|
||||||
|
tags = {
|
||||||
|
match: /(^|\s)(\#)([^ \n]{2,})$/,
|
||||||
|
index: 3,
|
||||||
|
search: function(term, callback) { $.getJSON('/hashtags/' + '$f=&t=' + term).done(function(data) { callback($.map(data, function(entry) { return entry.text.indexOf(term) === 0 ? entry : null; })); }); },
|
||||||
|
replace: function(item) { return "$1$2" + item.text + ' '; },
|
||||||
|
template: tag_format
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
smilies = {
|
smilies = {
|
||||||
match: /(^|\s)(:[a-z_:]{2,})$/,
|
match: /(^|\s)(:[a-z_:]{2,})$/,
|
||||||
index: 2,
|
index: 2,
|
||||||
@ -211,7 +225,7 @@ function string2bb(element) {
|
|||||||
template: smiley_format
|
template: smiley_format
|
||||||
};
|
};
|
||||||
this.attr('autocomplete','off');
|
this.attr('autocomplete','off');
|
||||||
this.textcomplete([contacts,forums,smilies], {className:'acpopup', zIndex:1020});
|
this.textcomplete([contacts,forums,smilies,tags], {className:'acpopup', zIndex:1020});
|
||||||
};
|
};
|
||||||
})( jQuery );
|
})( jQuery );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user