1
0
mirror of https://github.com/flarum/core.git synced 2025-08-19 23:01:56 +02:00
This commit is contained in:
SychO9
2021-09-01 17:20:06 +01:00
commit 5d3804c7ca
36 changed files with 5496 additions and 0 deletions

View File

@@ -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();
});
}
}

View 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>
);
});
});