DEV: Remove superfluous `toc` and `TOC` terms in site settings
This commit is contained in:
parent
3179e886a3
commit
8e9a175e16
|
@ -224,7 +224,7 @@ a.d-toc-close {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
&:before {
|
&:before {
|
||||||
content: "#{$composer_toc_text}";
|
content: "#{$composer_text}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const minimumTL = settings.minimum_trust_level_to_create_TOC;
|
const minimumTL = settings.minimum_trust_level_to_create;
|
||||||
|
|
||||||
if (currentUser.trust_level >= minimumTL) {
|
if (currentUser.trust_level >= minimumTL) {
|
||||||
if (!I18n.translations[I18n.currentLocale()].js.composer) {
|
if (!I18n.translations[I18n.currentLocale()].js.composer) {
|
||||||
|
|
|
@ -11,11 +11,11 @@ export default {
|
||||||
|
|
||||||
initialize() {
|
initialize() {
|
||||||
withPluginApi("1.0.0", (api) => {
|
withPluginApi("1.0.0", (api) => {
|
||||||
const autoTocCategoryIds = settings.auto_TOC_categories
|
const autoTocCategoryIds = settings.auto_categories
|
||||||
.split("|")
|
.split("|")
|
||||||
.map((id) => parseInt(id, 10));
|
.map((id) => parseInt(id, 10));
|
||||||
|
|
||||||
const autoTocTags = settings.auto_TOC_tags.split("|");
|
const autoTocTags = settings.auto_tags.split("|");
|
||||||
|
|
||||||
api.decorateCookedElement(
|
api.decorateCookedElement(
|
||||||
(el, helper) => {
|
(el, helper) => {
|
||||||
|
@ -41,7 +41,7 @@ export default {
|
||||||
":scope > h1, :scope > h2, :scope > h3, :scope > h4, :scope > h5";
|
":scope > h1, :scope > h2, :scope > h3, :scope > h4, :scope > h5";
|
||||||
const headings = el.querySelectorAll(dTocHeadingSelectors);
|
const headings = el.querySelectorAll(dTocHeadingSelectors);
|
||||||
|
|
||||||
if (headings.length < settings.TOC_min_heading) {
|
if (headings.length < settings.min_heading) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,6 @@ en:
|
||||||
post_bottom_tooltip: Navigate to post controls
|
post_bottom_tooltip: Navigate to post controls
|
||||||
theme_metadata:
|
theme_metadata:
|
||||||
settings:
|
settings:
|
||||||
minimum_trust_level_to_create_TOC: The minimum trust level a user must have in order to see the TOC button in the composer
|
minimum_trust_level_to_create: The minimum trust level a user must have in order to see the TOC button in the composer
|
||||||
auto_TOC_categories: automatically enable TOC on topics in these categories
|
auto_categories: automatically enable TOC on topics in these categories
|
||||||
auto_TOC_tags: automatically enable TOC on topics with these tags
|
auto_tags: automatically enable TOC on topics with these tags
|
||||||
|
|
|
@ -4,4 +4,4 @@ zh_CN:
|
||||||
post_bottom_tooltip: 帖子控制
|
post_bottom_tooltip: 帖子控制
|
||||||
theme_metadata:
|
theme_metadata:
|
||||||
settings:
|
settings:
|
||||||
minimum_trust_level_to_create_TOC: 能够在编辑器中显示 TOC 按钮的最低信任等级
|
minimum_trust_level_to_create: 能够在编辑器中显示 TOC 按钮的最低信任等级
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
export default function migrate(settings) {
|
||||||
|
if (settings.has("minimum_trust_level_to_create_TOC")) {
|
||||||
|
settings.set(
|
||||||
|
"minimum_trust_level_to_create",
|
||||||
|
settings.get("minimum_trust_level_to_create_TOC")
|
||||||
|
);
|
||||||
|
|
||||||
|
settings.delete("minimum_trust_level_to_create_TOC");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.has("composer_toc_text")) {
|
||||||
|
settings.set("composer_text", settings.get("composer_toc_text"));
|
||||||
|
settings.delete("composer_toc_text");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.has("auto_TOC_categories")) {
|
||||||
|
settings.set("auto_categories", settings.get("auto_TOC_categories"));
|
||||||
|
settings.delete("auto_TOC_categories");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.has("auto_TOC_tags")) {
|
||||||
|
settings.set("auto_tags", settings.get("auto_TOC_tags"));
|
||||||
|
settings.delete("auto_TOC_tags");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.has("TOC_min_heading")) {
|
||||||
|
settings.set("min_heading", settings.get("TOC_min_heading"));
|
||||||
|
settings.delete("TOC_min_heading");
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
10
settings.yml
10
settings.yml
|
@ -1,4 +1,4 @@
|
||||||
minimum_trust_level_to_create_TOC:
|
minimum_trust_level_to_create:
|
||||||
default: 0
|
default: 0
|
||||||
type: enum
|
type: enum
|
||||||
choices:
|
choices:
|
||||||
|
@ -6,21 +6,21 @@ minimum_trust_level_to_create_TOC:
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- 4
|
- 4
|
||||||
composer_toc_text:
|
composer_text:
|
||||||
default: "This topic will contain a table of contents"
|
default: "This topic will contain a table of contents"
|
||||||
table_of_contents_icon:
|
table_of_contents_icon:
|
||||||
default: "align-left"
|
default: "align-left"
|
||||||
anchor_icon:
|
anchor_icon:
|
||||||
default: "hashtag"
|
default: "hashtag"
|
||||||
auto_TOC_categories:
|
auto_categories:
|
||||||
type: list
|
type: list
|
||||||
list_type: category
|
list_type: category
|
||||||
default: ""
|
default: ""
|
||||||
auto_TOC_tags:
|
auto_tags:
|
||||||
type: list
|
type: list
|
||||||
list_type: tag
|
list_type: tag
|
||||||
default: ""
|
default: ""
|
||||||
TOC_min_heading:
|
min_heading:
|
||||||
default: 3
|
default: 3
|
||||||
min: 1
|
min: 1
|
||||||
max: 10000
|
max: 10000
|
||||||
|
|
|
@ -87,7 +87,7 @@ acceptance("DiscoTOC - off", function (needs) {
|
||||||
|
|
||||||
acceptance("DiscoTOC - with tags", function (needs) {
|
acceptance("DiscoTOC - with tags", function (needs) {
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
settings.auto_TOC_tags = TOC_AUTO_TAGS;
|
settings.auto_tags = TOC_AUTO_TAGS;
|
||||||
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
||||||
topicResponse.post_stream.posts[0].cooked = COOKED_WITH_HEADINGS;
|
topicResponse.post_stream.posts[0].cooked = COOKED_WITH_HEADINGS;
|
||||||
topicResponse.tags = TOC_TOPIC_TAGS;
|
topicResponse.tags = TOC_TOPIC_TAGS;
|
||||||
|
@ -106,7 +106,7 @@ acceptance("DiscoTOC - with tags", function (needs) {
|
||||||
|
|
||||||
acceptance("DiscoTOC - with categories", function (needs) {
|
acceptance("DiscoTOC - with categories", function (needs) {
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
settings.auto_TOC_categories = TOC_AUTO_CATEGORIES;
|
settings.auto_categories = TOC_AUTO_CATEGORIES;
|
||||||
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
||||||
topicResponse.post_stream.posts[0].cooked = COOKED_WITH_HEADINGS;
|
topicResponse.post_stream.posts[0].cooked = COOKED_WITH_HEADINGS;
|
||||||
topicResponse.category_id = TOC_TOPIC_CATEGORY;
|
topicResponse.category_id = TOC_TOPIC_CATEGORY;
|
||||||
|
@ -125,7 +125,7 @@ acceptance("DiscoTOC - with categories", function (needs) {
|
||||||
|
|
||||||
acceptance("DiscoTOC - non-text headings", function (needs) {
|
acceptance("DiscoTOC - non-text headings", function (needs) {
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
settings.TOC_min_heading = 1;
|
settings.min_heading = 1;
|
||||||
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
||||||
topicResponse.post_stream.posts[0].cooked = `
|
topicResponse.post_stream.posts[0].cooked = `
|
||||||
<h3 id="toc-h3-span" data-d-toc="toc-h3-span" class="d-toc-post-heading">
|
<h3 id="toc-h3-span" data-d-toc="toc-h3-span" class="d-toc-post-heading">
|
||||||
|
@ -152,9 +152,9 @@ acceptance("DiscoTOC - non-text headings", function (needs) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
acceptance("DiscoTOC - setting TOC_min_heading", function (needs) {
|
acceptance("DiscoTOC - setting min_heading", function (needs) {
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
settings.TOC_min_heading = 3;
|
settings.min_heading = 3;
|
||||||
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]);
|
||||||
topicResponse.post_stream.posts[0].cooked =
|
topicResponse.post_stream.posts[0].cooked =
|
||||||
'<h1>\n<a name="h1-first-test-edited-1" class="anchor" href="#h1-first-test-edited-1"></a>帖子控制</h1>\nWelcome' +
|
'<h1>\n<a name="h1-first-test-edited-1" class="anchor" href="#h1-first-test-edited-1"></a>帖子控制</h1>\nWelcome' +
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { module, test } from "qunit";
|
||||||
|
import migrate from "../../../../migrations/settings/0001-rename-settings";
|
||||||
|
|
||||||
|
module("Unit | Migrations | Settings | 0001-rename-settings", function () {
|
||||||
|
test("migrate", function (assert) {
|
||||||
|
const settings = new Map(
|
||||||
|
Object.entries({
|
||||||
|
minimum_trust_level_to_create_TOC: 0,
|
||||||
|
composer_toc_text: "some text",
|
||||||
|
auto_TOC_categories: "1|2",
|
||||||
|
auto_TOC_tags: "tag1|tag2",
|
||||||
|
TOC_min_heading: 3,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = migrate(settings);
|
||||||
|
|
||||||
|
assert.deepEqual(
|
||||||
|
Array.from(result),
|
||||||
|
Array.from(
|
||||||
|
new Map(
|
||||||
|
Object.entries({
|
||||||
|
minimum_trust_level_to_create: 0,
|
||||||
|
composer_text: "some text",
|
||||||
|
auto_categories: "1|2",
|
||||||
|
auto_tags: "tag1|tag2",
|
||||||
|
min_heading: 3,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue