From 1aa1ec19eb18ec04e30f209396740e958f0e31f8 Mon Sep 17 00:00:00 2001 From: Austin Ginder Date: Wed, 24 May 2023 15:01:05 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20NEW:=20Tools=20admin=20menu=20it?= =?UTF-8?q?em?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/class-captaincore-admin.php | 11 +++ app/Configurations.php | 59 ++++++++++-- templates/admin.php | 146 ++++++++++++++++++++++++++++++ 3 files changed, 208 insertions(+), 8 deletions(-) create mode 100644 templates/admin.php diff --git a/admin/class-captaincore-admin.php b/admin/class-captaincore-admin.php index 5a9c9f8..bebf4a4 100755 --- a/admin/class-captaincore-admin.php +++ b/admin/class-captaincore-admin.php @@ -51,9 +51,20 @@ class Captaincore_Admin { $this->plugin_name = $plugin_name; $this->version = $version; + add_action( 'admin_menu', [ $this, 'admin_menu' ] ); } + public function admin_menu() { + if ( current_user_can( 'manage_options' ) ) { + add_management_page( "CaptainCore", "CaptainCore", "manage_options", "captaincore", array( $this, 'admin_view' ) ); + } + } + + public function admin_view() { + require_once plugin_dir_path( __DIR__ ) . '/templates/admin.php'; + } + /** * Register the stylesheets for the admin area. * diff --git a/app/Configurations.php b/app/Configurations.php index 08ce2c6..ced949d 100644 --- a/app/Configurations.php +++ b/app/Configurations.php @@ -11,14 +11,34 @@ class Configurations { if ( empty( $configurations ) ) { $configurations = (object) []; } - if ( ! isset( $configurations->colors ) ) { - $configurations->colors = []; + if ( empty ( $configurations->colors ) ) { + $configurations->colors = [ + "primary" => '#2c3e50', + "secondary" => '#424242', + "accent" => '#82B1FF', + "error" => '#FF5252', + "info" => '#2196F3', + "success" => '#4CAF50', + "warning" => '#FFC107', + ]; + } + if ( ! isset( $configurations->path ) ) { + $configurations->path = "/account/"; + } + if ( ! isset( $configurations->mode ) ) { + $configurations->mode = "hosting"; } if ( ! isset( $configurations->remote_upload_uri ) ) { $configurations->remote_upload_uri = get_option( 'options_remote_upload_uri' ); } - if ( ! isset( $configurations->logo ) ) { - $configurations->logo = ""; + if ( empty( $configurations->logo ) ) { + $configurations->logo = "/wp-content/plugins/captaincore-manager/public/logo.webp"; + } + if ( empty( $configurations->logo_width ) ) { + $configurations->logo_width = "32"; + } + if ( ! isset( $configurations->name ) ) { + $configurations->name = "CaptainCore"; } if ( ! isset( $configurations->scheduled_tasks ) ) { $configurations->scheduled_tasks = []; @@ -38,7 +58,7 @@ class Configurations { if ( ! isset( $configurations->intercom_secret_key ) ) { $configurations->intercom_secret_key = ""; } - if ( $configurations->dns_introduction ) { + if ( ! empty( $configurations->dns_introduction ) ) { $Parsedown = new \Parsedown(); $configurations->dns_introduction_html = $Parsedown->text( $configurations->dns_introduction ); } @@ -55,9 +75,9 @@ class Configurations { if ( empty( $configurations ) ) { $configurations = (object) []; } - if ( ! isset( $configurations->colors ) ) { + if ( empty ( $configurations->colors ) ) { $configurations->colors = [ - "primary" => '#1976D2', + "primary" => '#2c3e50', "secondary" => '#424242', "accent" => '#82B1FF', "error" => '#FF5252', @@ -69,7 +89,7 @@ class Configurations { return $configurations->colors; } - public function update( $field, $value ) { + public function update_field( $field, $value ) { $configurations = json_decode( get_site_option( 'captaincore_configurations' ) ); if ( empty( $configurations ) ) { $configurations = (object) []; @@ -78,6 +98,21 @@ class Configurations { update_site_option( 'captaincore_configurations', json_encode( $configurations ) ); } + public function update( $items ) { + + $configurations = json_decode( get_site_option( 'captaincore_configurations' ) ); + if ( empty( $configurations ) ) { + $configurations = (object) []; + } + foreach( $items as $key => $value ) { + $configurations->{$key} = $value; + } + + update_site_option( 'captaincore_configurations', json_encode( $configurations ) ); + ( new CaptainCore\Configurations )->sync(); + return $configurations; + } + public function sync() { $command = "configuration sync"; @@ -127,4 +162,12 @@ class Configurations { return $products; } + public static function fetch() { + return ( new Configurations )->get(); + } + + public static function get_json() { + return json_encode( ( new Configurations )->get() ); + } + } \ No newline at end of file diff --git a/templates/admin.php b/templates/admin.php new file mode 100644 index 0000000..c9d9b2a --- /dev/null +++ b/templates/admin.php @@ -0,0 +1,146 @@ + + + + + + + + +
+
+ + + + + + + +
+ +
+ + CaptainCore + + + + + + + Configurations + + + + + + + + + + + + + Save Configurations Unsaved configurations pending + +
+ + {{ response }} + + +
+
+
+
+
+
+
+ \ No newline at end of file