Fix #6027 - group memberships on users list
authorAlan Knowles <alan@roojs.com>
Tue, 3 Sep 2019 09:37:00 +0000 (17:37 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 3 Sep 2019 09:37:00 +0000 (17:37 +0800)
DataObjects/Core_person.php
Pman.Tab.PersonList.js

index 171e7e6..1e30d4a 100644 (file)
@@ -1134,8 +1134,31 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
                 LENGTH({$this->tableName()}.oath_key) AS length_oath_key
             ");
         }
+        if (isset($q['_with_group_membership'])) {
+            $this->selectAddGroupMemberships();
+        }
         
-        
+    }
+    
+    function selectAddGroupMemberships()
+    {
+        $this->selectAdd("
+            CONCAT ('[',
+                COALESCE((
+                    SELECT
+                        GROUP_CONCAT( 
+                            JSON_QUOTE(core_group.name)
+                        )
+                    FROM
+                        core_group_member
+                    LEFT JOIN
+                        core_group
+                    ON
+                        core_group.id = core_group_member.group_id
+                    WHERE
+                        core_group_member.user_id = core_person.id
+                ), ''),
+            ']') as member_of_json");
     }
     
     function setFromRoo($ar, $roo)
index 34173fa..fcd47cd 100644 (file)
@@ -623,6 +623,25 @@ Pman.Tab.PersonList.prototype = {
           //  width : 150  
         }, cfg);
     },
+    
+    c_group_membership : function(cfg) {
+        cfg = cfg || {};
+        return Roo.apply({
+         //   id : (this.id + '-name').toLowerCase(),
+            header : "Group Membership",
+            dataIndex : 'member_of_json',
+            sortable : false,
+            renderer : function(vv,p,r) {
+                var v = vv ? JSON.parse(vv).join("\n") : '';
+                if(r.data.active != 1){
+                    return String.format('<div style="text-decoration:line-through">{0}</div>', v).split("\n").join("<br/>"); 
+                }
+                return String.format('{0}', v).split("\n").join("<br/>"); 
+            },
+            width : 150  
+        }, cfg);
+    },
+    
      c_company_id_comptype : function(cfg) {
         cfg = cfg || {};
         return Roo.apply({