(function(window) { var Gitana = window.Gitana; Gitana.DomainGroup = { TYPE: "GROUP", /** * Reads the group node for this user. * * @param branch * @param createIfNotFound * * @chained person * @public */ readGroupNode: function(branch, createIfNotFound) { // what we hand back var result = this.subchain(this.getFactory().node(branch, "n:group")); // work result.subchain(branch).readGroupNode(this.getId(), createIfNotFound).then(function() { result.handleResponse(this); }); return result; }, /** * Acquires a list of all of the members who are in this group. * * @chained principal map * * @public * * @param {String} filter type of principal to hand back ("user" or "group") * @param {Boolean} indirect whether to include members that inherit through child groups * @param [Object] pagination */ listMembers: function(filter, indirect, pagination) { var self = this; var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } if (filter) { params["filter"] = filter; } if (indirect) { params["indirect"] = true; } var uriFunction = function() { return self.getUri() + "/members"; }; var chainable = this.getFactory().domainPrincipalMap(this.getDomain()); return this.chainGet(chainable, uriFunction, params); }, /** * Acquires a list of all of the users who are in this group. * * @chained principal map * * @public * * @param [Boolean] inherit whether to include members that inherit through child groups * @param [Object] pagination */ listUsers: function() { var inherit = false; var pagination = null; var args = Gitana.makeArray(arguments); var a1 = args.shift(); if (Gitana.isBoolean(a1)) { inherit = a1; pagination = args.shift(); } else { pagination = args.shift(); } return this.listMembers("user", inherit, pagination); }, /** * Acquires a list of all of the groups who are in this group. * * @chained principal map * * @public * * @param [Boolean] inherit whether to include members that inherit through child groups * @param [Object] pagination */ listGroups: function() { var inherit = false; var pagination = null; var args = Gitana.makeArray(arguments); var a1 = args.shift(); if (Gitana.isBoolean(a1)) { inherit = a1; pagination = args.shift(); } else { pagination = a1; } return this.listMembers("group", inherit, pagination); }, /** * Adds a principal as a member of this group. * * @chained current group * * @public * * @param {Gitana.Principal|String} principal the principal or the principal id */ addMember: function(principal) { var principalDomainQualifiedId = this.extractPrincipalDomainQualifiedId(principal); return this.chainPostEmpty(null, this.getUri() + "/members/add?id=" + principalDomainQualifiedId); }, /** * Removes a principal as a member of this group. * * @chained current group * * @public * * @param {Gitana.Principal|String} principal the principal or the principal id */ removeMember: function(principal) { var principalDomainQualifiedId = this.extractPrincipalDomainQualifiedId(principal); return this.chainPostEmpty(null, this.getUri() + "/members/remove?id=" + principalDomainQualifiedId); } }; })(window);