그누보드5 태그기능 업데이트
본문
[code]
<script>
document.addEventListener('DOMContentLoaded', function() {
var regex = /(?<!\S)#([\w가-힣]+)/g; // 앞에 공백이 없을 때만 매치하도록 수정
var textNodesIterator = document.evaluate(
"//text()",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (var i = 0; i < textNodesIterator.snapshotLength; i++) {
var textNode = textNodesIterator.snapshotItem(i);
var originalText = textNode.nodeValue;
var modifiedText = originalText.replace(regex, function(match, title) {
if (textNode.parentNode.tagName.toLowerCase() === 'a' ||
textNode.parentNode.tagName.toLowerCase() === 'style' ||
textNode.parentNode.tagName.toLowerCase() === 'id') {
return match;
} else {
var searchUrl = 'http://' + window.location.host + '/bbs/search.php?sfl=wr_subject%7C%7Cwr_content%7C%7Cmb_id%7C%7Cwr_name%7C%7Cwr_datetime%7C%7Cwr_last%7C%7Cwr_ip&sop=and&stx=' + encodeURIComponent(title);
return '<a href="' + searchUrl + '" class="search_tag" style="text-decoration-line: none;color:#ee8438;">#' + title + '</a>';
}
});
if (modifiedText !== originalText) {
var newNode = document.createElement('span');
newNode.innerHTML = modifiedText;
textNode.parentNode.replaceChild(newNode, textNode);
}
}
});
</script>
[/code]
기존 문제였던 링크에 포함된#뒤의텍스트를 태그처리하는 문제를 해결했습니다.
다만 아직 오류가 일부 남아있는데요, 그누보드에서 에디터를 사용하고 계신다면 아주 큰 문제일 듯 합니다. Twave 베타 배포글을 수정하는데 왜 자꾸 작성한 내용을 수정하려고 하면 수정 페이지에서 내용이 안보이는지 이유를 조사한 결과 이놈 때문이었습니다.
tak2님의 댓글
tak2 아이피 (192.♡.0.1) 작성일오류 원인을 더욱 상세하게 파악했습니다.
우선 이 태그기능 뿐만아니라 비슷한 방식으로 작동하는 Twave 테마의 멘션 기능에도 같은 오류가 발생했는데요, 바로 댓글 수정 시 만약 태그나 멘션이 포함되어 있을 경우 수정 시 텍스트가 사라지는 오류입니다. 아마도 그누보드 특성의 문제인 것 같습니다.
예를 들어 그누보드의 게시판 댓글 만을 본다면, 댓글은 출력부와 수정 부분 두가지로 나뉘어지게 됩니다. 근데 수정부분의 태그, 멘션 텍스트 조차 링크로 처리해버리니 수정할 때 아에 보이지 않게 된 것 입니다.
우선 저는 댓글 수정 textarea에 class를 하나 추가하고 해당 클래쓰는 재외하는 방식으로 해결했습니다.
오류를 수정한 코드와 방법은 추후 게시하겠습니다