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 @@ - - - -

You are running an old version of the Discourse image.

-

- 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.upgrade_title"}}

- +{{#if this.outdated}} +

{{i18n "admin.docker.outdated_image_header"}}

+

{{i18n "admin.docker.outdated_image_info"}}

- - - - - - - - {{#each this.model as |repo|}} - - {{/each}} - -
{{i18n "admin.docker.repository"}}{{i18n "admin.docker.status"}}
+ {{! prettier-ignore }} +
+    cd /var/discourse
+    git pull
+    ./launcher rebuild app
+  
+

+ + {{i18n "admin.docker.outdated_image_link"}} + +

+{{else}} + + + + + + + + + + {{#each this.model as |repo|}} + + {{/each}} + +
{{i18n "admin.docker.repository"}}{{i18n "admin.docker.status"}}
+{{/if}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 667e30c..d4caf9c 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -15,6 +15,9 @@ en: main_branch_warning: "WARNING: Your Discourse is tracking the 'main' branch which may be unstable, we recommend tracking the 'tests-passed' branch." new_version_available: "New Version Available!" official_plugin: "Official Plugin" + outdated_image_header: "You are running an old version of the Discourse image" + outdated_image_info: "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:" + outdated_image_link: "More info on our support site" outdated_notice: "Your Discourse installation is out of date" perform_upgrade: "Click here to upgrade." repo_newest_version: "%{name} is at the newest version."