Implement plugin property max_version

This commit is contained in:
JannisX11 2020-10-11 19:53:22 +02:00
parent a04974aab2
commit 79bf033e69
5 changed files with 20 additions and 7 deletions

View File

@ -639,7 +639,7 @@
height: auto;
float: right;
margin-left: -1px;
margin-top: 6px;
margin-top: 0;
text-align: right;
}
#plugin_list li .button_bar.tiny {
@ -668,6 +668,7 @@
font-size: 1.34em;
padding-top: 8px;
margin-bottom: -5px;
height: 48px;
}
#plugin_list li .title i {
font-size: 0.9em;

View File

@ -174,7 +174,7 @@
<button type="button" class="" v-on:click="plugin.download(true)" v-else><i class="material-icons">add</i><span class="tl">dialog.plugins.install</span></button>
<button type="button" v-on:click="plugin.reload()" v-if="plugin.installed && plugin.isReloadable()"><i class="material-icons">refresh</i><span class="tl">dialog.plugins.reload</span></button>
</div>
<div class="button_bar tiny tl" v-else>{{ plugin.isInstallable() }}</div>
<div class="button_bar tiny tl" v-if="plugin.isInstallable() != true">{{ plugin.isInstallable() }}</div>
<div class="author">{{ tl('dialog.plugins.author', [plugin.author]) }}</div>
<div class="description">{{ plugin.description }}</div>

View File

@ -37,6 +37,9 @@ const Blockbench = {
isNewerThan(version) {
return compareVersions(Blockbench.version, version);
},
isOlderThan(version) {
return compareVersions(version, Blockbench.version);
},
registerEdit() {
console.warn('Blockbench.registerEdit is outdated. Please use Undo.initEdit and Undo.finishEdit')
},

View File

@ -43,6 +43,7 @@ class Plugin {
this.icon = '';
this.variant = '';
this.min_version = '';
this.max_version = '';
this.source = 'store'
this.extend(data)
@ -60,6 +61,7 @@ class Plugin {
Merge.string(this, data, 'icon')
Merge.string(this, data, 'variant')
Merge.string(this, data, 'min_version')
Merge.string(this, data, 'max_version')
Merge.function(this, data, 'onload')
Merge.function(this, data, 'onunload')
@ -272,8 +274,12 @@ class Plugin {
isApp !== (scope.variant === 'web')
);
if (result && scope.min_version) {
result = compareVersions(scope.min_version, appVersion) ? 'outdated' : true
} else if (result === false) {
result = Blockbench.isOlderThan(scope.min_version) ? 'outdated_client' : true;
}
if (result && scope.max_version) {
result = Blockbench.isNewerThan(scope.max_version) ? 'outdated_plugin' : true
}
if (result === false) {
result = (scope.variant === 'web') ? 'web_only' : 'app_only'
}
return (result === true) ? true : tl('dialog.plugins.'+result);
@ -310,8 +316,10 @@ Plugin.register = function(id, data) {
if (!plugin) return;
plugin.extend(data)
if (data.icon) plugin.icon = Blockbench.getIconNode(data.icon)
if (plugin.onload instanceof Function) {
plugin.onload()
if (plugin.isInstallable() == true) {
if (plugin.onload instanceof Function) {
plugin.onload()
}
}
return plugin;
}

View File

@ -300,7 +300,8 @@
"dialog.plugins.reload": "Reload",
"dialog.plugins.none_installed": "No plugins installed",
"dialog.plugins.none_available": "No plugins available",
"dialog.plugins.outdated": "Requires a newer version of Blockbench",
"dialog.plugins.outdated_client": "Requires a newer version of Blockbench",
"dialog.plugins.outdated_plugin": "Plugin is outdated and does not work with this version of Blockbench",
"dialog.plugins.web_only": "Only for the web app",
"dialog.plugins.app_only": "Only for the desktop app",
"dialog.plugins.author": "by %0",