+
-
\ No newline at end of file
+
diff --git a/vuejs/client/src/components/Widget/Flex.vue b/vuejs/client/src/components/Widget/Flex.vue
index 2c02b86f2..427dc77a0 100644
--- a/vuejs/client/src/components/Widget/Flex.vue
+++ b/vuejs/client/src/components/Widget/Flex.vue
@@ -1,5 +1,5 @@
-
diff --git a/vuejs/client/src/components/Widget/Grid.vue b/vuejs/client/src/components/Widget/Grid.vue
index 3688617ef..3379e06fb 100644
--- a/vuejs/client/src/components/Widget/Grid.vue
+++ b/vuejs/client/src/components/Widget/Grid.vue
@@ -1,6 +1,4 @@
+
+
+
+
+
+
+
+
+
diff --git a/vuejs/client/src/components/Widget/Stat.vue b/vuejs/client/src/components/Widget/Stat.vue
index 078ce157f..f3cc5532e 100644
--- a/vuejs/client/src/components/Widget/Stat.vue
+++ b/vuejs/client/src/components/Widget/Stat.vue
@@ -1,4 +1,5 @@
-
+
diff --git a/vuejs/client/src/lang/en.json b/vuejs/client/src/lang/en.json
index a9128eb04..640bc6bba 100644
--- a/vuejs/client/src/lang/en.json
+++ b/vuejs/client/src/lang/en.json
@@ -72,6 +72,10 @@
"dashboard_banner_link_text_1": "Check BunkerWeb Panel",
"dashboard_banner_link_text_2": "demo wep app !",
"dashboard_banner_link_text_3": "website !",
+ "dashboard_status_success": "status active or success.",
+ "dashboard_status_error": "status inactive or error.",
+ "dashboard_status_warning": "status warning or alert.",
+ "dashboard_status_info": "status loading or waiting or unknown.",
"action_send": "send {name}",
"action_disable": "disable {name}",
"action_enable": "enable {name}",
@@ -103,5 +107,11 @@
"home_all_methods_included": "all methods included",
"home_plugins": "plugins",
"home_no_error": "no error",
- "home_errors_found": "errors found"
+ "home_errors_found": "errors found",
+ "instance_hostname": "hostname",
+ "instances_method": "method",
+ "instances_port": "port",
+ "instances_status": "status",
+ "instances_active": "active",
+ "instances_inactive": "inactive"
}
diff --git a/vuejs/client/src/lang/fr.json b/vuejs/client/src/lang/fr.json
index 1cfc3dd78..640bc6bba 100644
--- a/vuejs/client/src/lang/fr.json
+++ b/vuejs/client/src/lang/fr.json
@@ -1,54 +1,53 @@
{
- "dashboard_logo_alt": "Image du logo BunkerWeb",
- "dashboard_logo_link_label": "Rediriger vers la page d'accueil",
+ "dashboard_logo_alt": "BunkerWeb logo image",
+ "dashboard_logo_link_label": "Redirect to home page",
"dashboard_bw": "BunkerWeb",
- "dashboard_docs": "documents",
+ "dashboard_docs": "docs",
"dashboard_blog": "blog",
- "dashboard_privacy": "confidentialité",
- "dashboard_license": "licence",
- "dashboard_sitemap": "plan du site",
- "dashboard_default": "défautt",
+ "dashboard_privacy": "privacy",
+ "dashboard_license": "license",
+ "dashboard_sitemap": "sitemap",
+ "dashboard_default": "default",
"dashboard_info": "info",
- "dashboard_filter": "filtres",
- "dashboard_advanced": "avancé",
- "dashboard_loading": "chargement",
- "dashboard_lang_dropdown_button_desc": "Basculer entre cacher/afficher le groupe de boutons radio (menu déroulant) pour changer la langue.",
- "dashboard_home": "accueil",
+ "dashboard_filter": "filters",
+ "dashboard_advanced": "advanced",
+ "dashboard_loading": "loading",
+ "dashboard_lang_dropdown_button_desc": "Toggle hide/show radio group (dropdown) to change langage.",
+ "dashboard_manage_account": "manage account",
+ "dashboard_home": "home",
"dashboard_instances": "instances",
- "dashboard_global_config": "config globale",
+ "dashboard_global_config": "global config",
"dashboard_services": "services",
"dashboard_configs": "configs",
"dashboard_plugins": "plugins",
"dashboard_jobs": "jobs",
"dashboard_bans": "bans",
"dashboard_actions": "actions",
- "dashboard_account": "compte",
- "dashboard_reports": "rapports",
+ "dashboard_account": "account",
+ "dashboard_reports": "reports",
"dashboard_cache": "cache",
- "dashboard_logs": "journaux",
- "dashboard_feedback_toggle_sidebar": "Basculer la barre latérale de feedback.",
- "dashboard_feedback_close_sidebar": "Fermer la barre latérale de feedback.",
- "dashboard_feedback_title": "Feedback",
- "dashboard_feedback_subtitle": "Actions BunkerWeb",
- "dashboard_menu_toggle_sidebar": "Basculer la barre latérale du menu.",
- "dashboard_menu_close_sidebar": "Fermer la barre latérale du menu.",
- "dashboard_menu_twitter_label": "Rediriger vers le Twitter de BunkerWeb",
- "dashboard_menu_linkedin_label": "Rediriger vers le Linkedin de BunkerWeb",
- "dashboard_menu_discord_label": "Rediriger vers le Discord de BunkerWeb",
- "dashboard_menu_github_label": "Rediriger vers le Github de BunkerWeb",
- "dashboard_menu_plugins_title": "Pages des plugins",
- "dashboard_menu_plugins_none": "Vous voulez des plugins personnalisés ?",
- "dashboard_menu_plugins_none_doc": "consulter la documentation",
- "dashboard_menu_mode_light": "mode clair",
- "dashboard_menu_mode_dark": "mode sombre",
- "dashboard_menu_log_out": "se déconnecter",
+ "dashboard_logs": "logs",
+ "dashboard_feedback_toggle_sidebar": "Toggle feedback sidebar.",
+ "dashboard_feedback_close_sidebar": "Close feedback sidebar.",
+ "dashboard_feedback_title": "feedback",
+ "dashboard_feedback_subtitle": "BunkerWeb actions",
+ "dashboard_menu_toggle_sidebar": "Toggle menu sidebar.",
+ "dashboard_menu_close_sidebar": "Close menu sidebar.",
+ "dashboard_menu_twitter_label": "Redirect to BunkerWeb Twitter",
+ "dashboard_menu_linkedin_label": "Redirect to BunkerWeb Linkedin",
+ "dashboard_menu_discord_label": "Redirect to BunkerWeb Discord",
+ "dashboard_menu_github_label": "Redirect to BunkerWeb Github",
+ "dashboard_menu_plugins_title": "plugin pages",
+ "dashboard_menu_mode_light": "light mode",
+ "dashboard_menu_mode_dark": "dark mode",
+ "dashboard_menu_log_out": "log out",
"dashboard_ui": "ui",
"dashboard_scheduler": "scheduler",
"dashboard_autoconf": "autoconf",
"dashboard_core": "core",
"dashboard_global": "global",
- "dashboard_news_toggle_sidebar": "Basculer la barre latérale des nouvelles.",
- "dashboard_news_close_sidebar": "Fermer la barre latérale des nouvelles.",
+ "dashboard_news_toggle_sidebar": "Toggle news sidebar.",
+ "dashboard_news_close_sidebar": "Close news sidebar.",
"dashboard_news_title": "news",
"dashboard_news_subtitle": "Stay up to date !",
"dashboard_news_fetch_error": "Impossible to retrieve news",
@@ -73,22 +72,10 @@
"dashboard_banner_link_text_1": "Check BunkerWeb Panel",
"dashboard_banner_link_text_2": "demo wep app !",
"dashboard_banner_link_text_3": "website !",
- "home_version_is_latest": "is the latest version",
- "home_version_latest_version": "latest version",
- "home_version": "version",
- "home_internal": "internal",
- "home_external": "external",
- "home_card_link_label": "Redirect to page with related data.",
- "instances_hostname": "hostname",
- "instances_hostname_placeholder": "bwapi",
- "instances_method": "method",
- "instances_port": "port",
- "instances_port_placeholder": "5000",
- "instances_active": "Instance is active.",
- "instances_inactive": "Instance is inactive.",
- "instances_modal_delete_msg": "Are you sure to delete instance with hostname {hostname} ?",
- "instances_server_name": "server name",
- "instances_server_name_placeholder": "www.example.com",
+ "dashboard_status_success": "status active or success.",
+ "dashboard_status_error": "status inactive or error.",
+ "dashboard_status_warning": "status warning or alert.",
+ "dashboard_status_info": "status loading or waiting or unknown.",
"action_send": "send {name}",
"action_disable": "disable {name}",
"action_enable": "enable {name}",
@@ -105,5 +92,26 @@
"action_ping": "ping {name}",
"action_reload": "reload {name}",
"action_upload": "upload {name}",
- "action_delete_all": "delete all {name}"
-}
\ No newline at end of file
+ "action_delete_all": "delete all {name}",
+ "home_version": "version",
+ "home_all_features_available": "all features are available",
+ "home_upgrade_pro": "upgrade to pro",
+ "home_pro": "pro",
+ "home_free": "free",
+ "home_version_number": "version number",
+ "home_latest_version": "latest version",
+ "home_upgrade_available": "upgrade available",
+ "home_instances": "instances",
+ "home_total_number": "total number",
+ "home_services": "services",
+ "home_all_methods_included": "all methods included",
+ "home_plugins": "plugins",
+ "home_no_error": "no error",
+ "home_errors_found": "errors found",
+ "instance_hostname": "hostname",
+ "instances_method": "method",
+ "instances_port": "port",
+ "instances_status": "status",
+ "instances_active": "active",
+ "instances_inactive": "inactive"
+}
diff --git a/vuejs/client/src/pages/builder/Builder.vue b/vuejs/client/src/pages/builder/Builder.vue
index 115c2c5ba..cca400b53 100644
--- a/vuejs/client/src/pages/builder/Builder.vue
+++ b/vuejs/client/src/pages/builder/Builder.vue
@@ -23,7 +23,6 @@ const builder = [
{
// we are starting with the top level container name
// this can be a "card", "modal", "table"... etc
- type: "card",
containerColumns: { pc: 12, tablet: 12, mobile: 12 },
// Each widget need a name (here type) and associated data
// We need to send specific data for each widget type
@@ -71,7 +70,6 @@ const builder = [
containerClass: "", // tailwind css grid class (items-start, ...)
containerColumns: { pc: 12, tablet: 12, mobile: 12 },
// container title
- title: "My awesome card",
// Each widget need a name (here type) and associated data
// We need to send specific data for each widget type
widgets: [
@@ -93,8 +91,8 @@ const builder = [
{
type: "ContentStat",
data: {
- value: "20",
- valueClass: "col-span-12",
+ stat: "20",
+ statClass: "col-span-12",
},
},
{
@@ -106,12 +104,58 @@ const builder = [
},
],
},
+ {
+ // we are starting with the top level container name
+ // this can be a "card", "modal", "table"... etc
+ type: "card",
+ containerClass: "", // tailwind css grid class (items-start, ...)
+ containerColumns: { pc: 12, tablet: 12, mobile: 12 },
+ // container title
+ // Each widget need a name (here type) and associated data
+ // We need to send specific data for each widget type
+ widgets: [
+ {
+ type: "Instance",
+ data: {
+ details: [
+ { key: "HOSTNAME", value: "www.example.com" },
+ { key: "METHOD", value: "UI" },
+ { key: "PORT", value: "1084" },
+ { key: "STATUS", value: "active" },
+ ],
+ status: "success",
+ title: "www.example.com",
+ buttons: [
+ {
+ text: "reload",
+ color: "edit",
+ size: "normal",
+ },
+ {
+ text: "Stop",
+ color: "error",
+ size: "normal",
+ eventAttr: {
+ store: "modal",
+ default: "close",
+ value: "open",
+ target: "modal_id",
+ valueExpanded: "open",
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
];
-
-
+
diff --git a/vuejs/client/src/pages/instances/Instances.vue b/vuejs/client/src/pages/instances/Instances.vue
new file mode 100644
index 000000000..9c6fcca37
--- /dev/null
+++ b/vuejs/client/src/pages/instances/Instances.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/vuejs/client/src/pages/instances/index.html b/vuejs/client/src/pages/instances/index.html
new file mode 100644
index 000000000..85dd6e54a
--- /dev/null
+++ b/vuejs/client/src/pages/instances/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
BunkerWeb | DASHBOARD
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vuejs/client/src/pages/instances/instances.js b/vuejs/client/src/pages/instances/instances.js
new file mode 100644
index 000000000..0d4541799
--- /dev/null
+++ b/vuejs/client/src/pages/instances/instances.js
@@ -0,0 +1,11 @@
+import { createApp } from "vue";
+import { createPinia } from "pinia";
+import { getI18n } from "@utils/lang.js";
+import Instances from "./Instances.vue";
+
+const pinia = createPinia();
+
+createApp(Instances)
+ .use(pinia)
+ .use(getI18n(["dashboard", "action", "instances"]))
+ .mount("#app");
diff --git a/vuejs/client/src/utils/lang.js b/vuejs/client/src/utils/lang.js
index afc773da5..37c7f281f 100644
--- a/vuejs/client/src/utils/lang.js
+++ b/vuejs/client/src/utils/lang.js
@@ -14,7 +14,7 @@ import fr from "@lang/fr.json" assert { type: "json" };
const availablesLangs = ["en", "fr"];
function getAllLang() {
- return { en: en, fr : fr };
+ return { en: en, fr: fr };
}
function getAllLangCurrPage(pagesArr) {
@@ -42,6 +42,8 @@ export function getI18n(pagesArr = []) {
fallbackLocale: "en",
messages, // set locale messages
availableLocales: availablesLangs,
+ fallbackWarn: false,
+ missingWarn: false,
});
return i18n;
@@ -68,7 +70,7 @@ export function getLocalLang() {
navigator.languages &&
navigator.languages > 0 &&
availablesLangs.indexOf(
- navigator.languages[0].split("-")[0].toLowerCase(),
+ navigator.languages[0].split("-")[0].toLowerCase()
) !== -1
) {
return navigator.languages[0].split("-")[0].toLowerCase();