From 41a087630b9d00f668e47203ad9ca7b082447320 Mon Sep 17 00:00:00 2001
From: FreddleSpl0it
Date: Fri, 10 Mar 2023 15:53:09 +0100
Subject: [PATCH] [Web] add app hide option
---
data/web/inc/functions.customize.inc.php | 6 +++--
data/web/inc/header.inc.php | 24 +++++++++++++++++--
data/web/inc/vars.inc.php | 4 +++-
data/web/js/site/admin.js | 14 +++++++++++
.../templates/admin/tab-config-customize.twig | 12 ++++++++++
data/web/templates/index.twig | 14 +++++++----
6 files changed, 64 insertions(+), 10 deletions(-)
diff --git a/data/web/inc/functions.customize.inc.php b/data/web/inc/functions.customize.inc.php
index ff739693..01460876 100644
--- a/data/web/inc/functions.customize.inc.php
+++ b/data/web/inc/functions.customize.inc.php
@@ -104,12 +104,14 @@ function customize($_action, $_item, $_data = null) {
$apps = (array)$_data['app'];
$links = (array)$_data['href'];
$user_links = (array)$_data['user_href'];
+ $hide = (array)$_data['hide'];
$out = array();
- if (count($apps) == count($links) && count($apps) == count($user_links)) {
+ if (count($apps) == count($links) && count($apps) == count($user_links) && count($apps) == count($hide)) {
for ($i = 0; $i < count($apps); $i++) {
$out[] = array($apps[$i] => array(
'link' => $links[$i],
- 'user_link' => $user_links[$i]
+ 'user_link' => $user_links[$i],
+ 'hide' => ($hide[$i] === '0' || $hide[$i] === 0) ? false : true
));
}
try {
diff --git a/data/web/inc/header.inc.php b/data/web/inc/header.inc.php
index 73548620..5918cabe 100644
--- a/data/web/inc/header.inc.php
+++ b/data/web/inc/header.inc.php
@@ -31,11 +31,29 @@ if(!file_exists($CSSPath)) {
}
$mailcow_apps_processed = $MAILCOW_APPS;
+$app_links = customize('get', 'app_links');
+$app_links_processed = $app_links;
+$hide_mailcow_apps = true;
for ($i = 0; $i < count($mailcow_apps_processed); $i++) {
+ if ($hide_mailcow_apps && !$mailcow_apps_processed[$i]['hide']){
+ $hide_mailcow_apps = false;
+ }
if (!empty($_SESSION['mailcow_cc_username'])){
$mailcow_apps_processed[$i]['user_link'] = str_replace('%u', $_SESSION['mailcow_cc_username'], $mailcow_apps_processed[$i]['user_link']);
}
}
+if ($app_links_processed){
+ for ($i = 0; $i < count($app_links_processed); $i++) {
+ $key = array_key_first($app_links_processed[$i]);
+ if ($hide_mailcow_apps && !$app_links_processed[$i][$key]['hide']){
+ $hide_mailcow_apps = false;
+ }
+ if (!empty($_SESSION['mailcow_cc_username'])){
+ $app_links_processed[$i][$key]['user_link'] = str_replace('%u', $_SESSION['mailcow_cc_username'], $app_links_processed[$i][$key]['user_link']);
+ }
+ }
+}
+
$globalVariables = [
@@ -52,9 +70,11 @@ $globalVariables = [
'lang' => $lang,
'skip_sogo' => (getenv('SKIP_SOGO') == 'y'),
'allow_admin_email_login' => (getenv('ALLOW_ADMIN_EMAIL_LOGIN') == 'n'),
- 'mailcow_apps_processed' => $mailcow_apps_processed,
+ 'hide_mailcow_apps' => $hide_mailcow_apps,
'mailcow_apps' => $MAILCOW_APPS,
- 'app_links' => customize('get', 'app_links'),
+ 'mailcow_apps_processed' => $mailcow_apps_processed,
+ 'app_links' => $app_links,
+ 'app_links_processed' => $app_links_processed,
'is_root_uri' => (parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) == '/'),
'uri' => $_SERVER['REQUEST_URI'],
'last_login' => last_login('get', $_SESSION['mailcow_cc_username'], 7, 0)['ui']['time']
diff --git a/data/web/inc/vars.inc.php b/data/web/inc/vars.inc.php
index 5e6d72e7..a77a3233 100644
--- a/data/web/inc/vars.inc.php
+++ b/data/web/inc/vars.inc.php
@@ -119,7 +119,9 @@ $SHOW_DKIM_PRIV_KEYS = false;
$MAILCOW_APPS = array(
array(
'name' => 'Webmail',
- 'link' => '/SOGo/',
+ 'link' => '/SOGo/so/',
+ 'user_link' => '/sogo-auth.php?login=%u',
+ 'hide' => true
)
);
diff --git a/data/web/js/site/admin.js b/data/web/js/site/admin.js
index 192a6f15..160ad7ee 100644
--- a/data/web/js/site/admin.js
+++ b/data/web/js/site/admin.js
@@ -706,20 +706,34 @@ jQuery(function($){
}
})
// App links
+ // setup eventlistener
+ setAppHideEvent();
+ function setAppHideEvent(){
+ $('.app_hide').off('change');
+ $('.app_hide').on('change', function (e) {
+ var value = $(this).is(':checked') ? '1' : '0';
+ console.log(value)
+ $(this).parent().children(':first-child').val(value);
+ })
+ }
function add_table_row(table_id, type) {
var row = $(' ');
if (type == "app_link") {
cols = ' ';
cols += ' ';
cols += ' ';
+ cols += '
';
cols += '' + lang.remove_row + ' ';
} else if (type == "f2b_regex") {
cols = ' ';
cols += ' ';
cols += '' + lang.remove_row + ' ';
}
+
row.append(cols);
table_id.append(row);
+ if (type == "app_link")
+ setAppHideEvent();
}
$('#app_link_table').on('click', 'tr a', function (e) {
e.preventDefault();
diff --git a/data/web/templates/admin/tab-config-customize.twig b/data/web/templates/admin/tab-config-customize.twig
index 7a95be30..e2f4b0f6 100644
--- a/data/web/templates/admin/tab-config-customize.twig
+++ b/data/web/templates/admin/tab-config-customize.twig
@@ -55,6 +55,7 @@
{{ lang.admin.app_name }}
{{ lang.admin.link }}
{{ lang.admin.user_link }}
+ {{ lang.admin.app_hide }}
{% for row in app_links %}
@@ -63,6 +64,12 @@
+
+
+
+
+
+
{{ lang.admin.remove_row }}
{% endfor %}
@@ -72,6 +79,11 @@
+
+
+
+
+
{{ lang.admin.remove_row }}
{% endfor %}
diff --git a/data/web/templates/index.twig b/data/web/templates/index.twig
index 8b8a73bc..e66b3335 100644
--- a/data/web/templates/index.twig
+++ b/data/web/templates/index.twig
@@ -67,21 +67,25 @@
{{ lang.login.delayed|format(login_delay) }}
{% endif %}
- {% if not oauth2_request and (mailcow_apps or app_links) %}
+ {% if not oauth2_request and (mailcow_apps or app_links) and not hide_mailcow_apps %}
{{ ui_texts.apps_name|raw }}
{% for app in mailcow_apps %}
- {% if not skip_sogo or not is_uri('SOGo', app.link) %}
-
+ {% if not app.hide %}
+ {% if not skip_sogo or not is_uri('SOGo', app.link) %}
+
+ {% endif %}
{% endif %}
{% endfor %}
{% for row in app_links %}
{% for key, val in row %}
+ {% if not val.hide %}
+ {% endif %}
{% endfor %}
{% endfor %}