diff --git a/readthedocs/core/static-src/core/js/doc-embed/constants.js b/readthedocs/core/static-src/core/js/doc-embed/constants.js index 95f1e9b32a9..9b244e811c6 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/constants.js +++ b/readthedocs/core/static-src/core/js/doc-embed/constants.js @@ -3,19 +3,36 @@ var exports = { THEME_RTD: 'sphinx_rtd_theme', THEME_ALABASTER: 'alabaster', - THEME_CELERY: 'sphinx_celery', THEME_MKDOCS_RTD: 'readthedocs', + // Alabaster-like + THEME_CELERY: 'sphinx_celery', + THEME_BABEL: 'babel', + THEME_CLICK: 'click', + THEME_FLASK_SQLALCHEMY: 'flask-sqlalchemy', + THEME_FLASK: 'flask', + THEME_JINJA: 'jinja', + THEME_PLATTER: 'platter', + THEME_POCOO: 'pocoo', + THEME_WERKZEUG: 'werkzeug', + DEFAULT_PROMO_PRIORITY: 5, MINIMUM_PROMO_PRIORITY: 10, MAXIMUM_PROMO_PRIORITY: 1, LOW_PROMO_PRIORITY: 10, }; -exports.PROMO_SUPPORTED_THEMES = [ - exports.THEME_RTD, +exports.ALABASTER_LIKE_THEMES = [ exports.THEME_ALABASTER, - exports.THEME_CELERY + exports.THEME_CELERY, + exports.THEME_BABEL, + exports.THEME_CLICK, + exports.THEME_FLASK_SQLALCHEMY, + exports.THEME_FLASK, + exports.THEME_JINJA, + exports.THEME_PLATTER, + exports.THEME_POCOO, + exports.THEME_WERKZEUG, ]; exports.PROMO_TYPES = { diff --git a/readthedocs/core/static-src/core/js/doc-embed/footer.js b/readthedocs/core/static-src/core/js/doc-embed/footer.js index cee1adb92c4..a8eed6d70b4 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/footer.js +++ b/readthedocs/core/static-src/core/js/doc-embed/footer.js @@ -7,7 +7,7 @@ function injectFooter(data) { // If the theme looks like ours, update the existing badge // otherwise throw a a full one into the page. - if (config.is_rtd_theme()) { + if (config.is_rtd_like_theme()) { $("div.rst-other-versions").html(data['html']); } else { $("body").append(data['html']); diff --git a/readthedocs/core/static-src/core/js/doc-embed/rtd-data.js b/readthedocs/core/static-src/core/js/doc-embed/rtd-data.js index 867c6295b83..4a93d441887 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/rtd-data.js +++ b/readthedocs/core/static-src/core/js/doc-embed/rtd-data.js @@ -7,12 +7,22 @@ var constants = require('./constants'); var configMethods = { - is_rtd_theme: function () { - return this.get_theme_name() === constants.THEME_RTD; + is_rtd_like_theme: function () { + if ($('div.rst-other-versions').length === 1) { + // Crappy heuristic, but people change the theme name + // So we have to do some duck typing. + return true; + } + return this.theme === constants.THEME_RTD || this.theme === constants.THEME_MKDOCS_RTD; + }, + + is_alabaster_like_theme: function () { + // Returns true for Alabaster-like themes (eg. flask, celery) + return constants.ALABASTER_LIKE_THEMES.indexOf(this.get_theme_name()) > -1; }, theme_supports_promo: function () { - return constants.PROMO_SUPPORTED_THEMES.indexOf(this.get_theme_name()) > -1; + return this.is_rtd_like_theme() || this.is_alabaster_like_theme(); }, is_sphinx_builder: function () { @@ -24,16 +34,6 @@ var configMethods = { }, get_theme_name: function () { - // Crappy heuristic, but people change the theme name on us. So we have to - // do some duck typing. - if (this.theme !== constants.THEME_RTD) { - if (this.theme === constants.THEME_MKDOCS_RTD) { - return constants.THEME_RTD; - } - if ($('div.rst-other-versions').length === 1) { - return constants.THEME_RTD; - } - } return this.theme; }, diff --git a/readthedocs/core/static-src/core/js/doc-embed/sphinx.js b/readthedocs/core/static-src/core/js/doc-embed/sphinx.js index 0ce6bcea7d8..48d0fa74733 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/sphinx.js +++ b/readthedocs/core/static-src/core/js/doc-embed/sphinx.js @@ -44,7 +44,7 @@ function init() { }, 1000); }); - if (rtd.is_rtd_theme()) { + if (rtd.is_rtd_like_theme()) { // Add a scrollable element to the sidebar on the RTD sphinx theme // This fix is for sphinx_rtd_theme<=0.1.8 var navBar = jquery('div.wy-side-scroll:first'); diff --git a/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js b/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js index 11c4f7a0178..40b8be063fd 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js +++ b/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js @@ -18,14 +18,13 @@ function create_sidebar_placement() { var class_name; // Used for theme specific CSS customizations var offset; - if (rtd.is_mkdocs_builder() && rtd.is_rtd_theme()) { + if (rtd.is_mkdocs_builder() && rtd.is_rtd_like_theme()) { selector = 'nav.wy-nav-side'; class_name = 'ethical-rtd'; - } else if (rtd.is_rtd_theme()) { + } else if (rtd.is_rtd_like_theme()) { selector = 'nav.wy-nav-side > div.wy-side-scroll'; class_name = 'ethical-rtd'; - } else if (rtd.get_theme_name() === constants.THEME_ALABASTER || - rtd.get_theme_name() === constants.THEME_CELERY) { + } else if (rtd.is_alabaster_like_theme()) { selector = 'div.sphinxsidebar > div.sphinxsidebarwrapper'; class_name = 'ethical-alabaster'; } @@ -63,11 +62,10 @@ function create_footer_placement() { var class_name; var offset; - if (rtd.is_rtd_theme()) { + if (rtd.is_rtd_like_theme()) { selector = $('
').insertAfter('footer hr'); class_name = 'ethical-rtd'; - } else if (rtd.get_theme_name() === constants.THEME_ALABASTER || - rtd.get_theme_name() === constants.THEME_CELERY) { + } else if (rtd.is_alabaster_like_theme()) { selector = 'div.bodywrapper .body'; class_name = 'ethical-alabaster'; }