Skip to content

Commit ccc5bf2

Browse files
author
Alex Vorbau
committed
Create optional checkVersion function
1 parent a82156c commit ccc5bf2

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
lines changed

versionwarning/_static/js/versionwarning.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

versionwarning/_static/js/versionwarning.src.js

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ function injectVersionWarningBanner(running_version, version, config) {
44
console.debug("injectVersionWarningBanner");
55
var version_url = window.location.pathname.replace(running_version.slug, version.slug);
66
var warning = $(config.banner.html);
7+
if (config.meta.check_version_fn) {
8+
version_url = config.meta.api_url;
9+
}
710

811
warning
912
.find("a")
@@ -43,6 +46,15 @@ function getHighestVersion(versions) {
4346
return highest_version;
4447
}
4548

49+
function showBanner(running_version, highest_version, config) {
50+
console.debug("showBanner");
51+
if (
52+
semver.valid(semver.coerce(running_version.slug)) && semver.valid(semver.coerce(highest_version.slug)) &&
53+
semver.lt(semver.coerce(running_version.slug), semver.coerce(highest_version.slug))) {
54+
console.debug("Highest version: " + highest_version.slug);
55+
injectVersionWarningBanner(running_version, highest_version, config);
56+
}
57+
}
4658

4759
function checkVersion(config) {
4860
console.debug("checkVersion");
@@ -67,12 +79,7 @@ function checkVersion(config) {
6779
success: function (versions) {
6880
// TODO: fetch more versions if there are more pages (next)
6981
highest_version = getHighestVersion(versions["results"]);
70-
if (
71-
semver.valid(semver.coerce(running_version.slug)) && semver.valid(semver.coerce(highest_version.slug)) &&
72-
semver.lt(semver.coerce(running_version.slug), semver.coerce(highest_version.slug))) {
73-
console.debug("Highest version: " + highest_version.slug);
74-
injectVersionWarningBanner(running_version, highest_version, config);
75-
}
82+
showBanner(running_version, highest_version, config);
7683
},
7784
error: function () {
7885
console.error("Error loading Read the Docs active versions.");
@@ -97,6 +104,11 @@ function init() {
97104
else if (config.banner.custom) {
98105
injectCustomWarningBanner(config);
99106
}
107+
else if (config.meta.check_version_fn) {
108+
// A custom function for checking version is defined globally
109+
var fn = window[config.meta.check_version_fn];
110+
fn(config, showBanner);
111+
}
100112
else {
101113
checkVersion(config);
102114
}

versionwarning/extension.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def setup(app):
2828
app.add_config_value('versionwarning_body_selector', 'div.body', 'html')
2929
app.add_config_value('versionwarning_project_slug', os.environ.get('READTHEDOCS_PROJECT', None), 'html')
3030
app.add_config_value('versionwarning_project_version', os.environ.get('READTHEDOCS_VERSION', None), 'html')
31+
app.add_config_value('versionwarning_check_version_fn', '', 'html')
3132

3233
if sphinx.version_info >= (1, 8):
3334
# ``config-initied`` requires Sphinx >= 1.8

versionwarning/signals.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def generate_versionwarning_data_json(app, config=None, **kwargs):
4646
data = json.dumps({
4747
'meta': {
4848
'api_url': config.versionwarning_api_url,
49+
'check_version_fn': config.versionwarning_check_version_fn,
4950
},
5051
'banner': {
5152
'html': banner_html,

0 commit comments

Comments
 (0)