mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-12-26 10:58:49 +00:00
Added users tag support
This commit is contained in:
parent
1044e3ff64
commit
d6d6c2aa4c
@ -9,4 +9,18 @@
|
||||
*/
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/**
|
||||
* <a> like elements
|
||||
*/
|
||||
.a {
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
color: #3c8dbc;
|
||||
}
|
||||
|
||||
.a:focus, .a:hover {
|
||||
color: #72afd2;
|
||||
}
|
@ -100,6 +100,10 @@
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
#conversationsElem .direct-chat-text a, #conversationsElem .direct-chat-text .a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#conversationsElem .direct-chat-text.not-first-message::before,
|
||||
#conversationsElem .direct-chat-text.not-first-message::after {
|
||||
display: none;
|
||||
|
@ -13,13 +13,75 @@ ComunicWeb.components.textParser = {
|
||||
*/
|
||||
parse: function(info){
|
||||
|
||||
|
||||
//Add space at the begining and the end of the content to ensure
|
||||
//parsing will not encounter errors
|
||||
info.element.innerHTML = " " + info.element.innerHTML + " ";
|
||||
|
||||
//Prepare users tag parsing
|
||||
this._prepare_user_tag_parsing(info.element);
|
||||
|
||||
//Parse emojies
|
||||
ComunicWeb.components.emoji.parser.parse({
|
||||
element: info.element
|
||||
});
|
||||
|
||||
}
|
||||
//Parse users tags
|
||||
this._parse_users_tag(info.element);
|
||||
},
|
||||
|
||||
/**
|
||||
* Prepare users tag parsing
|
||||
*
|
||||
* @param {HTMLElement} target The target element to prepare
|
||||
*/
|
||||
_prepare_user_tag_parsing: function(target){
|
||||
|
||||
//Find all occurences of users tag
|
||||
while(target.innerHTML.match(/@[a-zA-Z0-9.]+/i)){
|
||||
|
||||
//Get user tag
|
||||
var userTag = target.innerHTML.match(/@[a-zA-Z0-9.]+/i)[0];
|
||||
var userID = userTag.replace("@", "");
|
||||
|
||||
target.innerHTML = target.innerHTML.replace(userTag, "<userTag>"+userID+"</userTag>");
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Parse users tag
|
||||
*
|
||||
* @param {HTMLElement} target The target element where user tags has
|
||||
* to be parsed
|
||||
*/
|
||||
_parse_users_tag: function(target){
|
||||
|
||||
//Get the list of user tags of the target
|
||||
var nodes = target.getElementsByTagName("userTag");
|
||||
|
||||
for (const num in nodes) {
|
||||
if (nodes.hasOwnProperty(num)) {
|
||||
const node = nodes[num];
|
||||
|
||||
//Get target user ID
|
||||
const userID = node.innerHTML;
|
||||
|
||||
//Adapt node content
|
||||
node.innerHTML = "@" + userID;
|
||||
node.className = "a";
|
||||
|
||||
//Set event listener
|
||||
node.addEventListener("click", function(ev){
|
||||
|
||||
//Open user page
|
||||
openUserPage(userID);
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user