diff options
Diffstat (limited to 'install/ui/netgroup.js')
-rw-r--r-- | install/ui/netgroup.js | 273 |
1 files changed, 242 insertions, 31 deletions
diff --git a/install/ui/netgroup.js b/install/ui/netgroup.js index d54fdfd52..05f9d0ddc 100644 --- a/install/ui/netgroup.js +++ b/install/ui/netgroup.js @@ -22,7 +22,10 @@ /* REQUIRES: ipa.js, details.js, search.js, add.js, facet.js, entity.js */ -IPA.netgroup = {}; +IPA.netgroup = { + remove_method_priority: IPA.config.default_priority - 1, + enable_priority: IPA.config.default_priority + 1 +}; IPA.netgroup.entity = function(spec) { @@ -31,42 +34,17 @@ IPA.netgroup.entity = function(spec) { that.init = function() { that.entity_init(); - that.builder.search_facet({ + that.builder.facet_groups(['settings', 'member', 'memberof']). + search_facet({ columns: [ 'cn', 'description' ] }). details_facet({ - sections: [ - { - name: 'identity', - fields: [ - 'cn', - { - type: 'textarea', - name: 'description' - }, - 'nisdomainname' - ] - } - ] - }). - association_facet({ - name: 'memberhost_host', - facet_group: 'member' - }). - association_facet({ - name: 'memberhost_hostgroup', - facet_group: 'member' - }). - association_facet({ - name: 'memberuser_user', - facet_group: 'member' - }). - association_facet({ - name: 'memberuser_group', - facet_group: 'member' + factory: IPA.netgroup.details_facet, + entity: that, + command_mode: 'info' }). association_facet({ name: 'memberof_netgroup', @@ -87,4 +65,237 @@ IPA.netgroup.entity = function(spec) { return that; }; +IPA.netgroup.details_facet = function(spec) { + + var entity_name = spec.entity.name; + + // + // Identity + // + + spec.fields = [ + { + name: 'cn', + widget: 'identity.cn' + }, + { + type: 'textarea', + name: 'description', + widget: 'identity.description' + }, + { + name: 'nisdomainname', + widget: 'identity.nisdomainname' + } + ]; + + spec.widgets = [ + { + type: 'details_table_section', + name: 'identity', + label: IPA.messages.details.general, + widgets: [ + { + name: 'cn' + }, + { + type: 'textarea', + name: 'description' + }, + { + name: 'nisdomainname', + widget: 'general.nisdomainname' + } + ] + } + ]; + + // + // Users + // + + spec.fields.push( + { + type: 'radio', + name: 'usercategory', + widget: 'user.rule.usercategory' + }, + { + type: 'rule_association_table', + name: 'memberuser_user', + widget: 'user.rule.memberuser_user', + priority: IPA.netgroup.remove_method_priority + }, + { + type: 'rule_association_table', + name: 'memberuser_group', + widget: 'user.rule.memberuser_group', + priority: IPA.netgroup.remove_method_priority + } + ); + + spec.widgets.push( + { + factory: IPA.collapsible_section, + name: 'user', + label: IPA.messages.objects.netgroup.user, + widgets: [ + { + factory: IPA.rule_details_widget, + name: 'rule', + radio_name: 'usercategory', + options: [ + { value: 'all', + label: IPA.messages.objects.netgroup.anyone }, + { value: '', + label: IPA.messages.objects.netgroup.specified_users } + ], + tables: [ + { name: 'memberuser_user' }, + { name: 'memberuser_group' } + ], + widgets: [ + { + type: 'rule_association_table', + id: entity_name+'-memberuser_user', + name: 'memberuser_user', + add_method: 'add_member', + remove_method: 'remove_member', + add_title: IPA.messages.association.add.member, + remove_title: IPA.messages.association.remove.member, + columns: [ + { + name: 'memberuser_user', + label: IPA.messages.objects.netgroup.users + } + ] + }, + { + type: 'rule_association_table', + id: entity_name+'-memberuser_group', + name: 'memberuser_group', + add_method: 'add_member', + remove_method: 'remove_member', + add_title: IPA.messages.association.add.member, + remove_title: IPA.messages.association.remove.member, + columns: [ + { + name: 'memberuser_group', + label: IPA.messages.objects.netgroup.usergroups + } + ] + } + ] + } + ] + } + ); + + // + // Hosts + // + + spec.fields.push( + { + type: 'radio', + name: 'hostcategory', + widget: 'host.rule.hostcategory' + }, + { + type: 'rule_association_table', + name: 'memberhost_host', + widget: 'host.rule.memberhost_host', + priority: IPA.netgroup.remove_method_priority, + external: 'externalhost' + }, + { + type: 'rule_association_table', + name: 'memberhost_hostgroup', + widget: 'host.rule.memberhost_hostgroup', + priority: IPA.netgroup.remove_method_priority + } + ); + + spec.widgets.push( + { + factory: IPA.collapsible_section, + name: 'host', + label: IPA.messages.objects.netgroup.host, + widgets: [ + { + factory: IPA.rule_details_widget, + name: 'rule', + radio_name: 'hostcategory', + options: [ + { + 'value': 'all', + 'label': IPA.messages.objects.netgroup.any_host + }, + { + 'value': '', + 'label': IPA.messages.objects.netgroup.specified_hosts + } + ], + tables: [ + { 'name': 'memberhost_host' }, + { 'name': 'memberhost_hostgroup' } + ], + widgets: [ + { + type: 'rule_association_table', + id: entity_name+'-memberhost_host', + name: 'memberhost_host', + add_method: 'add_member', + remove_method: 'remove_member', + external: 'externalhost', + add_title: IPA.messages.association.add.member, + remove_title: IPA.messages.association.remove.member, + columns: [ + { + name: 'memberhost_host', + label: IPA.messages.objects.netgroup.hosts + }, + { + name: 'externalhost', + label: IPA.messages.objects.netgroup.external, + formatter: IPA.boolean_formatter(), + width: '200px' + } + ] + }, + { + type: 'rule_association_table', + id: entity_name+'-memberhost_hostgroup', + name: 'memberhost_hostgroup', + add_method: 'add_member', + remove_method: 'remove_member', + add_title: IPA.messages.association.add.member, + remove_title: IPA.messages.association.remove.member, + columns: [ + { + name: 'memberhost_hostgroup', + label: IPA.messages.objects.netgroup.hostgroups + } + ] + } + ] + } + ] + } + ); + + var that = IPA.details_facet(spec); + + that.update_on_success = function(data, text_status, xhr) { + that.refresh(); + that.on_update.notify(); + }; + + that.update_on_error = function(xhr, text_status, error_thrown) { + that.refresh(); + }; + + return that; +}; + IPA.register('netgroup', IPA.netgroup.entity); |