Return of the old docs banner (#25254)
This commit is contained in:
parent
072627380b
commit
ced08fcb57
3 changed files with 188 additions and 1 deletions
|
|
@ -0,0 +1 @@
|
||||||
|
<script type="text/javascript" src="$page.base$assets/js/warnOldDocs.js"></script>
|
||||||
186
akka-docs/src/main/paradox/assets/js/warnOldDocs.js
Normal file
186
akka-docs/src/main/paradox/assets/js/warnOldDocs.js
Normal file
|
|
@ -0,0 +1,186 @@
|
||||||
|
jQuery(document).ready(function ($) {
|
||||||
|
|
||||||
|
function initOldVersionWarnings($) {
|
||||||
|
$.get("//akka.io/versions.json", function (akkaVersionsData) {
|
||||||
|
var site = extractCurrentPageInfo();
|
||||||
|
if (site.v === 'snapshot') {
|
||||||
|
showSnapshotWarning(site)
|
||||||
|
} else {
|
||||||
|
var matchingMinor =
|
||||||
|
Object.keys(akkaVersionsData[site.p])
|
||||||
|
.find(function(s) { return site.v.startsWith(s) })
|
||||||
|
if (matchingMinor) {
|
||||||
|
showVersionWarning(site, akkaVersionsData, matchingMinor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInstead(akkaVersionsData, project, instead) {
|
||||||
|
if (Array.isArray(instead)) {
|
||||||
|
var found = akkaVersionsData[instead[0]][instead[1]]
|
||||||
|
var proj = instead[0]
|
||||||
|
} else {
|
||||||
|
var found = akkaVersionsData[project][instead]
|
||||||
|
var proj = project
|
||||||
|
}
|
||||||
|
return {"latest": found.latest, "project": proj}
|
||||||
|
}
|
||||||
|
|
||||||
|
function targetUrl(samePage, site, instead) {
|
||||||
|
var page = site.r
|
||||||
|
if (samePage !== true) {
|
||||||
|
// FIXME not valid anymore
|
||||||
|
if (page.substring(0, 5) == 'scala') {
|
||||||
|
page = 'scala.html'
|
||||||
|
} else if (page.substring(0, 4) == 'java') {
|
||||||
|
page = 'java.html'
|
||||||
|
} else {
|
||||||
|
page = 'index.html'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var project = instead.project
|
||||||
|
if (!project) {
|
||||||
|
project = site.p
|
||||||
|
}
|
||||||
|
return site.b + project + '/' + instead.latest + '/' + page
|
||||||
|
}
|
||||||
|
|
||||||
|
function showWarning(site, visitedVersion, text) {
|
||||||
|
// sneaking the style in here to make life simple
|
||||||
|
$('head').append('<style>' +
|
||||||
|
'.page-content .oldVersion.callout .ack-button {' +
|
||||||
|
' display: inline-block;' +
|
||||||
|
' background-color: rgb(255, 83, 75);' +
|
||||||
|
'color: #fff;' +
|
||||||
|
' text-decoration: none;' +
|
||||||
|
' padding: 10px;' +
|
||||||
|
'})')
|
||||||
|
var $warningPopup = $('<div class="callout warning oldVersion">').append(text)
|
||||||
|
var $close = $('<a href="#" class="ack-button">✓ Dismiss Warning for a Day</a>')
|
||||||
|
.click(function () {
|
||||||
|
ackVersionForADay(site.p, visitedVersion)
|
||||||
|
$warningPopup.animate({ height: 0 }, 400, "swing", function() {
|
||||||
|
$warningPopup.hide()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
$warningPopup
|
||||||
|
.hide()
|
||||||
|
.append($close)
|
||||||
|
.prependTo("#docs")
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
function showVersionWarning(site, akkaVersionsData, series) {
|
||||||
|
var version = site.v,
|
||||||
|
seriesInfo = akkaVersionsData[site.p][series]
|
||||||
|
|
||||||
|
|
||||||
|
if (versionWasAcked(site.p, version)) {
|
||||||
|
// hidden for a day
|
||||||
|
} else if (seriesInfo.outdated) {
|
||||||
|
var instead = getInstead(akkaVersionsData, site.p, seriesInfo.instead)
|
||||||
|
var insteadSeries = targetUrl(false, site, instead)
|
||||||
|
var insteadPage = targetUrl(true, site, instead)
|
||||||
|
|
||||||
|
showWarning(
|
||||||
|
site,
|
||||||
|
version,
|
||||||
|
'<h3 class="callout-title">Old Version</h3>' +
|
||||||
|
'<p><span style="font-weight: bold">This version of Akka (' + site.p + ' / ' + version + ') is outdated and not supported! </span></p>' +
|
||||||
|
'<p>Please upgrade to version <a href="' + insteadSeries + '">' + instead.latest + '</a> as soon as possible.</p>' +
|
||||||
|
'<p id="samePageLink"></p>')
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: insteadPage,
|
||||||
|
type: 'HEAD',
|
||||||
|
success: function () {
|
||||||
|
$('#samePageLink').html('<a href="' + insteadPage + '">Click here to go to the same page on the ' + instead.latest + ' version of the docs.</a>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (version != seriesInfo.latest) {
|
||||||
|
showWarning(
|
||||||
|
site,
|
||||||
|
version,
|
||||||
|
'<h3 class="callout-title">Outdated version</h3>' +
|
||||||
|
'<p>You are browsing the docs for Akka ' + version + ', however the latest release in this series is: ' +
|
||||||
|
'<a href="' + targetUrl(true, site, seriesInfo) + '">' + seriesInfo.latest + '</a>. <br/></p>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showSnapshotWarning(site) {
|
||||||
|
if (!versionWasAcked(site.p, 'snapshot')) {
|
||||||
|
var instead = {'latest': 'current'};
|
||||||
|
var insteadSeries = targetUrl(false, site, instead);
|
||||||
|
var insteadPage = targetUrl(true, site, instead);
|
||||||
|
|
||||||
|
showWarning(
|
||||||
|
site,
|
||||||
|
'snapshot',
|
||||||
|
'<h3 class="callout-title">Snapshot docs</h3>' +
|
||||||
|
'<p><span style="font-weight: bold">You are browsing the snapshot documentation, which most likely does not correspond to the artifacts you are using! </span></p>' +
|
||||||
|
'<p>We recommend that you head over to <a href="' + insteadSeries + '">the latest stable version</a> instead.</p>' +
|
||||||
|
'<p id="samePageLink"></p>')
|
||||||
|
$.ajax({
|
||||||
|
url: insteadPage,
|
||||||
|
type: 'HEAD',
|
||||||
|
success: function () {
|
||||||
|
$('#samePageLink').html('<a href="' + insteadPage + '">Click here to go to the same page on the latest stable version of the docs.</a>');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function extractCurrentPageInfo() {
|
||||||
|
var path = window.location.pathname,
|
||||||
|
base = '' + window.location
|
||||||
|
|
||||||
|
// strip off leading /docs/
|
||||||
|
path = path.substring(path.indexOf("akka"))
|
||||||
|
base = base.substring(0, base.indexOf(path))
|
||||||
|
var projectEnd = path.indexOf("/")
|
||||||
|
var versionEnd = path.indexOf("/", projectEnd + 1)
|
||||||
|
var project = path.substring(0, projectEnd)
|
||||||
|
var version = path.substring(projectEnd + 1, versionEnd)
|
||||||
|
var rest = path.substring(versionEnd + 1)
|
||||||
|
return {"b": base, "p": project, "v": version, "r": rest}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// --- ack outdated versions ---
|
||||||
|
|
||||||
|
function ackVersionCookieName(project, version) {
|
||||||
|
return "ack-" + project + "-" + version
|
||||||
|
}
|
||||||
|
|
||||||
|
function ackVersionForADay(project, version) {
|
||||||
|
function setCookie(cname, cvalue, exdays) {
|
||||||
|
var d = new Date()
|
||||||
|
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000))
|
||||||
|
var expires = "expires=" + d.toUTCString()
|
||||||
|
document.cookie = cname + "=" + cvalue + "; " + expires
|
||||||
|
}
|
||||||
|
|
||||||
|
setCookie(ackVersionCookieName(project, version), 'true', 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
function versionWasAcked(project, version) {
|
||||||
|
function getCookie(cname) {
|
||||||
|
var name = cname + "="
|
||||||
|
var ca = document.cookie.split(';')
|
||||||
|
for (var i = 0; i < ca.length; i++) {
|
||||||
|
var c = ca[i];
|
||||||
|
while (c.charAt(0) == ' ') c = c.substring(1)
|
||||||
|
if (c.indexOf(name) == 0) return c.substring(name.length, c.length)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return getCookie(ackVersionCookieName(project, version)) === 'true';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
initOldVersionWarnings($)
|
||||||
|
})
|
||||||
|
|
@ -18,7 +18,7 @@ addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.3.4")
|
||||||
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.2-RC2")
|
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.2-RC2")
|
||||||
addSbtPlugin("io.spray" % "sbt-boilerplate" % "0.6.1")
|
addSbtPlugin("io.spray" % "sbt-boilerplate" % "0.6.1")
|
||||||
addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.3.1")
|
addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.3.1")
|
||||||
addSbtPlugin("com.lightbend.akka" % "sbt-paradox-akka" % "0.8")
|
addSbtPlugin("com.lightbend.akka" % "sbt-paradox-akka" % "0.9")
|
||||||
addSbtPlugin("com.lightbend" % "sbt-whitesource" % "0.1.12")
|
addSbtPlugin("com.lightbend" % "sbt-whitesource" % "0.1.12")
|
||||||
addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.9.3")
|
addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.9.3")
|
||||||
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.0") // for advanced PR validation features
|
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.0") // for advanced PR validation features
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue