REFACTOR: new code layout/removes jquery/coding standards
This commit is contained in:
parent
41bc9b1ae1
commit
a22d636551
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"extends": "eslint-config-discourse",
|
||||||
|
"globals": {
|
||||||
|
"settings": true
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
node_modules
|
||||||
|
yarn-error.log
|
|
@ -0,0 +1,4 @@
|
||||||
|
module.exports = {
|
||||||
|
plugins: ["ember-template-lint-plugin-discourse"],
|
||||||
|
extends: "discourse:recommended"
|
||||||
|
};
|
|
@ -1,66 +0,0 @@
|
||||||
<script type="text/discourse-plugin" version="0.8.20">
|
|
||||||
const customHeaderLinks = settings.Custom_header_links;
|
|
||||||
const linksPosition = (settings.links_position === "right") ? "header-buttons:before" : "home-logo:after";
|
|
||||||
|
|
||||||
if (!customHeaderLinks.length) return;
|
|
||||||
|
|
||||||
const h = require("virtual-dom").h;
|
|
||||||
const headerLinks = [];
|
|
||||||
|
|
||||||
customHeaderLinks.split("|").map(i => {
|
|
||||||
const seg = $.map(i.split(","), $.trim);
|
|
||||||
const linkText = seg[0];
|
|
||||||
const linkTitle = seg[1];
|
|
||||||
const linkHref = seg[2];
|
|
||||||
const deviceClass = `.${seg[3]}`;
|
|
||||||
const linkTarget = seg[4] === "self" ? "" : "_blank";
|
|
||||||
const keepOnScrollClass = seg[5] === "keep" ? ".keep" : "";
|
|
||||||
const linkClass = `.${linkText.trim().toLowerCase().replace(/\s/gi, '-')}-custom-header-links`;
|
|
||||||
|
|
||||||
if (!linkTarget) {
|
|
||||||
headerLinks.push(
|
|
||||||
h(
|
|
||||||
`li.headerLink${deviceClass}${keepOnScrollClass}${linkClass}`,
|
|
||||||
h(
|
|
||||||
"a",
|
|
||||||
{
|
|
||||||
title: linkTitle,
|
|
||||||
href: linkHref
|
|
||||||
},
|
|
||||||
linkText
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
headerLinks.push(
|
|
||||||
h(
|
|
||||||
`li.headerLink${deviceClass}${keepOnScrollClass}${linkClass}`,
|
|
||||||
h(
|
|
||||||
"a",
|
|
||||||
{
|
|
||||||
title: linkTitle,
|
|
||||||
href: linkHref,
|
|
||||||
target: linkTarget
|
|
||||||
},
|
|
||||||
linkText
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
api.decorateWidget(linksPosition, helper => {
|
|
||||||
return helper.h(
|
|
||||||
"ul.custom-header-links", headerLinks
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
api.decorateWidget("home-logo:after", helper => {
|
|
||||||
let titleVisible = helper.attrs.minimized;
|
|
||||||
if (titleVisible) {
|
|
||||||
$(".d-header").addClass("hide-menus");
|
|
||||||
} else {
|
|
||||||
$(".d-header").removeClass("hide-menus");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
import { h } from "virtual-dom";
|
||||||
|
import { withPluginApi } from "discourse/lib/plugin-api";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "discourse-custom-header-links",
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
withPluginApi("0.8.20", (api) => {
|
||||||
|
const customHeaderLinks = settings.Custom_header_links;
|
||||||
|
if (!customHeaderLinks.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const linksPosition =
|
||||||
|
settings.links_position === "right"
|
||||||
|
? "header-buttons:before"
|
||||||
|
: "home-logo:after";
|
||||||
|
|
||||||
|
const headerLinks = [];
|
||||||
|
|
||||||
|
customHeaderLinks
|
||||||
|
.split("|")
|
||||||
|
.filter(Boolean)
|
||||||
|
.map((customHeaderLinksArray) => {
|
||||||
|
const [
|
||||||
|
linkText,
|
||||||
|
linkTitle,
|
||||||
|
linkHref,
|
||||||
|
device,
|
||||||
|
target,
|
||||||
|
keepOnScroll,
|
||||||
|
] = customHeaderLinksArray
|
||||||
|
.split(",")
|
||||||
|
.filter(Boolean)
|
||||||
|
.map((x) => x.trim());
|
||||||
|
|
||||||
|
const deviceClass = `.${device}`;
|
||||||
|
const linkTarget = target === "self" ? "" : "_blank";
|
||||||
|
const keepOnScrollClass = keepOnScroll === "keep" ? ".keep" : "";
|
||||||
|
const linkClass = `.${linkText
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/\s/gi, "-")}-custom-header-links`;
|
||||||
|
|
||||||
|
const anchorAttributes = {
|
||||||
|
title: linkTitle,
|
||||||
|
href: linkHref,
|
||||||
|
};
|
||||||
|
if (linkTarget) {
|
||||||
|
anchorAttributes.target = linkTarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
headerLinks.push(
|
||||||
|
h(
|
||||||
|
`li.headerLink${deviceClass}${keepOnScrollClass}${linkClass}`,
|
||||||
|
h("a", anchorAttributes, linkText)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
api.decorateWidget(linksPosition, (helper) => {
|
||||||
|
return helper.h("ul.custom-header-links", headerLinks);
|
||||||
|
});
|
||||||
|
|
||||||
|
api.decorateWidget("home-logo:after", (helper) => {
|
||||||
|
const dHeader = document.querySelector(".d-header");
|
||||||
|
|
||||||
|
if (!dHeader) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isTitleVisible = helper.attrs.minimized;
|
||||||
|
if (isTitleVisible) {
|
||||||
|
dHeader.classList.add("hide-menus");
|
||||||
|
} else {
|
||||||
|
dHeader.classList.remove("hide-menus");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"author": "Discourse",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint-config-discourse": "latest"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue