diff --git a/app/Http/Controllers/PluginController.php b/app/Http/Controllers/PluginController.php
index e2bcd9df..ee76662b 100644
--- a/app/Http/Controllers/PluginController.php
+++ b/app/Http/Controllers/PluginController.php
@@ -34,17 +34,21 @@ class PluginController extends Controller
if ($result === true) {
return json(trans('admin.plugins.operations.enabled', ['plugin' => $plugin->title]), 0);
} else {
- $unsatisfied = $result['unsatisfied']->map(function ($detail, $name) {
+ $unsatisfied = $result['unsatisfied']->map(function ($detail, $name) use ($plugins) {
$constraint = $detail['constraint'];
if (! $detail['version']) {
+ $plugin = $plugins->get($name);
+ $name = $plugin ? trans($plugin->title) : $name;
return trans('admin.plugins.operations.unsatisfied.disabled', compact('name'));
} else {
- return trans('admin.plugins.operations.unsatisfied.version', compact('name', 'constraint'));
+ $title = trans($plugins->get($name)->title);
+ return trans('admin.plugins.operations.unsatisfied.version', compact('title', 'constraint'));
}
})->values()->all();
- $conflicts = $result['conflicts']->map(function ($detail, $name) {
- return trans('admin.plugins.operations.unsatisfied.conflict', compact('name'));
+ $conflicts = $result['conflicts']->map(function ($detail, $name) use ($plugins) {
+ $title = trans($plugins->get($name)->title);
+ return trans('admin.plugins.operations.unsatisfied.conflict', compact('title'));
})->values()->all();
$reason = array_merge($unsatisfied, $conflicts);
diff --git a/resources/assets/src/components/mixins/enablePlugin.ts b/resources/assets/src/components/mixins/enablePlugin.ts
index 37f336ad..958861fe 100644
--- a/resources/assets/src/components/mixins/enablePlugin.ts
+++ b/resources/assets/src/components/mixins/enablePlugin.ts
@@ -31,21 +31,12 @@ export default Vue.extend({
this.$message.success(message)
this.$set(this.plugins[originalIndex], 'enabled', true)
} else {
- const div = document.createElement('div')
- const p = document.createElement('p')
- p.textContent = message
- div.appendChild(p)
- const ul = document.createElement('ul')
- reason.forEach(item => {
- const li = document.createElement('li')
- li.textContent = item
- ul.appendChild(li)
- })
- div.appendChild(ul)
- this.$alert(div.innerHTML.replace(/`([\w-_]+)`/g, '$1'), {
- dangerouslyUseHTMLString: true,
- type: 'warning',
- })
+ const h = this.$createElement
+ const vnode = h('div', {}, [
+ h('p', message),
+ h('ul', {}, reason.map(item => h('li', item)))
+ ])
+ this.$alert('', { message: vnode, type: 'warning' })
}
},
},
diff --git a/resources/assets/tests/views/admin/Plugins.test.ts b/resources/assets/tests/views/admin/Plugins.test.ts
index 2c0ff846..28a83424 100644
--- a/resources/assets/tests/views/admin/Plugins.test.ts
+++ b/resources/assets/tests/views/admin/Plugins.test.ts
@@ -57,7 +57,7 @@ test('enable plugin', async () => {
])
Vue.prototype.$http.post
.mockResolvedValueOnce({
- code: 1, message: '1', data: { reason: ['`a
1