Merge branch 'remove-extra-space' into develop
This commit is contained in:
commit
bbb4b1eb60
147
js/qvitter.js
147
js/qvitter.js
|
@ -3381,121 +3381,66 @@ $('body').on('keyup', 'div.queet-box-syntax', function(e) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// check for user mentions
|
|
||||||
window.lastMention = new Object();
|
window.lastMention = new Object();
|
||||||
$('body').on('keyup', 'div.queet-box-syntax', function(e) {
|
// check for user mentions
|
||||||
|
$('body').on('keyup', 'div.queet-box-syntax', function(e) { checkMentions(e, true);});
|
||||||
var queetBox = $(this);
|
|
||||||
var cursorPosArray = getSelectionInElement(queetBox[0]);
|
|
||||||
var cursorPos = cursorPosArray[0];
|
|
||||||
|
|
||||||
// add space before linebreaks (to separate mentions in beginning of new lines when .text():ing later)
|
|
||||||
if(e.keyCode == '13') {
|
|
||||||
e.preventDefault();
|
|
||||||
var range = createRangeFromCharacterIndices(queetBox[0], cursorPos, cursorPos);
|
|
||||||
range.insertNode(document.createTextNode(" \n"));
|
|
||||||
}
|
|
||||||
else if(e.keyCode != '40' && e.keyCode != '38' && e.keyCode != '13' && e.keyCode != '9') {
|
|
||||||
var contents = queetBox.text().substring(0,cursorPos);
|
|
||||||
var mentionPos = contents.lastIndexOf('@');
|
|
||||||
var check_contents = contents.substring(mentionPos - 1, cursorPos);
|
|
||||||
var regex = /(^|\s|\.|\n)(@)[a-zA-Z0-9]+/;
|
|
||||||
var match = check_contents.match(regex);
|
|
||||||
if (contents.indexOf('@') >= 0 && match) {
|
|
||||||
|
|
||||||
if(contents.lastIndexOf('@') > 1) {
|
|
||||||
match[0] = match[0].substring(1,match[0].length);
|
|
||||||
}
|
|
||||||
if((contents.lastIndexOf('@')+match[0].length) == cursorPos) {
|
|
||||||
|
|
||||||
queetBox.siblings('.mentions-suggestions').children('.user-suggestion').remove();
|
|
||||||
queetBox.siblings('.mentions-suggestions').css('top',(queetBox.height()+20) + 'px');
|
|
||||||
var term = match[0].substring(match[0].lastIndexOf('@')+1, match[0].length).toLowerCase();
|
|
||||||
window.lastMention.mentionPos = mentionPos;
|
|
||||||
window.lastMention.cursorPos = cursorPos;
|
|
||||||
|
|
||||||
|
|
||||||
// see if anyone we're following matches
|
|
||||||
var suggestionsToShow = [];
|
|
||||||
var suggestionsUsernameCount = {};
|
|
||||||
suggestionsUsernameCount[window.loggedIn.screen_name] = 1; // any suggestions with the same screen name as mine will get their server url added
|
|
||||||
$.each(window.following,function(){
|
|
||||||
var userregex = new RegExp(term);
|
|
||||||
if(this.username.toLowerCase().match(userregex) || this.name.toLowerCase().match(userregex)) {
|
|
||||||
suggestionsToShow.push({avatar:this.avatar, name:this.name, username:this.username,url:this.url});
|
|
||||||
|
|
||||||
// count the usernames to see if we need to show the server for any of them
|
|
||||||
if(typeof suggestionsUsernameCount[this.username] != 'undefined') {
|
|
||||||
suggestionsUsernameCount[this.username] = suggestionsUsernameCount[this.username] + 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
suggestionsUsernameCount[this.username] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// show matches
|
|
||||||
$.each(suggestionsToShow,function(){
|
|
||||||
var serverHtml = '';
|
|
||||||
if(suggestionsUsernameCount[this.username]>1 && this.url !== false) {
|
|
||||||
serverHtml = '@' + this.url;
|
|
||||||
}
|
|
||||||
queetBox.siblings('.mentions-suggestions').append('<div class="user-suggestion" title="@' + this.username + serverHtml + '"><img height="24" width="24" src="' + this.avatar + '" /><strong>' + this.name + '</strong> @<span>' + this.username + serverHtml + '</span></div>')
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
queetBox.siblings('.mentions-suggestions').children('.user-suggestion').remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
queetBox.siblings('.mentions-suggestions').children('.user-suggestion').remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// check for group mentions
|
// check for group mentions
|
||||||
$('body').on('keyup', 'div.queet-box-syntax', function(e) {
|
$('body').on('keyup', 'div.queet-box-syntax', function(e) { checkMentions(e, false);});
|
||||||
|
|
||||||
var queetBox = $(this);
|
/**
|
||||||
|
* check for user/group mentions
|
||||||
|
*
|
||||||
|
* @param {Object} e: Event object
|
||||||
|
* @param {boolean} isUser
|
||||||
|
*/
|
||||||
|
function checkMentions(e, isUser) {
|
||||||
|
var mark = '!';
|
||||||
|
var prefix = 'group';
|
||||||
|
if (isUser) {
|
||||||
|
mark = '@';
|
||||||
|
prefix = 'user';
|
||||||
|
}
|
||||||
|
|
||||||
|
// var queetBox = $(this);
|
||||||
|
var queetBox = $('body div.queet-box-syntax');
|
||||||
var cursorPosArray = getSelectionInElement(queetBox[0]);
|
var cursorPosArray = getSelectionInElement(queetBox[0]);
|
||||||
var cursorPos = cursorPosArray[0];
|
var cursorPos = cursorPosArray[0];
|
||||||
|
|
||||||
// add space before linebreaks (to separate mentions in beginning of new lines when .text():ing later)
|
if(e.keyCode != '40' && e.keyCode != '38' && e.keyCode != '13' && e.keyCode != '9') {
|
||||||
if(e.keyCode == '13') {
|
|
||||||
e.preventDefault();
|
|
||||||
var range = createRangeFromCharacterIndices(queetBox[0], cursorPos, cursorPos);
|
|
||||||
range.insertNode(document.createTextNode(" \n"));
|
|
||||||
}
|
|
||||||
else if(e.keyCode != '40' && e.keyCode != '38' && e.keyCode != '13' && e.keyCode != '9') {
|
|
||||||
var contents = queetBox.text().substring(0,cursorPos);
|
var contents = queetBox.text().substring(0,cursorPos);
|
||||||
var mentionPos = contents.lastIndexOf('!');
|
var mentionPos = contents.lastIndexOf(mark);
|
||||||
var check_contents = contents.substring(mentionPos - 1, cursorPos);
|
var check_contents = contents.substring(mentionPos - 1, cursorPos);
|
||||||
var regex = /(^|\s|\.|\n)(!)[a-zA-Z0-9]+/;
|
var regex = new RegExp('(^|\s|\.|\n)(' + mark + ')[a-zA-Z0-9]+');
|
||||||
var match = check_contents.match(regex);
|
var match = check_contents.match(regex);
|
||||||
if (contents.indexOf('!') >= 0 && match) {
|
if (contents.indexOf(mark) >= 0 && match) {
|
||||||
|
|
||||||
if(contents.lastIndexOf('!') > 1) {
|
if(contents.lastIndexOf(mark) > 1) {
|
||||||
match[0] = match[0].substring(1,match[0].length);
|
match[0] = match[0].substring(1,match[0].length);
|
||||||
}
|
}
|
||||||
if((contents.lastIndexOf('!')+match[0].length) == cursorPos) {
|
if((contents.lastIndexOf(mark)+match[0].length) == cursorPos) {
|
||||||
|
|
||||||
queetBox.siblings('.mentions-suggestions').children('.group-suggestion').remove();
|
queetBox.siblings('.mentions-suggestions').children('.' + prefix + '-suggestion').remove();
|
||||||
queetBox.siblings('.mentions-suggestions').css('top',(queetBox.height()+20) + 'px');
|
queetBox.siblings('.mentions-suggestions').css('top',(queetBox.height()+20) + 'px');
|
||||||
var term = match[0].substring(match[0].lastIndexOf('!')+1, match[0].length).toLowerCase();
|
var term = match[0].substring(match[0].lastIndexOf(mark)+1, match[0].length).toLowerCase();
|
||||||
window.lastMention.mentionPos = mentionPos;
|
window.lastMention.mentionPos = mentionPos;
|
||||||
window.lastMention.cursorPos = cursorPos;
|
window.lastMention.cursorPos = cursorPos;
|
||||||
|
|
||||||
|
|
||||||
// see if any group we're member of matches
|
// see if any user/group we're following matches
|
||||||
var suggestionsToShow = [];
|
var suggestionsToShow = [];
|
||||||
var suggestionsUsernameCount = {};
|
var suggestionsUsernameCount = {};
|
||||||
$.each(window.groupMemberships,function(){
|
if (isUser) {
|
||||||
|
suggestionsUsernameCount[window.loggedIn.screen_name] = 1; // any suggestions with the same screen name as mine will get their server url added
|
||||||
|
}
|
||||||
|
var targets = isUser ? (window.following) : (window.groupMemberships);
|
||||||
|
$.each(targets, function(){
|
||||||
var userregex = new RegExp(term);
|
var userregex = new RegExp(term);
|
||||||
if(this.username.toLowerCase().match(userregex) || this.name.toLowerCase().match(userregex)) {
|
if(this.username.toLowerCase().match(userregex) || this.name.toLowerCase().match(userregex)) {
|
||||||
suggestionsToShow.push({id:this.id, avatar:this.avatar, name:this.name, username:this.username,url:this.url});
|
var suggestion = {avatar:this.avatar, name:this.name, username:this.username,url:this.url};
|
||||||
|
if (!isUser) {
|
||||||
|
suggestion.id = this.id;
|
||||||
|
}
|
||||||
|
suggestionsToShow.push(suggestion);
|
||||||
|
|
||||||
// count the usernames to see if we need to show the server for any of them
|
// count the usernames to see if we need to show the server for any of them
|
||||||
if(typeof suggestionsUsernameCount[this.username] != 'undefined') {
|
if(typeof suggestionsUsernameCount[this.username] != 'undefined') {
|
||||||
|
@ -3511,23 +3456,27 @@ $('body').on('keyup', 'div.queet-box-syntax', function(e) {
|
||||||
$.each(suggestionsToShow,function(){
|
$.each(suggestionsToShow,function(){
|
||||||
var serverHtml = '';
|
var serverHtml = '';
|
||||||
if(suggestionsUsernameCount[this.username]>1 && this.url !== false) {
|
if(suggestionsUsernameCount[this.username]>1 && this.url !== false) {
|
||||||
serverHtml = this.url + '/group/';
|
serverHtml = isUser ? ('@' + this.url) : (this.url + '/group/');
|
||||||
|
}
|
||||||
|
if (isUser) {
|
||||||
|
queetBox.siblings('.mentions-suggestions').append('<div class="user-suggestion" title="@' + this.username + serverHtml + '"><img height="24" width="24" src="' + this.avatar + '" /><strong>' + this.name + '</strong> @<span>' + this.username + serverHtml + '</span></div>')
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
queetBox.siblings('.mentions-suggestions').append('<div class="group-suggestion" title="' + serverHtml + this.username + '" data-group-id="' + this.id + '"><img height="24" width="24" src="' + this.avatar + '" /><strong>' + this.name + '</strong> !<span>' + this.username + '</span></div>')
|
||||||
}
|
}
|
||||||
queetBox.siblings('.mentions-suggestions').append('<div class="group-suggestion" title="' + serverHtml + this.username + '" data-group-id="' + this.id + '"><img height="24" width="24" src="' + this.avatar + '" /><strong>' + this.name + '</strong> !<span>' + this.username + '</span></div>')
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
queetBox.siblings('.mentions-suggestions').children('.group-suggestion').remove();
|
queetBox.siblings('.mentions-suggestions').children('.' + prefix + '-suggestion').remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
queetBox.siblings('.mentions-suggestions').children('.group-suggestion').remove();
|
queetBox.siblings('.mentions-suggestions').children('.' + prefix + '-suggestion').remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
|
Loading…
Reference in New Issue
Block a user