mirror of
https://github.com/flarum/core.git
synced 2025-08-19 23:01:56 +02:00
init
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import type Mithril from 'mithril';
|
||||
import app from 'flarum/admin/app';
|
||||
import Component from 'flarum/common/Component';
|
||||
import Button from "flarum/common/components/Button";
|
||||
import Stream from "flarum/common/utils/Stream";
|
||||
|
||||
export default class Installer extends Component {
|
||||
packageName!: Stream<string>;
|
||||
isLoading: boolean = false;
|
||||
|
||||
oninit(vnode: Mithril.Vnode): void {
|
||||
super.oninit(vnode);
|
||||
|
||||
this.packageName = Stream('');
|
||||
}
|
||||
|
||||
view(): Mithril.Children {
|
||||
return (
|
||||
<div className="Form-group">
|
||||
<label htmlFor="install-extension">{app.translator.trans('sycho-package-manager.admin.extensions.install')}</label>
|
||||
<p className="helpText">{app.translator.trans('sycho-package-manager.admin.extensions.install_help', {
|
||||
extiverse: <a href="https://extiverse.com">extiverse.com</a>
|
||||
})}</p>
|
||||
<div className="FormControl-container">
|
||||
<input className="FormControl" id="install-extension" placeholder="vendor/package-name" bidi={this.packageName}/>
|
||||
<Button className="Button" icon="fas fa-download" onclick={this.onsubmit.bind(this)} loading={this.isLoading}>
|
||||
{app.translator.trans('sycho-package-manager.admin.extensions.proceed')}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
data(): any {
|
||||
return {
|
||||
package: this.packageName(),
|
||||
};
|
||||
}
|
||||
|
||||
onsubmit(): void {
|
||||
this.isLoading = true;
|
||||
|
||||
app.request({
|
||||
method: 'POST',
|
||||
url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,
|
||||
body: {
|
||||
data: this.data()
|
||||
},
|
||||
}).then(() => {
|
||||
this.isLoading = false;
|
||||
app.alerts.show({ type: 'success', message: app.translator.trans('core.lib.success')});
|
||||
m.redraw();
|
||||
}).catch(() => {
|
||||
this.isLoading = false;
|
||||
m.redraw();
|
||||
});
|
||||
}
|
||||
}
|
34
extensions/package-manager/js/src/admin/index.js
Normal file
34
extensions/package-manager/js/src/admin/index.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { extend } from 'flarum/common/extend';
|
||||
import app from 'flarum/admin/app';
|
||||
import ExtensionPage from 'flarum/admin/components/ExtensionPage';
|
||||
import Button from 'flarum/common/components/Button';
|
||||
import Installer from "./components/Installer";
|
||||
|
||||
app.initializers.add('sycho-package-manager', (app) => {
|
||||
app.extensionData
|
||||
.for('sycho-package-manager')
|
||||
.registerSetting(() => {
|
||||
return (
|
||||
<Installer />
|
||||
);
|
||||
});
|
||||
|
||||
extend(ExtensionPage.prototype, 'topItems', function (items) {
|
||||
items.add(
|
||||
'remove',
|
||||
<Button
|
||||
className="Button Button--danger"
|
||||
icon="fas fa-times"
|
||||
onclick={() => {
|
||||
app.request({
|
||||
url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,
|
||||
method: 'DELETE',
|
||||
}).then(() => {
|
||||
app.alerts.show({ type: 'success', message: 'Success!' });
|
||||
});
|
||||
}}>
|
||||
Remove
|
||||
</Button>
|
||||
);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user