From 14008d143293a2c70312f2e81b2d329cb9ce9a84 Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Fri, 18 Feb 2022 14:44:26 +0100 Subject: [PATCH] dashboard-resource-items Signed-off-by: Michael Kaufmann --- admin_index.php | 32 +++-- customer_index.php | 12 -- .../Froxlor/user/dashboard-item.html.twig | 29 ++++ templates/Froxlor/user/index.html.twig | 126 +++++------------- 4 files changed, 81 insertions(+), 118 deletions(-) create mode 100644 templates/Froxlor/user/dashboard-item.html.twig diff --git a/admin_index.php b/admin_index.php index 02bf93cd..92eb1dff 100644 --- a/admin_index.php +++ b/admin_index.php @@ -65,23 +65,34 @@ if ($page == 'overview') { ]; } $overview_stmt = Database::prepare("SELECT COUNT(*) AS `number_customers`, + SUM(case when `diskspace` > 0 then `diskspace` else 0 end) AS `diskspace_assigned`, SUM(`diskspace_used`) AS `diskspace_used`, + SUM(case when `mysqls` > 0 then `mysqls` else 0 end) AS `mysqls_assigned`, SUM(`mysqls_used`) AS `mysqls_used`, + SUM(case when `emails` > 0 then `emails` else 0 end) AS `emails_assigned`, SUM(`emails_used`) AS `emails_used`, + SUM(case when `email_accounts` > 0 then `email_accounts` else 0 end) AS `email_accounts_assigned`, SUM(`email_accounts_used`) AS `email_accounts_used`, + SUM(case when `email_forwarders` > 0 then `email_forwarders` else 0 end) AS `email_forwarders_assigned`, SUM(`email_forwarders_used`) AS `email_forwarders_used`, + SUM(case when `email_quota` > 0 then `email_quota` else 0 end) AS `email_quota_assigned`, SUM(`email_quota_used`) AS `email_quota_used`, + SUM(case when `ftps` > 0 then `ftps` else 0 end) AS `ftps_assigned`, SUM(`ftps_used`) AS `ftps_used`, + SUM(case when `subdomains` > 0 then `subdomains` else 0 end) AS `subdomains_assigned`, SUM(`subdomains_used`) AS `subdomains_used`, + SUM(case when `traffic` > 0 then `traffic` else 0 end) AS `traffic_assigned`, SUM(`traffic_used`) AS `traffic_used` FROM `" . TABLE_PANEL_CUSTOMERS . "`" . ($userinfo['customers_see_all'] ? '' : " WHERE `adminid` = :adminid ")); $overview = Database::pexecute_first($overview_stmt, $params); - $dec_places = Settings::Get('panel.decimal_places'); - $overview['traffic_bytes_used'] = $overview['traffic_used'] * 1024; - $overview['traffic_used'] = \Froxlor\PhpHelper::sizeReadable($overview['traffic_used'] * 1024, null, 'bi'); + $userinfo['diskspace_bytes'] = ($userinfo['diskspace'] > -1) ? $userinfo['diskspace'] * 1024 : -1; + $overview['diskspace_bytes'] = $overview['diskspace_assigned'] * 1024; $overview['diskspace_bytes_used'] = $overview['diskspace_used'] * 1024; - $overview['diskspace_used'] = \Froxlor\PhpHelper::sizeReadable($overview['diskspace_used'] * 1024, null, 'bi'); + + $userinfo['traffic_bytes'] = ($userinfo['traffic'] > -1) ? $userinfo['traffic'] * 1024 : - 1; + $overview['traffic_bytes'] = $overview['traffic_assigned'] * 1024; + $overview['traffic_bytes_used'] = $overview['traffic_used'] * 1024; $number_domains_stmt = Database::prepare(" SELECT COUNT(*) AS `number_domains` FROM `" . TABLE_PANEL_DOMAINS . "` @@ -111,19 +122,6 @@ if ($page == 'overview') { $isnewerversion = 0; } - $dec_places = Settings::Get('panel.decimal_places'); - // get everything in bytes for the percentage calculation on the dashboard - $userinfo['diskspace_bytes'] = ($userinfo['diskspace'] > -1) ? $userinfo['diskspace'] * 1024 : -1; - $userinfo['diskspace_bytes_used'] = $userinfo['diskspace_used'] * 1024; - $userinfo['traffic_bytes'] = ($userinfo['traffic'] > -1) ? $userinfo['traffic'] * 1024 : - 1; - $userinfo['traffic_bytes_used'] = $userinfo['traffic_used'] * 1024; - - $userinfo['diskspace'] = ($userinfo['diskspace'] > -1) ? \Froxlor\PhpHelper::sizeReadable($userinfo['diskspace'] * 1024, null, 'bi') : - 1; - $userinfo['diskspace_used'] = \Froxlor\PhpHelper::sizeReadable($userinfo['diskspace_used'] * 1024, null, 'bi'); - $userinfo['traffic'] = ($userinfo['traffic'] > -1) ? \Froxlor\PhpHelper::sizeReadable($userinfo['traffic'] * 1024, null, 'bi') : - 1; - $userinfo['traffic_used'] = \Froxlor\PhpHelper::sizeReadable($userinfo['traffic_used'] * 1024, null, 'bi'); - $userinfo = \Froxlor\PhpHelper::strReplaceArray('-1', $lng['customer']['unlimited'], $userinfo, 'customers domains diskspace diskspace_bytes traffic traffic_bytes mysqls emails email_accounts email_forwarders email_quota ftps subdomains'); - $cron_last_runs = \Froxlor\System\Cronjob::getCronjobsLastRun(); $outstanding_tasks = \Froxlor\System\Cronjob::getOutstandingTasks(); diff --git a/customer_index.php b/customer_index.php index 48b50534..0de20254 100644 --- a/customer_index.php +++ b/customer_index.php @@ -96,24 +96,12 @@ if ($page == 'overview') { $userinfo['traffic_bytes_used'] = $userinfo['traffic_used'] * 1024; if ($usages) { - $userinfo['diskspace_used'] = \Froxlor\PhpHelper::sizeReadable($usages['webspace'] * 1024, null, 'bi'); - $userinfo['mailspace_used'] = \Froxlor\PhpHelper::sizeReadable($usages['mail'] * 1024, null, 'bi'); - $userinfo['dbspace_used'] = \Froxlor\PhpHelper::sizeReadable($usages['mysql'] * 1024, null, 'bi'); - $userinfo['total_used'] = \Froxlor\PhpHelper::sizeReadable(($usages['webspace'] + $usages['mail'] + $usages['mysql']) * 1024, null, 'bi'); $userinfo['diskspace_bytes_used'] = $usages['webspace'] * 1024; $userinfo['total_bytes_used'] = ($usages['webspace'] + $usages['mail'] + $usages['mysql']) * 1024; } else { - $userinfo['diskspace_used'] = 0; - $userinfo['mailspace_used'] = 0; - $userinfo['dbspace_used'] = 0; - $userinfo['total_used'] = 0; $userinfo['diskspace_bytes_used'] = 0; $userinfo['total_bytes_used'] = 0; } - $userinfo['diskspace'] = ($userinfo['diskspace'] > -1) ? \Froxlor\PhpHelper::sizeReadable($userinfo['diskspace'] * 1024, null, 'bi') : - 1; - $userinfo['traffic'] = ($userinfo['traffic'] > -1) ? \Froxlor\PhpHelper::sizeReadable($userinfo['traffic'] * 1024, null, 'bi') : - 1; - $userinfo['traffic_used'] = \Froxlor\PhpHelper::sizeReadable($userinfo['traffic_used'] * 1024, null, 'bi'); - $userinfo = \Froxlor\PhpHelper::strReplaceArray('-1', $lng['customer']['unlimited'], $userinfo, 'diskspace diskspace_bytes traffic traffic_bytes mysqls emails email_accounts email_forwarders email_quota ftps subdomains'); UI::Twig()->addGlobal('userinfo', $userinfo); UI::TwigBuffer('user/index.html.twig', [ diff --git a/templates/Froxlor/user/dashboard-item.html.twig b/templates/Froxlor/user/dashboard-item.html.twig new file mode 100644 index 00000000..20ec5d29 --- /dev/null +++ b/templates/Froxlor/user/dashboard-item.html.twig @@ -0,0 +1,29 @@ +{% macro ditem(lngstr, available, used, assigned = null, formatbytes = false) %} +
+
+
+
{{ lng(lngstr) }}
+
+ {% if formatbytes %}{{ used|formatBytes }}{% else %}{{ used }}{% endif %}/{% if available < 0 %}{{ lng('customer.unlimited') }}{% else %}{% if formatbytes %}{{ available|formatBytes }}{% else %}{{ available }}{% endif %}{% endif %} +
+
+
+ {% set usageperc = 1 %} + {% if available > 0 %} + {% set usageperc = (used / available) * 100|round %} + {% endif %} +
+
+ {% if assigned is not empty %} +
+
+
+ {% endif %} +
+
+{% endmacro %} diff --git a/templates/Froxlor/user/index.html.twig b/templates/Froxlor/user/index.html.twig index 5fe0e87b..7957a609 100644 --- a/templates/Froxlor/user/index.html.twig +++ b/templates/Froxlor/user/index.html.twig @@ -20,92 +20,33 @@ {{ lng('panel.usage_statistics') }}
-
- {# admin-resources #} +
+ {% import "Froxlor/user/dashboard-item.html.twig" as dashboard %} {% if userinfo.adminsession == 1 %} -
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
- {% else %} + {# admin-resources #} + {{ dashboard.ditem('admin.customers', userinfo.customers, overview.number_customers) }} + {{ dashboard.ditem('admin.domains', userinfo.domains, overview.number_domains) }} + + {{ dashboard.ditem('customer.diskspace', userinfo.diskspace_bytes, overview.diskspace_bytes_used, overview.diskspace_bytes, true) }} + {{ dashboard.ditem('customer.traffic', userinfo.traffic_bytes, overview.traffic_bytes_used, overview.traffic_bytes, true) }} + + {{ dashboard.ditem('customer.subdomains', userinfo.subdomains, overview.subdomains_used, overview.subdomains_assigned) }} + {{ dashboard.ditem('customer.mysqls', userinfo.mysqls, overview.mysqls_used, overview.mysqls_assigned) }} + {{ dashboard.ditem('customer.emails', userinfo.emails, overview.emails_used, overview.emails_assigned) }} + {{ dashboard.ditem('customer.accounts', userinfo.email_accounts, overview.email_accounts_used, overview.email_accounts_assigned) }} + {{ dashboard.ditem('customer.forwarders', userinfo.email_forwarders, overview.email_forwarders_used, overview.email_forwarders_assigned) }} + {{ dashboard.ditem('customer.ftps', userinfo.ftps, overview.ftps_used, overview.ftps_assigned) }} + {% else %} {# customer-resources #} -
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
-
-
-
{{ lng('admin.customers') }} {{ overview.number_customers }}/{{ userinfo.customers }}
-
-
-
-
-
+ {{ dashboard.ditem('customer.diskspace', userinfo.diskspace_bytes, userinfo.diskspace_bytes_used, null, true) }} + {{ dashboard.ditem('customer.traffic', userinfo.traffic_bytes, userinfo.traffic_bytes_used, null, true) }} + + {{ dashboard.ditem('customer.subdomains', userinfo.subdomains, userinfo.subdomains_used) }} + {{ dashboard.ditem('customer.mysqls', userinfo.mysqls, userinfo.mysqls_used) }} + {{ dashboard.ditem('customer.emails', userinfo.emails, userinfo.emails_used) }} + {{ dashboard.ditem('customer.accounts', userinfo.email_accounts, userinfo.email_accounts_used) }} + {{ dashboard.ditem('customer.forwarders', userinfo.email_forwarders, userinfo.email_forwarders_used) }} + {{ dashboard.ditem('customer.ftps', userinfo.ftps, userinfo.ftps_used) }} {% endif %}
@@ -122,15 +63,22 @@
{{ lng('tasks.outstanding_tasks') }}
{% for task in outstanding_tasks %} - {{ task.desc }}
+ + {{ task.desc }}
{% endfor %}
{% for cronrun in cron_last_runs %} -
  • -
    {{ cronrun.title }}
    - {% if cronrun.lastrun > 0 %}{{ cronrun.lastrun|date('d.m.Y H:i') }}{% else %}{{ lng('cronjobs.notyetrun') }}{% endif %} -
  • +
  • +
    {{ cronrun.title }}
    + + {% if cronrun.lastrun > 0 %} + {{ cronrun.lastrun|date('d.m.Y H:i') }} + {% else %} + {{ lng('cronjobs.notyetrun') }} + {% endif %} + +
  • {% endfor %}