import { Doc } from "../../../libs/types/document";
export function OnGitHubLink({ doc }: { doc: Doc }) {
return (
{doc.locale !== "de"
? "View this page on GitHub"
: "Übersetzung auf GitHub anzeigen"}
{" "}
•{" "}
{doc.locale !== "de"
? "Report a problem with this content"
: "Fehler mit dieser Übersetzung melden"}
);
}
const METADATA_TEMPLATE = `
Page report details
* Folder: \`$FOLDER\`
* MDN URL: https://developer.mozilla.org$PATHNAME
* GitHub URL: $GITHUB_URL
* Last commit: $LAST_COMMIT_URL
* Document last modified: $DATE
`;
function fillMetadata(string, doc) {
let { folder, github_url, last_commit_url } = doc.source;
if (doc.locale === "de") {
github_url = github_url.replace(
"/translated-content/",
"/translated-content-de/"
);
last_commit_url = last_commit_url.replace(
"/translated-content/",
"/translated-content-de/"
);
}
return string
.replace(/\$PATHNAME/g, doc.mdn_url)
.replace(/\$FOLDER/g, folder)
.replace(/\$GITHUB_URL/g, github_url)
.replace(/\$LAST_COMMIT_URL/g, last_commit_url)
.replace(
/\$DATE/g,
doc.modified ? new Date(doc.modified).toISOString() : "*date not known*"
)
.trim();
}
function NewIssueOnGitHubLink({
doc,
children,
}: {
doc: Doc;
children: React.ReactNode;
}) {
const { locale } = doc;
const url = new URL("https://github.com/");
const sp = new URLSearchParams();
url.pathname =
locale !== "en-US"
? "/mdn/translated-content/issues/new"
: "/mdn/content/issues/new";
if (locale === "de") {
url.pathname = "/mdn/translated-content-de/issues/new";
}
sp.set(
"template",
locale !== "en-US"
? `page-report-${locale.toLowerCase()}.yml`
: "page-report.yml"
);
sp.set("mdn-url", `https://developer.mozilla.org${doc.mdn_url}`);
sp.set("metadata", fillMetadata(METADATA_TEMPLATE, doc));
url.search = sp.toString();
return (
{children}
);
}
function SourceOnGitHubLink({
doc,
children,
}: {
doc: Doc;
children: React.ReactNode;
}) {
let { github_url, folder } = doc.source;
if (doc.locale === "de") {
github_url = github_url.replace(
"/translated-content/",
"/translated-content-de/"
);
}
return (
{children}
);
}