diff --git a/data/web/inc/functions.customize.inc.php b/data/web/inc/functions.customize.inc.php index 6025d97d..ff739693 100644 --- a/data/web/inc/functions.customize.inc.php +++ b/data/web/inc/functions.customize.inc.php @@ -103,10 +103,14 @@ function customize($_action, $_item, $_data = null) { case 'app_links': $apps = (array)$_data['app']; $links = (array)$_data['href']; + $user_links = (array)$_data['user_href']; $out = array(); - if (count($apps) == count($links)) { + if (count($apps) == count($links) && count($apps) == count($user_links)) { for ($i = 0; $i < count($apps); $i++) { - $out[] = array($apps[$i] => $links[$i]); + $out[] = array($apps[$i] => array( + 'link' => $links[$i], + 'user_link' => $user_links[$i] + )); } try { $redis->set('APP_LINKS', json_encode($out)); @@ -236,7 +240,22 @@ function customize($_action, $_item, $_data = null) { ); return false; } - return ($app_links) ? $app_links : false; + + if (empty($app_links)){ + return false; + } + + foreach($app_links as $key => $value){ + foreach($value as $app => $details){ + if (empty($details['user_link']) || empty($_SESSION['mailcow_cc_username'])){ + $app_links[$key][$app]['user_link'] = $app_links[$key][$app]['link']; + } else { + $app_links[$key][$app]['user_link'] = str_replace('%u', $_SESSION['mailcow_cc_username'], $app_links[$key][$app]['user_link']); + } + } + } + + return $app_links; break; case 'main_logo': try { diff --git a/data/web/inc/header.inc.php b/data/web/inc/header.inc.php index f62819a2..73548620 100644 --- a/data/web/inc/header.inc.php +++ b/data/web/inc/header.inc.php @@ -30,6 +30,14 @@ if(!file_exists($CSSPath)) { cleanupCSS($hash); } +$mailcow_apps_processed = $MAILCOW_APPS; +for ($i = 0; $i < count($mailcow_apps_processed); $i++) { + 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']); + } +} + + $globalVariables = [ 'mailcow_hostname' => getenv('MAILCOW_HOSTNAME'), 'mailcow_locale' => @$_SESSION['mailcow_locale'], @@ -44,6 +52,7 @@ $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, 'mailcow_apps' => $MAILCOW_APPS, 'app_links' => customize('get', 'app_links'), 'is_root_uri' => (parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) == '/'), diff --git a/data/web/js/site/admin.js b/data/web/js/site/admin.js index 23ef1d25..192a6f15 100644 --- a/data/web/js/site/admin.js +++ b/data/web/js/site/admin.js @@ -711,6 +711,7 @@ jQuery(function($){ if (type == "app_link") { cols = ''; cols += ''; + cols += ''; cols += '' + lang.remove_row + ''; } else if (type == "f2b_regex") { cols = ''; diff --git a/data/web/templates/admin/tab-config-customize.twig b/data/web/templates/admin/tab-config-customize.twig index 766c0b6a..7a95be30 100644 --- a/data/web/templates/admin/tab-config-customize.twig +++ b/data/web/templates/admin/tab-config-customize.twig @@ -54,13 +54,15 @@ {{ lang.admin.app_name }} {{ lang.admin.link }} + {{ lang.admin.user_link }}   {% for row in app_links %} {% for key, val in row %} - + + {{ lang.admin.remove_row }} {% endfor %} @@ -69,6 +71,7 @@ + {{ lang.admin.remove_row }} {% endfor %} diff --git a/data/web/templates/base.twig b/data/web/templates/base.twig index 06c47bd2..7b38e80f 100644 --- a/data/web/templates/base.twig +++ b/data/web/templates/base.twig @@ -29,7 +29,7 @@
{% block navbar %} -