Index: openacs-4/packages/acs-subsite/lib/subsites.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/lib/subsites.tcl,v diff -u -N -r1.7.2.3 -r1.7.2.4 --- openacs-4/packages/acs-subsite/lib/subsites.tcl 27 Nov 2003 11:11:48 -0000 1.7.2.3 +++ openacs-4/packages/acs-subsite/lib/subsites.tcl 3 Dec 2003 23:10:58 -0000 1.7.2.4 @@ -36,6 +36,7 @@ from application_groups ag, group_approved_member_map m where ag.package_id = p.package_id + and m.rel_type = 'membership_rel' and m.group_id = ag.group_id) as num_members from site_nodes n, apm_packages p Index: openacs-4/packages/acs-subsite/tcl/group-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/group-procs.tcl,v diff -u -N -r1.16.2.1 -r1.16.2.2 --- openacs-4/packages/acs-subsite/tcl/group-procs.tcl 27 Nov 2003 13:14:55 -0000 1.16.2.1 +++ openacs-4/packages/acs-subsite/tcl/group-procs.tcl 3 Dec 2003 23:10:58 -0000 1.16.2.2 @@ -426,8 +426,6 @@ } { Adds a user to a group, checking that the rel_type is permissible given the user's privileges, Can default both the rel_type and the member_state to their relevant values. - Deletes any existing membership relation between the same group and the same user, - regardless of the specific rel_type of that membership_relation. } { set admin_p [permission::permission_p -object_id $group_id -privilege "admin"] @@ -450,20 +448,6 @@ -join_policy $group(join_policy) \ -create_p $create_p] } - - # Find any existing membership_relations and remove them - set existing_rel_ids [db_list select_existing_membership_rel { - select r.rel_id - from acs_rels r, - membership_rels m - where r.object_id_one = :group_id - and r.object_id_two = :user_id - and m.rel_id = r.rel_id - }] - - foreach rel_id $existing_rel_ids { - relation_remove $rel_id - } relation_add -member_state $member_state $rel_type $group_id $user_id } Index: openacs-4/packages/acs-subsite/www/members/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/members/index.tcl,v diff -u -N -r1.12.2.2 -r1.12.2.3 --- openacs-4/packages/acs-subsite/www/members/index.tcl 27 Nov 2003 13:19:40 -0000 1.12.2.2 +++ openacs-4/packages/acs-subsite/www/members/index.tcl 3 Dec 2003 23:10:58 -0000 1.12.2.3 @@ -25,8 +25,6 @@ # only to ban/delete them. set main_site_p [string equal [site_node::get_url -node_id [ad_conn node_id]] "/"] -set rel_type "membership_rel" - set user_id [ad_conn user_id] set show_member_list_to [parameter::get -parameter "ShowMembersListTo" -default 2] @@ -66,22 +64,16 @@ } set member_state_options [list] -db_foreach select_member_states { - select mr.member_state as state, - count(mr.rel_id) as num_members - from membership_rels mr, - acs_rels r - where r.rel_id = mr.rel_id - and r.object_id_one = :group_id - group by mr.member_state -} { +db_foreach select_member_states {} { lappend member_state_options \ [list \ [group::get_member_state_pretty -member_state $state] \ $state \ [lc_numeric $num_members]] } +db_1row pretty_roles {} + template::list::create \ -name "members" \ -multirow "members" \ @@ -175,20 +167,22 @@ delete_url make_admin_url make_member_url + rel_role_pretty } -unclobber members members_select {} { - set rel_role_pretty [lang::util::localize $rel_role_pretty] + if { $member_admin_p > 0 } { + set rel_role_pretty [lang::util::localize $admin_role_pretty] + } else { + set rel_role_pretty [lang::util::localize $member_role_pretty] + } set member_state_pretty [group::get_member_state_pretty -member_state $member_state] if { $admin_p } { switch $member_state { approved { - switch $rel_role { - member { - set make_admin_url [export_vars -base make-admin { user_id }] - } - admin { - set make_member_url [export_vars -base make-member { user_id }] - } + if { $member_admin_p == 0 } { + set make_admin_url [export_vars -base make-admin { user_id }] + } else { + set make_member_url [export_vars -base make-member { user_id }] } if { $main_site_p } { set ban_url [export_vars -base member-state-change { rel_id {member_state banned} }] Index: openacs-4/packages/acs-subsite/www/members/index.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/members/index.xql,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-subsite/www/members/index.xql 27 Nov 2003 13:16:06 -0000 1.1.2.1 +++ openacs-4/packages/acs-subsite/www/members/index.xql 3 Dec 2003 23:10:58 -0000 1.1.2.2 @@ -11,6 +11,7 @@ membership_rels mr, cc_users u where r.object_id_one = :group_id + and r.rel_type = 'membership_rel' and mr.rel_id = r.rel_id and u.user_id = r.object_id_two [template::list::filter_where_clauses -and -name "members"] @@ -19,36 +20,57 @@ + + + select admin_role.pretty_name as admin_role_pretty, + member_role.pretty_name as member_role_pretty + from acs_rel_roles admin_role, acs_rel_roles member_role + where admin_role.role = 'admin' + and member_role.role = 'member'; + + + + select r.rel_id, u.user_id, u.first_names || ' ' || u.last_name as name, u.email, - r.rel_type, - rt.role_two as rel_role, - role.pretty_name as rel_role_pretty, - mr.member_state + mr.member_state, + (select count(*) + from rel_segment_party_map + where rel_type = 'admin_rel' + and group_id = :group_id + and party_id = u.user_id) as member_admin_p from acs_rels r, membership_rels mr, - cc_users u, - acs_rel_types rt, - acs_rel_roles role + cc_users u where r.object_id_one = :group_id and mr.rel_id = r.rel_id - and u.rel_id = mr.rel_id + and r.rel_id = mr.rel_id and u.user_id = r.object_id_two - and rt.rel_type = r.rel_type - and role.role = rt.role_two [template::list::filter_where_clauses -and -name "members"] [template::list::page_where_clause -and -name "members" -key "r.rel_id"] [template::list::orderby_clause -orderby -name "members"] - + + + + select mr.member_state as state, + count(mr.rel_id) as num_members + from membership_rels mr, acs_rels r + where r.rel_id = mr.rel_id + and r.object_id_one = :group_id + and r.rel_type = 'membership_rel' + group by mr.member_state + + + Index: openacs-4/packages/acs-subsite/www/members/make-member.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/members/make-member.tcl,v diff -u -N -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/acs-subsite/www/members/make-member.tcl 27 Nov 2003 13:19:40 -0000 1.2.2.1 +++ openacs-4/packages/acs-subsite/www/members/make-member.tcl 3 Dec 2003 23:10:58 -0000 1.2.2.2 @@ -13,10 +13,8 @@ db_transaction { foreach one_user_id $user_id { - group::add_member \ - -group_id $group_id \ - -user_id $one_user_id \ - -rel_type "membership_rel" + db_1row get_rel_id {} + relation_remove $rel_id } } on_error { ad_return_error "Error creating the relation" "We got the following error message while trying to create this relation:
$errmsg
"