diff --git a/app/controllers/docker_manager/admin_controller.rb b/app/controllers/docker_manager/admin_controller.rb index fbc5e8d..820fb0f 100644 --- a/app/controllers/docker_manager/admin_controller.rb +++ b/app/controllers/docker_manager/admin_controller.rb @@ -6,32 +6,6 @@ require_dependency "docker_manager/upgrader" module DockerManager class AdminController < Admin::AdminController def index - return if Rails.env.development? - - version = - begin - File.read("/VERSION") - rescue StandardError - "1.0.0" - end - - version = Gem::Version.new(version) - expected_version = Gem::Version.new("2.0.20221221-0050") - ruby_version = Gem::Version.new(RUBY_VERSION) - expected_ruby_version = Gem::Version.new("3.1.3") - min_stable_version = Gem::Version.new("3.0.0") - min_beta_version = Gem::Version.new("3.1.0.beta1") - - upgrade_image = version < expected_version - upgrade_ruby = ruby_version < expected_ruby_version - upgrade_discourse = - discourse_upgrade_required?(min_stable_version, min_beta_version) - - if upgrade_image || upgrade_ruby || upgrade_discourse - render "upgrade_required", layout: false - else - render - end end def repos @@ -62,10 +36,38 @@ module DockerManager result[:version] = r.upgrade_version end end + result end - render json: { repos: repos } + response = { repos: repos } + + if !Rails.env.development? + version = + begin + File.read("/VERSION") + rescue StandardError + "1.0.0" + end + + version = Gem::Version.new(version) + expected_version = Gem::Version.new("2.0.20221221-0050") + ruby_version = Gem::Version.new(RUBY_VERSION) + expected_ruby_version = Gem::Version.new("3.1.3") + min_stable_version = Gem::Version.new("3.0.0") + min_beta_version = Gem::Version.new("3.1.0.beta1") + + upgrade_image = version < expected_version + upgrade_ruby = ruby_version < expected_ruby_version + upgrade_discourse = + discourse_upgrade_required?(min_stable_version, min_beta_version) + + if upgrade_image || upgrade_ruby || upgrade_discourse + response[:upgrade_required] = true + end + end + + render json: response end def progress diff --git a/app/views/docker_manager/admin/upgrade_required.html.erb b/app/views/docker_manager/admin/upgrade_required.html.erb deleted file mode 100644 index 62bd59d..0000000 --- a/app/views/docker_manager/admin/upgrade_required.html.erb +++ /dev/null @@ -1,21 +0,0 @@ - -
- -- Upgrades via the web UI are disabled until you run the latest image. -
-- To do so log in to your server using SSH and run: -
- -- cd /var/discourse - git pull - ./launcher rebuild app --
- More info on our support site -
- - diff --git a/assets/javascripts/discourse/controllers/upgrade-index.js b/assets/javascripts/discourse/controllers/upgrade-index.js index bfc6bb9..2364c00 100644 --- a/assets/javascripts/discourse/controllers/upgrade-index.js +++ b/assets/javascripts/discourse/controllers/upgrade-index.js @@ -2,6 +2,7 @@ import Controller from "@ember/controller"; import { inject as service } from "@ember/service"; import { tracked } from "@glimmer/tracking"; import { action } from "@ember/object"; +import { needsImageUpgrade } from "discourse/plugins/docker_manager/discourse/models/repo"; export default class UpgradeIndex extends Controller { @service router; @@ -9,6 +10,10 @@ export default class UpgradeIndex extends Controller { @tracked managerRepo = null; @tracked upgrading = null; + get outdated() { + return needsImageUpgrade; + } + get upgradeAllButtonDisabled() { return !this.managerRepo.upToDate || this.allUpToDate; } @@ -19,6 +24,6 @@ export default class UpgradeIndex extends Controller { @action upgradeAllButton() { - this.router.replaceWith("upgrade.show", "all"); + this.router.transitionTo("upgrade.show", "all"); } } diff --git a/assets/javascripts/discourse/models/repo.js b/assets/javascripts/discourse/models/repo.js index b31c6b5..fb32053 100644 --- a/assets/javascripts/discourse/models/repo.js +++ b/assets/javascripts/discourse/models/repo.js @@ -3,6 +3,7 @@ import { tracked } from "@glimmer/tracking"; import { TrackedObject } from "@ember-compat/tracked-built-ins"; let loaded = []; +export let needsImageUpgrade = false; function concatVersions(repos) { return repos.map((repo) => repo.version).join(", "); @@ -140,6 +141,8 @@ Repo.findAll = async function () { const result = await ajax("/admin/docker/repos"); loaded = result.repos.map((r) => new Repo(r)); + needsImageUpgrade = result.upgrade_required; + return loaded; }; diff --git a/assets/javascripts/discourse/templates/upgrade-index.hbs b/assets/javascripts/discourse/templates/upgrade-index.hbs index de88721..fae11be 100644 --- a/assets/javascripts/discourse/templates/upgrade-index.hbs +++ b/assets/javascripts/discourse/templates/upgrade-index.hbs @@ -1,31 +1,50 @@{{i18n "admin.docker.outdated_image_info"}}
-| - | {{i18n "admin.docker.repository"}} | -{{i18n "admin.docker.status"}} | - - - {{#each this.model as |repo|}} -
|---|
+ cd /var/discourse + git pull + ./launcher rebuild app ++
+ + {{i18n "admin.docker.outdated_image_link"}} + +
+{{else}} + + +| + | {{i18n "admin.docker.repository"}} | +{{i18n "admin.docker.status"}} | + + + {{#each this.model as |repo|}} +
|---|