FIX: Make category slugs lowercase (#11277)

Admins could specify category slug with upper case characters and same slug,
but with different cases could be used simultaneously.
This commit is contained in:
Bianca Nenciu
2021-01-12 17:28:33 +02:00
committed by GitHub
parent e80332a2bc
commit ec0212e56b
7 changed files with 118 additions and 30 deletions
@@ -23,15 +23,19 @@ export function linkSeenHashtags($elem) {
slug = slug.substr(0, slug.length - TAG_HASHTAG_POSTFIX.length);
}
if (categoryHashtags[slug] && !hasTagSuffix) {
replaceSpan($(hashtag), slug, categoryHashtags[slug]);
} else if (tagHashtags[slug]) {
replaceSpan($(hashtag), slug, tagHashtags[slug]);
const lowerSlug = slug.toLowerCase();
if (categoryHashtags[lowerSlug] && !hasTagSuffix) {
replaceSpan($(hashtag), slug, categoryHashtags[lowerSlug]);
} else if (tagHashtags[lowerSlug]) {
replaceSpan($(hashtag), slug, tagHashtags[lowerSlug]);
}
});
});
return slugs.uniq().filter((slug) => !checkedHashtags.has(slug));
return slugs
.map((slug) => slug.toLowerCase())
.uniq()
.filter((slug) => !checkedHashtags.has(slug));
}
export function fetchUnseenHashtags(slugs) {
@@ -27,14 +27,17 @@ acceptance("Category and Tag Hashtags", function (needs) {
this is a tag hashtag #monkey
category vs tag: #bug vs #bug::tag`
category vs tag: #bug vs #bug::tag
uppercase hashtag works too #BUG, #BUG::tag`
);
assert.equal(
queryAll(".d-editor-preview:visible").html().trim(),
`<p>this is a category hashtag <a href="/c/bugs" class="hashtag">#<span>bug</span></a></p>
<p>this is a tag hashtag <a href="/tag/monkey" class="hashtag">#<span>monkey</span></a></p>
<p>category vs tag: <a href="/c/bugs" class="hashtag">#<span>bug</span></a> vs <a href="/tag/bug" class="hashtag">#<span>bug</span></a></p>`
<p>category vs tag: <a href="/c/bugs" class="hashtag">#<span>bug</span></a> vs <a href="/tag/bug" class="hashtag">#<span>bug</span></a></p>
<p>uppercase hashtag works too <a href="/c/bugs" class="hashtag">#<span>BUG</span></a>, <a href="/tag/bug" class="hashtag">#<span>BUG</span></a></p>`
);
});
});