mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 07:53:49 +08:00
Version check gets how many versions behind you are, and shows judgemental faces on the dashboard
This commit is contained in:
@ -8,8 +8,12 @@
|
|||||||
**/
|
**/
|
||||||
Discourse.VersionCheck = Discourse.Model.extend({
|
Discourse.VersionCheck = Discourse.Model.extend({
|
||||||
upToDate: function() {
|
upToDate: function() {
|
||||||
return this.get('latest_version') === this.get('installed_version');
|
return this.get('missing_versions_count') === 0;
|
||||||
}.property('latest_version', 'installed_version'),
|
}.property('missing_versions_count'),
|
||||||
|
|
||||||
|
behindByOneVersion: function() {
|
||||||
|
return this.get('missing_versions_count') === 1;
|
||||||
|
}.property('missing_versions_count'),
|
||||||
|
|
||||||
gitLink: function() {
|
gitLink: function() {
|
||||||
return "https://github.com/discourse/discourse/tree/" + this.get('installed_sha');
|
return "https://github.com/discourse/discourse/tree/" + this.get('installed_sha');
|
||||||
|
@ -14,9 +14,15 @@
|
|||||||
<p class="version-notes">
|
<p class="version-notes">
|
||||||
{{i18n admin.dashboard.latest_version}}: <span class="version-number">{{ versionCheck.latest_version }}</span>
|
{{i18n admin.dashboard.latest_version}}: <span class="version-number">{{ versionCheck.latest_version }}</span>
|
||||||
{{#if versionCheck.upToDate }}
|
{{#if versionCheck.upToDate }}
|
||||||
<i class='icon icon-ok update-to-date'></i> {{i18n admin.dashboard.up_to_date}}
|
<span class='icon update-to-date'>☻</span> {{i18n admin.dashboard.up_to_date}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<i {{bindAttr class=":icon :icon-warning-sign versionCheck.critical_updates:critical-updates-available:updates-available"}}></i>
|
<span {{bindAttr class=":icon versionCheck.critical_updates:critical-updates-available:updates-available"}}>
|
||||||
|
{{#if versionCheck.behindByOneVersion}}
|
||||||
|
☺
|
||||||
|
{{else}}
|
||||||
|
☹
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
<span class="critical-note">{{i18n admin.dashboard.critical_available}}</span>
|
<span class="critical-note">{{i18n admin.dashboard.critical_available}}</span>
|
||||||
<span class="normal-note">{{i18n admin.dashboard.updates_available}}</span>
|
<span class="normal-note">{{i18n admin.dashboard.updates_available}}</span>
|
||||||
{{i18n admin.dashboard.please_upgrade}}
|
{{i18n admin.dashboard.please_upgrade}}
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
font-weight: bold
|
font-weight: bold
|
||||||
}
|
}
|
||||||
|
|
||||||
.version-notes i.icon {
|
.version-notes .icon {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,17 +104,17 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.icon {
|
.icon {
|
||||||
font-size: 20px;
|
font-size: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.update-to-date {
|
.update-to-date {
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
i.updates-available {
|
.updates-available {
|
||||||
color: orange;
|
color: #FF9500;
|
||||||
}
|
}
|
||||||
i.critical-updates-available {
|
.critical-updates-available {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ class DiscourseVersionCheck
|
|||||||
include ActiveAttr::MassAssignment
|
include ActiveAttr::MassAssignment
|
||||||
include ActiveModel::Serialization
|
include ActiveModel::Serialization
|
||||||
|
|
||||||
attr_accessor :latest_version, :critical_updates, :installed_version, :installed_sha
|
attr_accessor :latest_version, :critical_updates, :installed_version, :installed_sha, :missing_versions_count
|
||||||
|
|
||||||
def active_model_serializer
|
def active_model_serializer
|
||||||
DiscourseVersionCheckSerializer
|
DiscourseVersionCheckSerializer
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
class DiscourseVersionCheckSerializer < ApplicationSerializer
|
class DiscourseVersionCheckSerializer < ApplicationSerializer
|
||||||
attributes :latest_version, :critical_updates, :installed_version, :installed_sha
|
attributes :latest_version, :critical_updates, :installed_version, :installed_sha, :missing_versions_count
|
||||||
|
|
||||||
self.root = false
|
self.root = false
|
||||||
end
|
end
|
@ -7,27 +7,30 @@ module DiscourseUpdates
|
|||||||
latest_version: latest_version || Discourse::VERSION::STRING,
|
latest_version: latest_version || Discourse::VERSION::STRING,
|
||||||
critical_updates: critical_update_available?,
|
critical_updates: critical_update_available?,
|
||||||
installed_version: Discourse::VERSION::STRING,
|
installed_version: Discourse::VERSION::STRING,
|
||||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version)
|
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||||
|
missing_versions_count: missing_versions_count || nil
|
||||||
# TODO: more info, like links and release messages
|
# TODO: more info, like links and release messages
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def latest_version=(arg)
|
|
||||||
$redis.set latest_version_key, arg
|
|
||||||
end
|
|
||||||
|
|
||||||
def latest_version
|
def latest_version
|
||||||
$redis.get latest_version_key
|
$redis.get latest_version_key
|
||||||
end
|
end
|
||||||
|
|
||||||
def critical_update_available=(arg)
|
def missing_versions_count
|
||||||
$redis.set critical_updates_available_key, arg
|
$redis.get(missing_versions_count_key).try(:to_i)
|
||||||
end
|
end
|
||||||
|
|
||||||
def critical_update_available?
|
def critical_update_available?
|
||||||
($redis.get(critical_updates_available_key) || false) == 'true'
|
($redis.get(critical_updates_available_key) || false) == 'true'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
['latest_version', 'missing_versions_count', 'critical_update_available'].each do |name|
|
||||||
|
eval "define_method :#{name}= do |arg|
|
||||||
|
$redis.set #{name}_key, arg
|
||||||
|
end"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
@ -38,5 +41,9 @@ module DiscourseUpdates
|
|||||||
def critical_updates_available_key
|
def critical_updates_available_key
|
||||||
'critical_updates_available'
|
'critical_updates_available'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def missing_versions_count_key
|
||||||
|
'missing_versions_count'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
@ -9,6 +9,7 @@ module Jobs
|
|||||||
json = DiscourseHub.discourse_version_check
|
json = DiscourseHub.discourse_version_check
|
||||||
DiscourseUpdates.latest_version = json['latestVersion']
|
DiscourseUpdates.latest_version = json['latestVersion']
|
||||||
DiscourseUpdates.critical_update_available = json['criticalUpdates']
|
DiscourseUpdates.critical_update_available = json['criticalUpdates']
|
||||||
|
DiscourseUpdates.missing_versions_count = json['missingVersionsCount']
|
||||||
end
|
end
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user