removed php-only settings_view and server_settings_view inccluding template and route registered MinecraftPayAPI registered Settings and SettingsList including route added CRUD for MinecraftServer implemented Settings and SettingsList component for managing Server-entries including templates added some german translations added MinecraftPayService for buffering datapull/1/head
| <?php | <?php | ||||
| class MinecraftPaymentPlugin extends Plugin { | class MinecraftPaymentPlugin extends Plugin { | ||||
| public static function get_plugin_name(): string { | public static function get_plugin_name(): string { | ||||
| return 'Minecraft Payment'; | |||||
| return 'Minecraft-Payment'; | |||||
| } | } | ||||
| public function __construct( $_DB ) { | public function __construct( $_DB ) { | ||||
| public function get_page_path() { | public function get_page_path() { | ||||
| return [ | return [ | ||||
| '/minecraft-pay/' => [ | '/minecraft-pay/' => [ | ||||
| 'settings' => [ | |||||
| null => 'settings_view', | |||||
| '/*' => 'server_settings_view' | |||||
| ], | |||||
| 'users' => [ | 'users' => [ | ||||
| null => 'users_view', | null => 'users_view', | ||||
| '/*' => 'user_view' | '/*' => 'user_view' | ||||
| 'acredit' => 'acredit_view' | 'acredit' => 'acredit_view' | ||||
| ] | ] | ||||
| ]; | ]; | ||||
| // return [ '/minecraft-pay/settings', '/minecraft-pay/settings/*', '/minecraft-pay/users', '/minecraft-pay/grant', '/minecraft-pay/settle', '/minecraft-pay/balance', '/minecraft-pay/users/*', '/minecraft-pay/acredit' ]; | |||||
| } | |||||
| } | |||||
| public function pre_load_plugin(): void { | |||||
| $this->register_component_short( 'SettingsList' ); | |||||
| $this->add_route( '/minecraft-pay/settings', 'SettingsList' ); | |||||
| $this->register_component_short( 'Settings' ); | |||||
| $this->add_route( '/minecraft-pay/settings/:id', 'Settings' ); | |||||
| $this->require_class( 'MinecraftPayAPI' ); | |||||
| API::REGISTER_CLASS( new MinecraftPayAPI(), 3, 'minecraft-pay/' ); | |||||
| } | |||||
| public function grant_view( string $url ) { | public function grant_view( string $url ) { | ||||
| if ( !Permission::PERMITTED( 'Minecraft-Pay-Settings', 1 ) ) return; | if ( !Permission::PERMITTED( 'Minecraft-Pay-Settings', 1 ) ) return; | ||||
| $this->show_template( 'Users', $params ); | $this->show_template( 'Users', $params ); | ||||
| } | } | ||||
| public function settings_view( string $url ) { | |||||
| if ( !Permission::PERMITTED( 'Minecraft-Pay-Settings', 1 ) ) return; | |||||
| if ( $url == '/minecraft-pay/settings' ) { | |||||
| $params = []; | |||||
| if ( array_key_exists( 'CreateServer', $_POST ) && array_key_exists( 'Name', $_POST ) ) { | |||||
| $s = MinecraftServer::FromPropertyArray( $_POST ); | |||||
| try { | |||||
| $s->Save(); | |||||
| $params[ 'save_message' ] = __( [ 'de' => 'Server erfolgreich angelegt', 'en' => 'Created server successfully' ] ); | |||||
| $params[ 'save_success' ] = true; | |||||
| } catch( Exception $ex ) { | |||||
| $params[ 'save_message' ] = $ex->getMessage(); | |||||
| if ( startsWith( $params[ 'save_message' ], 'Duplicate entry' ) ) | |||||
| $params[ 'save_message' ] = __( | |||||
| [ | |||||
| 'de' => 'Doppelter Name oder es wurde bei einem anderen Server weder Domain noch Port angegeben', | |||||
| 'en' => 'Duplicated Name or another server has neither domain nor port' | |||||
| ] | |||||
| ); | |||||
| $params[ 'save_success' ] = false; | |||||
| } | |||||
| } | |||||
| if ( array_key_exists( 'DeleteServer', $_POST ) && array_key_exists( 'ID', $_POST ) ) { | |||||
| $s = MinecraftServer::FromPropertyArray( $_POST ); | |||||
| try { | |||||
| $s->Delete(); | |||||
| $params[ 'save_message' ] = __( [ 'de' => 'Server erfolgreich gelöscht', 'en' => 'Deleted server successfully' ] ); | |||||
| $params[ 'save_success' ] = true; | |||||
| } catch( Exception $ex ) { | |||||
| $params[ 'save_message' ] = $ex->getMessage(); | |||||
| $params[ 'save_success' ] = false; | |||||
| } | |||||
| } | |||||
| $this->show_template( 'SettingsList', $params ); | |||||
| } | |||||
| else $this->server_settings_view( $url ); | |||||
| // $this->show_template( 'Settings', [ 'settings' => (object) [ 'Server' => '', 'Port' => 35575, 'Password' => '' ] ] ); | |||||
| } | |||||
| public function server_settings_view( string $url ) { | |||||
| if ( !Permission::PERMITTED( 'Minecraft-Pay-Settings', 1 ) ) return; | |||||
| if ( !preg_match( '/\/minecraft-pay\/settings\/([0-9]+)/', $url, $m ) || is_null( MinecraftServer::GetByID( $m[ 1 ] ) ) ) { | |||||
| Alert::SHOW( __( [ 'de' => 'Dieser Server existiert nicht', 'en' => 'This server does not exist' ] ) ); | |||||
| return; | |||||
| } | |||||
| $params = []; | |||||
| if ( | |||||
| array_key_exists( 'SaveServerSettings', $_POST ) && | |||||
| array_key_exists( 'Domain', $_POST ) && | |||||
| array_key_exists( 'Port', $_POST ) && | |||||
| array_key_exists( 'Password', $_POST ) && | |||||
| array_key_exists( 'ServerPath', $_POST ) | |||||
| ) { | |||||
| if ( !$_POST[ 'Port' ] ) $_POST[ 'Port' ] = null; | |||||
| $o = MinecraftServer::GetByID( $m[ 1 ] ); | |||||
| $s = MinecraftServer::FromPropertyArray( $_POST ); | |||||
| $s->SetID( $o->GetID() ); | |||||
| $s->SetName( $o->GetName() ); | |||||
| try { | |||||
| $s->Save(); | |||||
| $params[ 'save_message' ] = __( [ 'de' => 'Server erfolgreich gespeichert', 'en' => 'Saved server successfully' ] ); | |||||
| $params[ 'save_success' ] = true; | |||||
| } catch( Exception $ex ) { | |||||
| $params[ 'save_message' ] = $ex->getMessage(); | |||||
| if ( startsWith( $params[ 'save_message' ], 'Duplicate entry' ) ) | |||||
| $params[ 'save_message' ] = __( | |||||
| [ | |||||
| 'de' => 'Doppelte Domain noch Port Kombination', | |||||
| 'en' => 'Duplicated domain - port combination' | |||||
| ] | |||||
| ); | |||||
| $params[ 'save_success' ] = false; | |||||
| } | |||||
| } | |||||
| $params[ 'settings' ] = MinecraftServer::GetByID( $m[ 1 ] ); | |||||
| $this->show_template( 'Settings', $params ); | |||||
| } | |||||
| public function load_plugin(): void { | public function load_plugin(): void { | ||||
| if ( is_null( Permission::GetByUnique( 0, 'Minecraft-Pay-Settings' ) ) ) { | if ( is_null( Permission::GetByUnique( 0, 'Minecraft-Pay-Settings' ) ) ) { | ||||
| $p = Permission::FromArray( [], [] ); | $p = Permission::FromArray( [], [] ); |
| <?php | |||||
| class MinecraftPayAPI { | |||||
| /** | |||||
| * @API-Callback | |||||
| * @Path servers | |||||
| * | |||||
| * @Request-Method GET | |||||
| * | |||||
| * @return MinecraftServer[] | |||||
| */ | |||||
| public function GetAllServers() { | |||||
| return MinecraftServer::GetAll()->toArray(); | |||||
| } | |||||
| /** | |||||
| * @API-Callback | |||||
| * @Path servers/:id | |||||
| * @Require-Login | |||||
| * @Require-Permission Minecraft-Pay-Settings | |||||
| * | |||||
| * @Request-Method PATCH | |||||
| * | |||||
| * @Parameterized | |||||
| * | |||||
| * @param MinecraftServer $seerver server to edit | |||||
| * | |||||
| * @paramget id path id required int | |||||
| * @paramget server post server required MinecraftServer | |||||
| * | |||||
| * @return APIResult< MinecraftServer > | |||||
| */ | |||||
| public static function UpdateServer( int $id, MinecraftServer $server ) { | |||||
| $o = MinecraftServer::GetByID( $id ); | |||||
| if ( $o == null ) { | |||||
| $results[] = new APIResult( 'Missing ID', false, $server ); | |||||
| } | |||||
| if ( $server->GetName() != null ) $o->SetName( $server->GetName() ); | |||||
| if ( $server->GetDomain() != null ) $o->SetDomain( $server->GetDomain() ); | |||||
| if ( $server->GetPort() != null ) $o->SetPort( $server->GetPort() ); | |||||
| if ( $server->GetPassword() != null ) $o->SetPassword( $server->GetPassword() ); | |||||
| if ( $server->GetServerPath() != null ) $o->SetServerPath( $server->GetServerPath() ); | |||||
| if ( $server->GetPerMonthPrice() != null ) $o->SetPerMonthPrice( $server->GetPerMonthPrice() ); | |||||
| if ( $server->GetMaxPerMonthPrice() != null ) $o->SetMaxPerMonthPrice( $server->GetMaxPerMonthPrice() ); | |||||
| $r = $o->Save(); | |||||
| return new APIResult( $r ? 'Saved successfully' : 'Saving failed', $r, $r ? $o : MinecraftServer::GetByID( $id ) ); | |||||
| } | |||||
| /** | |||||
| * @API-Callback | |||||
| * @Path servers/:id | |||||
| * @Require-Login | |||||
| * @Require-Permission Minecraft-Pay-Settings | |||||
| * | |||||
| * @Request-Method DELETE | |||||
| * | |||||
| * @Parameterized | |||||
| * | |||||
| * @paramget id path id required int | |||||
| * | |||||
| * @return APIResult< MinecraftServer > | |||||
| */ | |||||
| public static function DeleteServer( int $id ) { | |||||
| if ( !is_numeric( $id ) ) return new APIResult( 'Invalid ID', false, null ); | |||||
| $server = MinecraftServer::GetByID( $id ); | |||||
| $result = null; | |||||
| if ( !$server ) { | |||||
| $result = new APIResult( 'Server does not exist', false, null ); | |||||
| } else if ( $server->DELETE() ) { | |||||
| $result = new APIResult( 'Deleted server successfully', true, null ); | |||||
| } else { | |||||
| $result = new APIResult( 'Deleting server failed', false, $server ); | |||||
| } | |||||
| return $result; | |||||
| } | |||||
| /** | |||||
| * @API-Callback | |||||
| * @Path servers | |||||
| * @Require-Login | |||||
| * @Require-Permission Minecraft-Pay-Settings | |||||
| * | |||||
| * @Request-Method POST | |||||
| * | |||||
| * @Parameterized | |||||
| * | |||||
| * @param MinecraftServer $server to add | |||||
| * | |||||
| * @paramget server post server required MinecraftServer | |||||
| * | |||||
| * @return APIResult< MinecraftServer > | |||||
| */ | |||||
| public static function AddMinecraftServer( MinecraftServer $server ) { | |||||
| $o = new MinecraftServer(); | |||||
| $o->SetName( $server->GetName() ); | |||||
| $s = $o->Save(); | |||||
| return new APIResult( $s ? 'Created server successfully' : 'The server could not be created', $s, $s ? $o : null ); | |||||
| } | |||||
| } |
| declare class Account { | |||||
| } | |||||
| declare class Account { | |||||
| } |
| class Account { | |||||
| } | |||||
| class Account { | |||||
| } |
| declare class AccountList { | |||||
| } | |||||
| declare class AccountList { | |||||
| } |
| class AccountList { | |||||
| } | |||||
| class AccountList { | |||||
| } |
| declare class Settings { | |||||
| private settings; | |||||
| onview(vnode: any): void; | |||||
| private loadServer; | |||||
| constructor(); | |||||
| private saveServer; | |||||
| } |
| // MLQRequire: { "Plugin": "Minecraft-Payment", "Type": "Service", "Name": "MinecraftPayService" } | |||||
| class Settings { | |||||
| constructor() { | |||||
| this.settings = {}; | |||||
| } | |||||
| onview(vnode) { | |||||
| if (typeof (MinecraftServer) !== 'function') | |||||
| LoadQueue.Start(() => { }); | |||||
| else | |||||
| this.loadServer(); | |||||
| } | |||||
| loadServer() { | |||||
| var id = m.route.param('id'); | |||||
| if (id.match(/^[0-9]+$/)) | |||||
| id = parseInt(id); | |||||
| else | |||||
| return; | |||||
| if (this.settings.ID !== id) { | |||||
| this.settings = $.extend(true, new MinecraftServer(), MinecraftPayService.Servers.find(o => o.ID === id)) || this.settings; | |||||
| m.redraw(); | |||||
| } | |||||
| } | |||||
| saveServer() { | |||||
| MinecraftPayService.UpdateServer(this.settings.ID, this.settings); | |||||
| } | |||||
| } |
| // MLQRequire: { "Plugin": "Minecraft-Payment", "Type": "Service", "Name": "MinecraftPayService" } | |||||
| class Settings { | |||||
| private settings: MinecraftServer = {} as MinecraftServer; | |||||
| public onview( vnode ) | |||||
| { | |||||
| if ( typeof( MinecraftServer ) !== 'function' ) LoadQueue.Start( () => {} ) | |||||
| else this.loadServer(); | |||||
| } | |||||
| private loadServer() { | |||||
| var id: string | number = m.route.param( 'id' ); | |||||
| if ( id.match( /^[0-9]+$/ ) ) id = parseInt( id ); | |||||
| else return; | |||||
| if ( this.settings.ID !== id ) { | |||||
| this.settings = $.extend( true, new MinecraftServer(), MinecraftPayService.Servers.find( o => o.ID === id ) ) || this.settings; | |||||
| m.redraw(); | |||||
| } | |||||
| } | |||||
| public constructor() { | |||||
| } | |||||
| private saveServer() { | |||||
| MinecraftPayService.UpdateServer( this.settings.ID, this.settings ); | |||||
| } | |||||
| } |
| <form m-form="this.saveServer" m-if="m.route.param( 'id' ).match( /^([0-9]+|me)$/ )"> | |||||
| <table class="table table-striped table-hover"> | |||||
| <thead> | |||||
| <tr class="table-primary"> | |||||
| <th dval-innerText="'Minecraft Payment Server ' + __( 'Settings' )" colspan="2"></th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr> | |||||
| <th class="align-middle" dval-innerText="__( 'Domain' )"></th> | |||||
| <td> | |||||
| <input class="form-control" type="text" name="Domain" m-value="this.settings.Domain" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th class="align-middle" dval-innerText="__( 'Port' )"></th> | |||||
| <td> | |||||
| <input class="form-control" type="number" name="Port" m-value="this.settings.Port" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th class="align-middle" dval-innerText="__( 'Password' )"></th> | |||||
| <td> | |||||
| <input autocomplete="password" class="form-control" type="password" name="Password" m-value="this.settings.Password" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th class="align-middle" dval-innerText="__( 'Server-Path' )"></th> | |||||
| <td> | |||||
| <input class="form-control" type="text" name="ServerPath" m-value="this.settings.ServerPath" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th class="align-middle" dval-innerText="__( 'Price/Month' )"></th> | |||||
| <td> | |||||
| <input class="form-control" type="number" name="PerMonthPrice" m-value="this.settings.PerMonthPrice" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th class="align-middle" dval-innerText="__( 'Price/Month (Limit)' )"></th> | |||||
| <td> | |||||
| <input class="form-control" type="number" name="MaxPerMonthPrice" m-value="this.settings.MaxPerMonthPrice" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td colspan="2"> | |||||
| <input class="btn btn-primary w-100" type="submit" name="SaveServerSettings" m-value="__( 'Save' )" /> | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </form> | |||||
| <h3 m-if="!m.route.param( 'id' ).match( /^([0-9]+|me)$/ )" dval-innerText="__( 'Invalid ID given' )"></h3> |
| declare class SettingsList { | |||||
| private serverName; | |||||
| private addServer; | |||||
| private deleteServer; | |||||
| } |
| // MLQRequire: { "Plugin": "Minecraft-Payment", "Type": "Service", "Name": "MinecraftPayService" } | |||||
| class SettingsList { | |||||
| addServer() { | |||||
| MinecraftPayService.CreateServer({ Name: this.serverName }); | |||||
| } | |||||
| deleteServer(id, confirm, event) { | |||||
| if (confirm) { | |||||
| MinecraftPayService.DeleteServer(id); | |||||
| } | |||||
| } | |||||
| } |
| // MLQRequire: { "Plugin": "Minecraft-Payment", "Type": "Service", "Name": "MinecraftPayService" } | |||||
| class SettingsList { | |||||
| private serverName: string; | |||||
| private addServer() { | |||||
| MinecraftPayService.CreateServer( { Name: this.serverName } as MinecraftServer ); | |||||
| } | |||||
| private deleteServer( id: number, confirm: boolean, event: any ) { | |||||
| if ( confirm ) { | |||||
| MinecraftPayService.DeleteServer( id ); | |||||
| } | |||||
| } | |||||
| } |
| <meta log-in permission="Minecraft-Pay-Settings" /> | |||||
| <form m-form="this.addServer"> | |||||
| <table class="table table-hover table-striped"> | |||||
| <tbody> | |||||
| <tr> | |||||
| <td><input class="form-control" type="text" name="Name" m-value="this.serverName" /></td> | |||||
| <td><input class="form-control btn-info" type="submit" name="CreateServer" dval-value="__( 'Create server' )" /></td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </form> | |||||
| <hr /> | |||||
| <table class="table table-hover table-striped"> | |||||
| <thead> | |||||
| <tr class="table-primary"> | |||||
| <th style="width: 100%;">Name</th> | |||||
| <th colspan="2"></th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr m-for="MinecraftPayService.Servers as server"> | |||||
| <td dval-innerText="server.Name"></td> | |||||
| <td class="align-middle"> | |||||
| <a class="action_href action_delete btn btn-danger" style="cursor: pointer;" dval-onclick="() => Modal.YesNo( 'Delete server', __( 'Do you really want to delete this server?' ), ( c, e ) => this.deleteServer( server.ID, c, e ) ).Show()">🗑</a> | |||||
| </td> | |||||
| <td class="align-middle"> | |||||
| <a class="action_href btn btn-outline-primary float-right" dval-m-href="'/minecraft-pay/settings/' + server.ID">>></a> | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> |
| { | |||||
| "Minecraft Users": "Minecraft Benutzer", | |||||
| "Credit": "Gutschrift", | |||||
| "Transactions": "Transaktionen", | |||||
| "Grant right": "Recht gewähren", | |||||
| "Create server": "Server anlegen", | |||||
| "Domain": "Domäne", | |||||
| "Server-Path": "Server-Pfad", | |||||
| "Price/Month": "Preis/Monat", | |||||
| "Price/Month (Limit)": "Preis/Monat (Limit)", | |||||
| "Settings": "Einstellungen", | |||||
| "Delete server": "Server löschen", | |||||
| "Do you really want to delete this server?": "Willst du diesen Server wirklich löschen?", | |||||
| "Yes": "Ja", | |||||
| "No": "Nein" | |||||
| } |
| /// <reference types="assets/plugins/mithril/mithril/generated/apirequestimports" /> | |||||
| declare class MinecraftPayService { | |||||
| static INSTANCE: MinecraftPayService; | |||||
| static Servers: MinecraftServer[]; | |||||
| private constructor(); | |||||
| static CreateServer(server: MinecraftServer): void; | |||||
| static UpdateServer(id: number, server: MinecraftServer): void; | |||||
| static DeleteServer(id: number): void; | |||||
| } |
| /// <reference path="../../../../assets/plugins/mithril/mithril/generated/APIRequestImports.d.ts" /> | |||||
| // MLQRequire: { "Type": "API", "Name": "MinecraftPayAPI" } | |||||
| // MLQRequire: { "Plugin": "Mithril", "Type": "Component", "Name": "Toasts" } | |||||
| class MinecraftPayService { | |||||
| constructor() { | |||||
| LoadQueue.Start(() => { | |||||
| MinecraftPayAPI.GetAllServers().then(s => MinecraftPayService.Servers = s || []); | |||||
| }); | |||||
| } | |||||
| static CreateServer(server) { | |||||
| MinecraftPayAPI.AddMinecraftServer({ post: { server } }).then(r => { | |||||
| console.warn(r); | |||||
| if (r.Success) { | |||||
| this.Servers.push(r.Obj); | |||||
| } | |||||
| Toasts.Messaged(r.Message, Toast.Load({ Type: r.Success ? 'success' : 'danger' })); | |||||
| }); | |||||
| } | |||||
| static UpdateServer(id, server) { | |||||
| MinecraftPayAPI.UpdateServer({ post: { server }, params: { id } }).then(r => { | |||||
| if (r.Success) { | |||||
| this.Servers[this.Servers.findIndex(o => o.ID === r.Obj.ID)] = r.Obj; | |||||
| } | |||||
| Toasts.Messaged(r.Message, Toast.Load({ Type: r.Success ? 'success' : 'danger' })); | |||||
| }); | |||||
| } | |||||
| static DeleteServer(id) { | |||||
| MinecraftPayAPI.DeleteServer({ params: { id } }).then(r => { | |||||
| if (r.Success) { | |||||
| this.Servers.splice(this.Servers.findIndex(o => o.ID === id), 1); | |||||
| } | |||||
| Toasts.Messaged(r.Message, Toast.Load({ Type: r.Success ? 'success' : 'danger' })); | |||||
| }); | |||||
| } | |||||
| } | |||||
| MinecraftPayService.INSTANCE = new MinecraftPayService(); | |||||
| MinecraftPayService.Servers = []; |
| /// <reference path="../../../../assets/plugins/mithril/mithril/generated/APIRequestImports.d.ts" /> | |||||
| // MLQRequire: { "Type": "API", "Name": "MinecraftPayAPI" } | |||||
| // MLQRequire: { "Plugin": "Mithril", "Type": "Component", "Name": "Toasts" } | |||||
| class MinecraftPayService { | |||||
| public static INSTANCE: MinecraftPayService = new MinecraftPayService(); | |||||
| public static Servers: MinecraftServer[] = []; | |||||
| private constructor() { | |||||
| LoadQueue.Start( () => { | |||||
| MinecraftPayAPI.GetAllServers().then( s => MinecraftPayService.Servers = s || [] ); | |||||
| } ); | |||||
| } | |||||
| public static CreateServer( server: MinecraftServer ) { | |||||
| MinecraftPayAPI.AddMinecraftServer( { post: { server } } ).then( r => { | |||||
| console.warn( r ); | |||||
| if ( r.Success ) { | |||||
| this.Servers.push( r.Obj ); | |||||
| } | |||||
| Toasts.Messaged( r.Message, Toast.Load( { Type: r.Success ? 'success' : 'danger' } ) ); | |||||
| } ); | |||||
| } | |||||
| public static UpdateServer( id: number, server: MinecraftServer ) { | |||||
| MinecraftPayAPI.UpdateServer( { post: { server }, params: { id } } ).then( r => { | |||||
| if ( r.Success ) { | |||||
| this.Servers[ this.Servers.findIndex( o => o.ID === r.Obj.ID ) ] = r.Obj; | |||||
| } | |||||
| Toasts.Messaged( r.Message, Toast.Load( { Type: r.Success ? 'success' : 'danger' } ) ); | |||||
| } ); | |||||
| } | |||||
| public static DeleteServer( id: number ) { | |||||
| MinecraftPayAPI.DeleteServer( { params: { id } } ).then( r => { | |||||
| if ( r.Success ) { | |||||
| this.Servers.splice( this.Servers.findIndex( o => o.ID === id ), 1 ); | |||||
| } | |||||
| Toasts.Messaged( r.Message, Toast.Load( { Type: r.Success ? 'success' : 'danger' } ) ); | |||||
| } ); | |||||
| } | |||||
| } |
| <meta log-in permission="Minecraft-Pay-Settings" /> | |||||
| <div dyn-if="isset( $save_message )"> | |||||
| <div dyn-type="alert" eval-value="$save_message" eval-type="$save_success ? ALERT_SUCCESS : ALERT_DANGER"></div> | |||||
| </div> | |||||
| <form method="POST"> | |||||
| <table> | |||||
| <thead> | |||||
| <tr> | |||||
| <th eval-innerText="'Minecraft Payment ' . __([ 'de' => 'Einstellungen', 'en' => 'Settings' ])" colspan="2"></th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr> | |||||
| <th eval-innerText="__([ 'de' => 'Domäne', 'en' => 'Domain' ])"></th> | |||||
| <td> | |||||
| <input type="text" name="Domain" eval-value="$settings->GetDomain()" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th eval-innerText="__([ 'de' => 'Port', 'en' => 'Port' ])"></th> | |||||
| <td> | |||||
| <input type="number" name="Port" eval-value="$settings->GetPort()" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th eval-innerText="__([ 'de' => 'Passwort', 'en' => 'Password' ])"></th> | |||||
| <td> | |||||
| <input type="password" name="Password" eval-value="$settings->GetPassword()" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th eval-innerText="__([ 'de' => 'Server-Pfad', 'en' => 'Server-Path' ])"></th> | |||||
| <td> | |||||
| <input type="text" name="ServerPath" eval-value="$settings->GetServerPath()" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th eval-innerText="__([ 'de' => 'Preis/Monat', 'en' => 'Price/Month' ])"></th> | |||||
| <td> | |||||
| <input type="number" name="PerMonthPrice" eval-value="$settings->GetPerMonthPrice()" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <th eval-innerText="__([ 'de' => 'Preis/Monat (Limit)', 'en' => 'Price/Month (Limit)' ])"></th> | |||||
| <td> | |||||
| <input type="number" name="MaxPerMonthPrice" eval-value="$settings->GetMaxPerMonthPrice()" /> | |||||
| </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td colspan="2"> | |||||
| <input type="submit" name="SaveServerSettings" eval-value="__([ 'de' => 'Speichern', 'en' => 'Save' ])" /> | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </form> |
| <meta log-in permission="Minecraft-Pay-Settings" /> | |||||
| <div dyn-if="isset( $save_message )"> | |||||
| <div dyn-type="alert" eval-value="$save_message" eval-type="$save_success ? ALERT_SUCCESS : ALERT_DANGER"></div> | |||||
| </div> | |||||
| <form method="POST"> | |||||
| <table class="table"> | |||||
| <tbody> | |||||
| <tr> | |||||
| <td><input type="text" name="Name" /></td> | |||||
| <td><input type="submit" name="CreateServer" eval-value="__( [ 'de' => 'Server anlegen', 'en' => 'Create server' ] )" /></td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </form> | |||||
| <hr /> | |||||
| <table class="table"> | |||||
| <thead> | |||||
| <tr> | |||||
| <th style="width: 100%;">Name</th> | |||||
| <th colspan="2"></th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr dyn-for="[ 'server', 'MinecraftServer::GetAll()' ]"> | |||||
| <td eval-innerText="$server->GetName()"></td> | |||||
| <td> | |||||
| <a style="cursor: pointer;" eval-href="HOME_URL . 'minecraft-pay/settings/' . $server->GetID()"> | |||||
| <input style="cursor: pointer;" type="button" eval-value="__( [ 'de' => 'Bearbeiten', 'en' => 'Edit' ] )" /> | |||||
| </a> | |||||
| </td> | |||||
| <td> | |||||
| <form method="POST"> | |||||
| <input type="hidden" name="ID" eval-value="$server->GetID()" /> | |||||
| <input type="submit" name="DeleteServer" eval-value="__( [ 'de' => 'Löschen', 'en' => 'Delete' ] )" /> | |||||
| </form> | |||||
| <a eval-href=""> | |||||
| </a> | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> |