Merge pull request #19970 from akka/wip-warnOldDocs-RK
update warnOldDocs.js and symlink for release
This commit is contained in:
commit
f60923fb10
2 changed files with 121 additions and 70 deletions
|
|
@ -3,28 +3,67 @@ jQuery(document).ready(function ($) {
|
|||
});
|
||||
|
||||
function initOldVersionWarnings($) {
|
||||
$.get(versionsJsonUri(), function (akkaVersionsData) {
|
||||
var thisVersion = browsedAkkaVersion();
|
||||
if (thisVersion.includes("-SNAPSHOT")) {
|
||||
$.get("//akka.io/versions.json", function (akkaVersionsData) {
|
||||
var site = splitPath();
|
||||
console.log(site);
|
||||
if (site.v === 'snapshot') {
|
||||
console.log("Detected SNAPSHOT Akka version...");
|
||||
// we could show a 'hey, this is a snapshot' notice
|
||||
showSnapshotWarning(site);
|
||||
} else {
|
||||
for (var series in akkaVersionsData) {
|
||||
if (thisVersion.startsWith(series)) {
|
||||
showVersionWarning(thisVersion, akkaVersionsData, akkaVersionsData[series]);
|
||||
for (var series in akkaVersionsData[site.p]) {
|
||||
if (site.v.startsWith(series)) {
|
||||
return showVersionWarning(site, akkaVersionsData, series);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function insteadUrl(version, instead) {
|
||||
return ("" + window.location).replace(version, instead);
|
||||
function splitPath() {
|
||||
var path = window.location.pathname;
|
||||
path = path.substring(path.indexOf("akka")); // string off leading /docs/
|
||||
var base = '' + window.location;
|
||||
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};
|
||||
}
|
||||
|
||||
function showVersionWarning(version, akkaVersionsData, seriesInfo) {
|
||||
console.log("Akka version:", version);
|
||||
var targetUrl = ("" + window.location).replace(version, seriesInfo.latest);
|
||||
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) {
|
||||
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 showVersionWarning(site, akkaVersionsData, series) {
|
||||
var version = site.v;
|
||||
var seriesInfo = akkaVersionsData[site.p][series];
|
||||
var $floatyWarning = $('<div id="floaty-warning"/>');
|
||||
|
||||
console.log("Current version info", seriesInfo);
|
||||
|
|
@ -36,15 +75,23 @@ function showVersionWarning(version, akkaVersionsData, seriesInfo) {
|
|||
if (isOutdated) {
|
||||
needsToShow = true;
|
||||
$floatyWarning.addClass("warning");
|
||||
var instead = akkaVersionsData[seriesInfo.instead].latest;
|
||||
|
||||
console.log("Akka " + version + " is outdated. Suggesting 'latest' of ", seriesInfo.instead, "by 'instead' key.");
|
||||
var instead = getInstead(akkaVersionsData, site.p, seriesInfo.instead);
|
||||
var insteadSeries = targetUrl(false, site, instead);
|
||||
var insteadPage = targetUrl(true, site, instead);
|
||||
|
||||
$floatyWarning
|
||||
.append(
|
||||
'<p>' +
|
||||
'<span style="font-weight: bold">This version of Akka (' + version + ') has been end-of-lifed and is currently not supported! </span><br/>' +
|
||||
'Please upgrade to <a href="' + insteadUrl(version, instead) + '">Akka ' + instead + '</a> or <a href="http://www.lightbend.com/products/lightbend-reactive-platform">Lightbend Reactive Platform</a> as soon as possible.' +
|
||||
'</p>');
|
||||
'<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>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (!isLatestInSeries) {
|
||||
|
|
@ -54,28 +101,18 @@ function showVersionWarning(version, akkaVersionsData, seriesInfo) {
|
|||
'<p>' +
|
||||
'You are browsing the docs for Akka ' + version + ', ' +
|
||||
'however the latest release in this series is: ' +
|
||||
'<a href="' + targetUrl + '">' + seriesInfo.latest + '</a>. <br/>' +
|
||||
'<a href="' + targetUrl(true, site, seriesInfo) + '">' + seriesInfo.latest + '</a>. <br/>' +
|
||||
'</p>');
|
||||
}
|
||||
|
||||
if (isOutdated) {
|
||||
$floatyWarning
|
||||
.append(
|
||||
'<p>' +
|
||||
'<a href="' + insteadUrl(version, instead) + '">Click here to go to the same page on the ' + akkaVersionsData[seriesInfo.instead].latest + ' version of the docs.</a>' +
|
||||
'</p>');
|
||||
} else if (!isLatestInSeries) {
|
||||
$floatyWarning
|
||||
.append(
|
||||
'<p>' +
|
||||
'<a href="' + targetUrl + '">Click here to go to the same page on the ' + seriesInfo.latest + ' version of the docs.</a>' +
|
||||
'</p>')
|
||||
if (needsToShow && !versionWasAcked(site.p, version)) {
|
||||
var style = '';
|
||||
if (site.p != 'akka-stream-and-http-experimental') {
|
||||
style = 'style="color:black"'
|
||||
}
|
||||
|
||||
if (needsToShow && !outdatedVersionWasAcked(version)) {
|
||||
var $close = $('<span id="close-floaty-window">Close [X]</span>')
|
||||
var $close = $('<button id="close-floaty-window" ' + style + '>Dismiss Warning for a Day</button>')
|
||||
.click(function () {
|
||||
ackOutdatedVersionForADay(version);
|
||||
ackVersionForADay(site.p, version);
|
||||
$floatyWarning.hide();
|
||||
});
|
||||
|
||||
|
|
@ -84,48 +121,62 @@ function showVersionWarning(version, akkaVersionsData, seriesInfo) {
|
|||
.append($close)
|
||||
.prependTo("body")
|
||||
.show()
|
||||
.delay(10 * 1000)
|
||||
.fadeOut();
|
||||
}
|
||||
}
|
||||
|
||||
// e.g. "docs/akka/2.3.10/scala/persistence.html" => "2.3.10"
|
||||
function browsedAkkaVersion() {
|
||||
var globalSetting = window.DOCUMENTATION_OPTIONS.VERSION; // generated by Sphinx
|
||||
if (globalSetting) {
|
||||
return globalSetting;
|
||||
} else {
|
||||
var path = window.location.pathname;
|
||||
var path2 = path.substring(path.indexOf("/", "/docs/akka".length) + 1);
|
||||
var version = path2.substring(0, path2.indexOf("/"));
|
||||
console.log("Detected version of docs using window.location parsing:", version);
|
||||
return version;
|
||||
}
|
||||
}
|
||||
function showSnapshotWarning(site) {
|
||||
if (!versionWasAcked(site.p, 'snapshot')) {
|
||||
var $floatyWarning = $('<div id="floaty-warning" class="warning"/>');
|
||||
|
||||
function versionsJsonUri() {
|
||||
if (window.location.pathname.includes("stream-and-http"))
|
||||
return "http://doc.akka.io/docs/akka-stream-and-http-experimental/versions.json";
|
||||
else
|
||||
return "http://doc.akka.io/docs/akka/versions.json";
|
||||
var instead = { 'latest' : 'current' };
|
||||
var insteadSeries = targetUrl(false, site, instead);
|
||||
var insteadPage = targetUrl(true, site, instead);
|
||||
|
||||
$floatyWarning
|
||||
.append(
|
||||
'<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>');
|
||||
}
|
||||
});
|
||||
var style = '';
|
||||
if (site.p != 'akka-stream-and-http-experimental') {
|
||||
style = 'style="color:black"'
|
||||
}
|
||||
var $close = $('<button id="close-floaty-window" ' + style + '>Dismiss Warning for a Day</button>')
|
||||
.click(function () {
|
||||
ackVersionForADay(site.p, 'snapshot');
|
||||
$floatyWarning.hide();
|
||||
});
|
||||
$floatyWarning
|
||||
.hide()
|
||||
.append($close)
|
||||
.prependTo("body")
|
||||
.show()
|
||||
}
|
||||
}
|
||||
|
||||
// --- ack outdated versions ---
|
||||
|
||||
function ackOutdatedVersionCookieName(version) {
|
||||
return "ack-outdated-" + version;
|
||||
function ackVersionCookieName(project, version) {
|
||||
return "ack-" + project + "-" + version;
|
||||
}
|
||||
|
||||
function ackOutdatedVersionForADay(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(ackOutdatedVersionCookieName(version), 'true', 1)
|
||||
setCookie(ackVersionCookieName(project, version), 'true', 1)
|
||||
}
|
||||
function outdatedVersionWasAcked(version) {
|
||||
function versionWasAcked(project, version) {
|
||||
function getCookie(cname) {
|
||||
var name = cname + "=";
|
||||
var ca = document.cookie.split(';');
|
||||
|
|
@ -137,5 +188,5 @@ function outdatedVersionWasAcked(version) {
|
|||
return "";
|
||||
}
|
||||
|
||||
return getCookie(ackOutdatedVersionCookieName(version)) === 'true';
|
||||
return getCookie(ackVersionCookieName(project, version)) === 'true';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -360,17 +360,17 @@ if [ $dry_run ]; then
|
|||
echodry " rsync -rlpvz --chmod=Dg+ws,Fg+w --exclude ${release_dir}/downloads ${release_dir}/ ${publish_path}/"
|
||||
echodry " sbt uploadRelease"
|
||||
else
|
||||
important ssh ${release_server} "cd ${release_path}/docs/akka; git add .; git commit -m 'before publishing version $version'; true"
|
||||
important rsync -rlpvz --chmod=Dg+ws,Fg+w --exclude ${release_dir}/downloads ${release_dir}/ ${publish_path}/
|
||||
important sbt uploadRelease
|
||||
important ssh ${release_server} cp -v ${release_path}/docs/akka/${version}/_static/warnOldDocs.js ${release_path}/docs/akka
|
||||
important ssh ${release_server} ln -snvf ../../warnOldDocs.js ${release_path}/docs/akka/${version}/_static/warnOldDocs.js
|
||||
important ssh ${release_server} "cd ${release_path}/docs/akka; git add .; git commit -m 'publish version $version'"
|
||||
fi
|
||||
|
||||
echolog "Updating http://doc.akka.io/docs/versions.json [from $script_dir/../../akka-docs/versions.json]..."
|
||||
if [ $dry_run ]; then
|
||||
echodry "Not actually updating versions.json. Command:"
|
||||
echodry " important scp $script_dir/../../akka-docs/versions.json ${publish_path}/docs/"
|
||||
else
|
||||
important scp $script_dir/../../akka-docs/versions.json ${publish_path}/docs/
|
||||
fi
|
||||
echolog "*****"
|
||||
echolog "Do not forget to update versions.json on akka.github.com!"
|
||||
echolog "*****"
|
||||
|
||||
if [ $dry_run ]; then
|
||||
if [ $no_revert ]; then
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue