diff --git a/admin/inc/class.admin_categories.inc.php b/admin/inc/class.admin_categories.inc.php index c4c1daeaa7..7bf6f72a7f 100644 --- a/admin/inc/class.admin_categories.inc.php +++ b/admin/inc/class.admin_categories.inc.php @@ -113,7 +113,6 @@ class admin_categories else { $appname = categories::GLOBAL_APPNAME; - $content['all_cats'] = 'all_no_acl'; } } elseif ($content['appname'] != $appname || !self::$acl_edit || ( $content['owner'] != $GLOBALS['egw_info']['user']['account_id'] && $this->appname != 'admin')) @@ -247,6 +246,8 @@ class admin_categories if($this->appname == 'admin') { $content['access'] = 'public'; + // Allow admins access to all categories as parent + $content['all_cats'] = 'all_no_acl'; $readonlys['owner'] = false; } else { $readonlys['owner'] = true; diff --git a/phpgwapi/inc/class.categories.inc.php b/phpgwapi/inc/class.categories.inc.php index c776832e79..278d0a2685 100644 --- a/phpgwapi/inc/class.categories.inc.php +++ b/phpgwapi/inc/class.categories.inc.php @@ -505,7 +505,7 @@ class categories } // Read access to global categories - if ($needed == EGW_ACL_READ && array_intersect(explode(',',$category['owner']),$this->global_owners) && + if ($needed == EGW_ACL_READ && (array_intersect(explode(',',$category['owner']),$this->global_owners) || $no_acl_check) && ($category['appname'] == self::GLOBAL_APPNAME || $category['appname'] == $this->app_name)) { //echo "
".__METHOD__."($needed,$category[name]) access because global via memberships
\n";