!(async function () { const regexp = /https:\/\/github.com\/github\/([^\/]*)\/pull\/\d*\/files/; if (!window.location.href.match(regexp)) { window.alert("You're not on a PR 'Files changed' page. 🙃"); return } let conversation_url = window.location.href.replace(/files.*/g, ""); // get the preview deployment URL by loading the 'Conversation' page, and searching for the 'View deployment' link let deployment_url = await fetch(conversation_url) .then(function (response) { return response.text(); }) .then(function (html) { // Convert the HTML string into a document object var parser = new DOMParser(); var doc = parser.parseFromString(html, "text/html"); var elements = doc.getElementsByClassName("TimelineItem"); // Find the element that is a link that contains the text "View deployment" for (var i = 0; i < elements.length; i++) { var element = elements[i]; var links = element.getElementsByTagName("a"); for (var j = 0; j < links.length; j++) { var link = links[j]; if (link.innerText.match(/View deployment/)) { // Get the href of the link var deployment_url = link.getAttribute("href"); } } } // This should return the last link that contains the text "View deployment" (there might be multiple ones if there are multiple deployments) return deployment_url; }); if (deployment_url == null) { window.alert("No preview deployment found! 😭"); return; } // strip any trailing slash from deployment_url deployment_url = deployment_url.replace(/\/$/, ""); var url_fpt = deployment_url + "/en"; var url_ghec = deployment_url + "/en/enterprise-cloud@latest"; var url_ghes = deployment_url + "/en/enterprise-server@latest"; var url_ae = deployment_url + "/en/github-ae@latest"; var fpt = "FPT"; var ghes = "GHES"; var ghec = "GHEC"; var ae = "AE"; const file_info = document.querySelectorAll("div.file-info"); for (var i = 0; i < file_info.length; i++) { var link = file_info[i].querySelector("a").title; if (link.search("data/") === 0) { continue; } else { var regex = /\.md$/; var markdownfile = link.search(regex) >= 0; if (markdownfile) { console.log("link: " + link); link = link.replace(regex, ""); link = link.replace(/^content/, ""); link = link.replace(/\/index/, ""); var span = document.createElement("SPAN"); span.style.fontFamily = "-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif"; span.innerHTML = "  View: "; span = addLink(span, fpt, url_fpt + link); span.innerHTML += " / "; span = addLink(span, ghec, url_ghec + link); span.innerHTML += " / "; span = addLink(span, ghes, url_ghes + link); span.innerHTML += " / "; span = addLink(span, ae, url_ae + link); file_info[i].appendChild(span); } } } function addLink(span, link_name, link_href) { var anchor = document.createElement("A"); anchor.innerHTML = link_name; anchor.href = link_href; anchor.target = "_blank"; span.appendChild(anchor); return span; } })();