diff --git a/application/admin/library/Auth.php b/application/admin/library/Auth.php index 1be52559..f81f7ddb 100644 --- a/application/admin/library/Auth.php +++ b/application/admin/library/Auth.php @@ -522,7 +522,7 @@ class Auth extends \fast\Auth ); $current = in_array($item['id'], $selectParentIds); $url = $childList ? 'javascript:;' : $item['url']; - $addtabs = $childList || !$url ? "" : (stripos($url, "?") !== false ? "&" : "?") . "ref=" . ($item['menutype'] ? $item['menutype'] : 'addtabs'); + $addtabs = $childList || !$url || stripos($url, '/') === 0 || preg_match('/([?&])ref=/', $url) ? "" : (stripos($url, "?") !== false ? "&" : "?") . "ref=" . ($item['menutype'] ?: 'addtabs'); $childList = str_replace( '" pid="' . $item['id'] . '"', ' ' . ($current ? '' : 'hidden') . '" pid="' . $item['id'] . '"', diff --git a/extend/fast/Tree.php b/extend/fast/Tree.php index 1f9e97fc..0e63a77d 100644 --- a/extend/fast/Tree.php +++ b/extend/fast/Tree.php @@ -323,7 +323,7 @@ class Tree $value = array( '@childlist' => $childlist, '@url' => $childdata || !isset($value['@url']) ? "javascript:;" : $value['@url'], - '@addtabs' => $childdata || !isset($value['@url']) ? "" : (stripos($value['@url'], "?") !== false ? "&" : "?") . "ref=addtabs", + '@addtabs' => $childdata || !isset($value['@url']) || stripos($value['@url'], '/') !== 0 || preg_match('/([?&])ref=/', $value['@url']) ? "" : (stripos($value['@url'], "?") !== false ? "&" : "?") . "ref=addtabs", '@caret' => ($childdata && (!isset($value['@badge']) || !$value['@badge']) ? '' : ''), '@badge' => $value['@badge'] ?? '', '@class' => ($selected ? ' active' : '') . ($disabled ? ' disabled' : '') . ($childdata ? ' treeview' . (config('fastadmin.show_submenu') ? ' treeview-open' : '') : ''),